Remove ScriptAttributeString() wrappers, part 5

Change-Id: I36c1bedcdcf466e9cffa38aa196d78360e36ffe9
Reviewed-on: https://pdfium-review.googlesource.com/c/46559
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/xfa/cjx_field.cpp b/fxjs/xfa/cjx_field.cpp
index e697319..a3c706c 100644
--- a/fxjs/xfa/cjx_field.cpp
+++ b/fxjs/xfa/cjx_field.cpp
@@ -360,24 +360,6 @@
   node->SetItemState(iIndex, true, true, true, true);
 }
 
-void CJX_Field::access(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::accessKey(CFXJSE_Value* pValue,
-                          bool bSetting,
-                          XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::anchorType(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Field::borderColor(CFXJSE_Value* pValue,
                             bool bSetting,
                             XFA_Attribute eAttribute) {
@@ -390,12 +372,6 @@
   ScriptSomBorderWidth(pValue, bSetting, eAttribute);
 }
 
-void CJX_Field::colSpan(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Field::fillColor(CFXJSE_Value* pValue,
                           bool bSetting,
                           XFA_Attribute eAttribute) {
@@ -408,24 +384,6 @@
   ScriptSomFontColor(pValue, bSetting, eAttribute);
 }
 
-void CJX_Field::h(CFXJSE_Value* pValue,
-                  bool bSetting,
-                  XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::hAlign(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::locale(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Field::mandatory(CFXJSE_Value* pValue,
                           bool bSetting,
                           XFA_Attribute eAttribute) {
@@ -438,92 +396,14 @@
   ScriptSomMandatoryMessage(pValue, bSetting, eAttribute);
 }
 
-void CJX_Field::maxH(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::maxW(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::minH(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::minW(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::presence(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Field::rawValue(CFXJSE_Value* pValue,
                          bool bSetting,
                          XFA_Attribute eAttribute) {
   defaultValue(pValue, bSetting, eAttribute);
 }
 
-void CJX_Field::relevant(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::rotate(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::use(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::usehref(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Field::validationMessage(CFXJSE_Value* pValue,
                                   bool bSetting,
                                   XFA_Attribute eAttribute) {
   ScriptSomValidationMessage(pValue, bSetting, eAttribute);
 }
-
-void CJX_Field::vAlign(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::w(CFXJSE_Value* pValue,
-                  bool bSetting,
-                  XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::x(CFXJSE_Value* pValue,
-                  bool bSetting,
-                  XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Field::y(CFXJSE_Value* pValue,
-                  bool bSetting,
-                  XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_field.h b/fxjs/xfa/cjx_field.h
index 0f9e299..ac00613 100644
--- a/fxjs/xfa/cjx_field.h
+++ b/fxjs/xfa/cjx_field.h
@@ -31,39 +31,19 @@
   JSE_METHOD(setItemState, CJX_Field);
 
   JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(access);
-  JSE_PROP(accessKey);
-  JSE_PROP(anchorType);
   JSE_PROP(borderColor);
   JSE_PROP(borderWidth);
-  JSE_PROP(colSpan);
   JSE_PROP(editValue);
   JSE_PROP(fillColor);
   JSE_PROP(fontColor);
   JSE_PROP(formatMessage);
   JSE_PROP(formattedValue);
-  JSE_PROP(h);
-  JSE_PROP(hAlign);
-  JSE_PROP(locale);
   JSE_PROP(mandatory);
   JSE_PROP(mandatoryMessage);
-  JSE_PROP(maxH);
-  JSE_PROP(maxW);
-  JSE_PROP(minH);
-  JSE_PROP(minW);
   JSE_PROP(parentSubform);
-  JSE_PROP(presence);
   JSE_PROP(rawValue);
-  JSE_PROP(relevant);
-  JSE_PROP(rotate);
   JSE_PROP(selectedIndex);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
   JSE_PROP(validationMessage);
-  JSE_PROP(vAlign);
-  JSE_PROP(w);
-  JSE_PROP(x);
-  JSE_PROP(y);
 
  private:
   static const CJX_MethodSpec MethodSpecs[];
diff --git a/fxjs/xfa/cjx_fill.cpp b/fxjs/xfa/cjx_fill.cpp
index 1850b15..8a87841 100644
--- a/fxjs/xfa/cjx_fill.cpp
+++ b/fxjs/xfa/cjx_fill.cpp
@@ -11,21 +11,3 @@
 CJX_Fill::CJX_Fill(CXFA_Fill* node) : CJX_Node(node) {}
 
 CJX_Fill::~CJX_Fill() = default;
-
-void CJX_Fill::use(CFXJSE_Value* pValue,
-                   bool bSetting,
-                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Fill::presence(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Fill::usehref(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_fill.h b/fxjs/xfa/cjx_fill.h
index b8377d3..c7511d2 100644
--- a/fxjs/xfa/cjx_fill.h
+++ b/fxjs/xfa/cjx_fill.h
@@ -16,10 +16,6 @@
  public:
   explicit CJX_Fill(CXFA_Fill* node);
   ~CJX_Fill() override;
-
-  JSE_PROP(presence);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_FILL_H_
diff --git a/fxjs/xfa/cjx_filter.cpp b/fxjs/xfa/cjx_filter.cpp
index 1ed925d..8457c04 100644
--- a/fxjs/xfa/cjx_filter.cpp
+++ b/fxjs/xfa/cjx_filter.cpp
@@ -11,21 +11,3 @@
 CJX_Filter::CJX_Filter(CXFA_Filter* node) : CJX_Node(node) {}
 
 CJX_Filter::~CJX_Filter() = default;
-
-void CJX_Filter::use(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Filter::usehref(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Filter::addRevocationInfo(CFXJSE_Value* pValue,
-                                   bool bSetting,
-                                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_filter.h b/fxjs/xfa/cjx_filter.h
index c527286..6800ac1 100644
--- a/fxjs/xfa/cjx_filter.h
+++ b/fxjs/xfa/cjx_filter.h
@@ -16,10 +16,6 @@
  public:
   explicit CJX_Filter(CXFA_Filter* node);
   ~CJX_Filter() override;
-
-  JSE_PROP(addRevocationInfo);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_FILTER_H_
diff --git a/fxjs/xfa/cjx_float.cpp b/fxjs/xfa/cjx_float.cpp
index 0d7f4c6..0300999 100644
--- a/fxjs/xfa/cjx_float.cpp
+++ b/fxjs/xfa/cjx_float.cpp
@@ -12,24 +12,12 @@
 
 CJX_Float::~CJX_Float() = default;
 
-void CJX_Float::use(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Float::defaultValue(CFXJSE_Value* pValue,
                              bool bSetting,
                              XFA_Attribute eAttribute) {
   ScriptSomDefaultValue(pValue, bSetting, eAttribute);
 }
 
-void CJX_Float::usehref(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Float::value(CFXJSE_Value* pValue,
                       bool bSetting,
                       XFA_Attribute eAttribute) {
diff --git a/fxjs/xfa/cjx_float.h b/fxjs/xfa/cjx_float.h
index 12dbe57..f4f1645 100644
--- a/fxjs/xfa/cjx_float.h
+++ b/fxjs/xfa/cjx_float.h
@@ -18,8 +18,6 @@
   ~CJX_Float() override;
 
   JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(use);
-  JSE_PROP(usehref);
   JSE_PROP(value);
 };
 
diff --git a/fxjs/xfa/cjx_font.cpp b/fxjs/xfa/cjx_font.cpp
index ccfc14d..14fd922 100644
--- a/fxjs/xfa/cjx_font.cpp
+++ b/fxjs/xfa/cjx_font.cpp
@@ -11,105 +11,3 @@
 CJX_Font::CJX_Font(CXFA_Font* node) : CJX_Node(node) {}
 
 CJX_Font::~CJX_Font() = default;
-
-void CJX_Font::lineThrough(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::typeface(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::fontHorizontalScale(CFXJSE_Value* pValue,
-                                   bool bSetting,
-                                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::use(CFXJSE_Value* pValue,
-                   bool bSetting,
-                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::kerningMode(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::underline(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::baselineShift(CFXJSE_Value* pValue,
-                             bool bSetting,
-                             XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::overlinePeriod(CFXJSE_Value* pValue,
-                              bool bSetting,
-                              XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::letterSpacing(CFXJSE_Value* pValue,
-                             bool bSetting,
-                             XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::lineThroughPeriod(CFXJSE_Value* pValue,
-                                 bool bSetting,
-                                 XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::fontVerticalScale(CFXJSE_Value* pValue,
-                                 bool bSetting,
-                                 XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::size(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::posture(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::usehref(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::weight(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::underlinePeriod(CFXJSE_Value* pValue,
-                               bool bSetting,
-                               XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Font::overline(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_font.h b/fxjs/xfa/cjx_font.h
index 9cd8944..253de9f 100644
--- a/fxjs/xfa/cjx_font.h
+++ b/fxjs/xfa/cjx_font.h
@@ -16,24 +16,6 @@
  public:
   explicit CJX_Font(CXFA_Font* node);
   ~CJX_Font() override;
-
-  JSE_PROP(baselineShift);
-  JSE_PROP(fontHorizontalScale);
-  JSE_PROP(fontVerticalScale);
-  JSE_PROP(kerningMode);
-  JSE_PROP(letterSpacing);
-  JSE_PROP(lineThrough);
-  JSE_PROP(lineThroughPeriod);
-  JSE_PROP(overline);
-  JSE_PROP(overlinePeriod);
-  JSE_PROP(posture);
-  JSE_PROP(size);
-  JSE_PROP(typeface);
-  JSE_PROP(underline);
-  JSE_PROP(underlinePeriod);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
-  JSE_PROP(weight);
 };
 
 #endif  // FXJS_XFA_CJX_FONT_H_
diff --git a/fxjs/xfa/cjx_format.cpp b/fxjs/xfa/cjx_format.cpp
index 7b58018..5718e02 100644
--- a/fxjs/xfa/cjx_format.cpp
+++ b/fxjs/xfa/cjx_format.cpp
@@ -11,15 +11,3 @@
 CJX_Format::CJX_Format(CXFA_Format* node) : CJX_Node(node) {}
 
 CJX_Format::~CJX_Format() = default;
-
-void CJX_Format::use(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Format::usehref(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_format.h b/fxjs/xfa/cjx_format.h
index cb4a8cc..0e93c65 100644
--- a/fxjs/xfa/cjx_format.h
+++ b/fxjs/xfa/cjx_format.h
@@ -16,9 +16,6 @@
  public:
   explicit CJX_Format(CXFA_Format* node);
   ~CJX_Format() override;
-
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_FORMAT_H_
diff --git a/fxjs/xfa/cjx_handler.cpp b/fxjs/xfa/cjx_handler.cpp
index f49e219..fb7b464 100644
--- a/fxjs/xfa/cjx_handler.cpp
+++ b/fxjs/xfa/cjx_handler.cpp
@@ -12,24 +12,6 @@
 
 CJX_Handler::~CJX_Handler() = default;
 
-void CJX_Handler::use(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Handler::type(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Handler::version(CFXJSE_Value* pValue,
                           bool bSetting,
                           XFA_Attribute eAttribute) {}
-
-void CJX_Handler::usehref(CFXJSE_Value* pValue,
-                          bool bSetting,
-                          XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_handler.h b/fxjs/xfa/cjx_handler.h
index 79aa3a1..32c00e3 100644
--- a/fxjs/xfa/cjx_handler.h
+++ b/fxjs/xfa/cjx_handler.h
@@ -17,10 +17,7 @@
   explicit CJX_Handler(CXFA_Handler* node);
   ~CJX_Handler() override;
 
-  JSE_PROP(type);
-  JSE_PROP(use);
   JSE_PROP(version);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_HANDLER_H_
diff --git a/fxjs/xfa/cjx_image.cpp b/fxjs/xfa/cjx_image.cpp
index 51558f1..523d7e3 100644
--- a/fxjs/xfa/cjx_image.cpp
+++ b/fxjs/xfa/cjx_image.cpp
@@ -12,50 +12,14 @@
 
 CJX_Image::~CJX_Image() = default;
 
-void CJX_Image::use(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Image::contentType(CFXJSE_Value* pValue,
-                            bool bSetting,
-                            XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Image::transferEncoding(CFXJSE_Value* pValue,
-                                 bool bSetting,
-                                 XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Image::defaultValue(CFXJSE_Value* pValue,
                              bool bSetting,
                              XFA_Attribute eAttribute) {
   ScriptSomDefaultValue_Read(pValue, bSetting, eAttribute);
 }
 
-void CJX_Image::usehref(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Image::aspect(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Image::value(CFXJSE_Value* pValue,
                       bool bSetting,
                       XFA_Attribute eAttribute) {
   ScriptSomDefaultValue_Read(pValue, bSetting, eAttribute);
 }
-
-void CJX_Image::href(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_image.h b/fxjs/xfa/cjx_image.h
index 71f859d..8ea49ba 100644
--- a/fxjs/xfa/cjx_image.h
+++ b/fxjs/xfa/cjx_image.h
@@ -18,12 +18,6 @@
   ~CJX_Image() override;
 
   JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(aspect);
-  JSE_PROP(contentType);
-  JSE_PROP(href);
-  JSE_PROP(transferEncoding);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
   JSE_PROP(value);
 };
 
diff --git a/fxjs/xfa/cjx_imageedit.cpp b/fxjs/xfa/cjx_imageedit.cpp
index cd8854f..5d01a21 100644
--- a/fxjs/xfa/cjx_imageedit.cpp
+++ b/fxjs/xfa/cjx_imageedit.cpp
@@ -11,21 +11,3 @@
 CJX_ImageEdit::CJX_ImageEdit(CXFA_ImageEdit* node) : CJX_Node(node) {}
 
 CJX_ImageEdit::~CJX_ImageEdit() = default;
-
-void CJX_ImageEdit::use(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_ImageEdit::usehref(CFXJSE_Value* pValue,
-                            bool bSetting,
-                            XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_ImageEdit::data(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_imageedit.h b/fxjs/xfa/cjx_imageedit.h
index 9fda373..99688f9 100644
--- a/fxjs/xfa/cjx_imageedit.h
+++ b/fxjs/xfa/cjx_imageedit.h
@@ -16,10 +16,6 @@
  public:
   explicit CJX_ImageEdit(CXFA_ImageEdit* node);
   ~CJX_ImageEdit() override;
-
-  JSE_PROP(data);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_IMAGEEDIT_H_
diff --git a/fxjs/xfa/cjx_insert.cpp b/fxjs/xfa/cjx_insert.cpp
index a9a0b3c..4cea6aa 100644
--- a/fxjs/xfa/cjx_insert.cpp
+++ b/fxjs/xfa/cjx_insert.cpp
@@ -11,15 +11,3 @@
 CJX_Insert::CJX_Insert(CXFA_Insert* node) : CJX_TextNode(node) {}
 
 CJX_Insert::~CJX_Insert() = default;
-
-void CJX_Insert::use(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Insert::usehref(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_insert.h b/fxjs/xfa/cjx_insert.h
index a414526..c84f663 100644
--- a/fxjs/xfa/cjx_insert.h
+++ b/fxjs/xfa/cjx_insert.h
@@ -16,9 +16,6 @@
  public:
   explicit CJX_Insert(CXFA_Insert* node);
   ~CJX_Insert() override;
-
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_INSERT_H_
diff --git a/fxjs/xfa/cjx_integer.cpp b/fxjs/xfa/cjx_integer.cpp
index 4b8e173..34c108a 100644
--- a/fxjs/xfa/cjx_integer.cpp
+++ b/fxjs/xfa/cjx_integer.cpp
@@ -12,24 +12,12 @@
 
 CJX_Integer::~CJX_Integer() = default;
 
-void CJX_Integer::use(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Integer::defaultValue(CFXJSE_Value* pValue,
                                bool bSetting,
                                XFA_Attribute eAttribute) {
   ScriptSomDefaultValue(pValue, bSetting, eAttribute);
 }
 
-void CJX_Integer::usehref(CFXJSE_Value* pValue,
-                          bool bSetting,
-                          XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
 void CJX_Integer::value(CFXJSE_Value* pValue,
                         bool bSetting,
                         XFA_Attribute eAttribute) {
diff --git a/fxjs/xfa/cjx_integer.h b/fxjs/xfa/cjx_integer.h
index e15deb9..f8b3b3b 100644
--- a/fxjs/xfa/cjx_integer.h
+++ b/fxjs/xfa/cjx_integer.h
@@ -18,8 +18,6 @@
   ~CJX_Integer() override;
 
   JSE_PROP(defaultValue); /* {default} */
-  JSE_PROP(use);
-  JSE_PROP(usehref);
   JSE_PROP(value);
 };
 
diff --git a/fxjs/xfa/cjx_items.cpp b/fxjs/xfa/cjx_items.cpp
index 375b30f..4fa73ea 100644
--- a/fxjs/xfa/cjx_items.cpp
+++ b/fxjs/xfa/cjx_items.cpp
@@ -11,33 +11,3 @@
 CJX_Items::CJX_Items(CXFA_Items* node) : CJX_Node(node) {}
 
 CJX_Items::~CJX_Items() = default;
-
-void CJX_Items::ref(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Items::use(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Items::presence(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Items::save(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Items::usehref(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_items.h b/fxjs/xfa/cjx_items.h
index d29fee7..18f2f8a 100644
--- a/fxjs/xfa/cjx_items.h
+++ b/fxjs/xfa/cjx_items.h
@@ -16,12 +16,6 @@
  public:
   explicit CJX_Items(CXFA_Items* node);
   ~CJX_Items() override;
-
-  JSE_PROP(presence);
-  JSE_PROP(ref);
-  JSE_PROP(save);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_ITEMS_H_
diff --git a/fxjs/xfa/cjx_keep.cpp b/fxjs/xfa/cjx_keep.cpp
index 758c863..5060cf9 100644
--- a/fxjs/xfa/cjx_keep.cpp
+++ b/fxjs/xfa/cjx_keep.cpp
@@ -11,33 +11,3 @@
 CJX_Keep::CJX_Keep(CXFA_Keep* node) : CJX_Node(node) {}
 
 CJX_Keep::~CJX_Keep() = default;
-
-void CJX_Keep::next(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Keep::use(CFXJSE_Value* pValue,
-                   bool bSetting,
-                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Keep::previous(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Keep::usehref(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Keep::intact(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_keep.h b/fxjs/xfa/cjx_keep.h
index c5fcb25..3db46f7 100644
--- a/fxjs/xfa/cjx_keep.h
+++ b/fxjs/xfa/cjx_keep.h
@@ -16,12 +16,6 @@
  public:
   explicit CJX_Keep(CXFA_Keep* node);
   ~CJX_Keep() override;
-
-  JSE_PROP(intact);
-  JSE_PROP(next);
-  JSE_PROP(previous);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_KEEP_H_
diff --git a/fxjs/xfa/cjx_keyusage.cpp b/fxjs/xfa/cjx_keyusage.cpp
index 908a8da..5984215 100644
--- a/fxjs/xfa/cjx_keyusage.cpp
+++ b/fxjs/xfa/cjx_keyusage.cpp
@@ -11,75 +11,3 @@
 CJX_KeyUsage::CJX_KeyUsage(CXFA_KeyUsage* node) : CJX_Node(node) {}
 
 CJX_KeyUsage::~CJX_KeyUsage() = default;
-
-void CJX_KeyUsage::use(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::nonRepudiation(CFXJSE_Value* pValue,
-                                  bool bSetting,
-                                  XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::encipherOnly(CFXJSE_Value* pValue,
-                                bool bSetting,
-                                XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::type(CFXJSE_Value* pValue,
-                        bool bSetting,
-                        XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::digitalSignature(CFXJSE_Value* pValue,
-                                    bool bSetting,
-                                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::crlSign(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::keyAgreement(CFXJSE_Value* pValue,
-                                bool bSetting,
-                                XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::keyEncipherment(CFXJSE_Value* pValue,
-                                   bool bSetting,
-                                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::usehref(CFXJSE_Value* pValue,
-                           bool bSetting,
-                           XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::dataEncipherment(CFXJSE_Value* pValue,
-                                    bool bSetting,
-                                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::keyCertSign(CFXJSE_Value* pValue,
-                               bool bSetting,
-                               XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_KeyUsage::decipherOnly(CFXJSE_Value* pValue,
-                                bool bSetting,
-                                XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_keyusage.h b/fxjs/xfa/cjx_keyusage.h
index 470ece6..99de533 100644
--- a/fxjs/xfa/cjx_keyusage.h
+++ b/fxjs/xfa/cjx_keyusage.h
@@ -16,19 +16,6 @@
  public:
   explicit CJX_KeyUsage(CXFA_KeyUsage* node);
   ~CJX_KeyUsage() override;
-
-  JSE_PROP(crlSign);
-  JSE_PROP(dataEncipherment);
-  JSE_PROP(decipherOnly);
-  JSE_PROP(digitalSignature);
-  JSE_PROP(encipherOnly);
-  JSE_PROP(keyAgreement);
-  JSE_PROP(keyCertSign);
-  JSE_PROP(keyEncipherment);
-  JSE_PROP(nonRepudiation);
-  JSE_PROP(type);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_KEYUSAGE_H_
diff --git a/fxjs/xfa/cjx_line.cpp b/fxjs/xfa/cjx_line.cpp
index 268506e..1237b9f 100644
--- a/fxjs/xfa/cjx_line.cpp
+++ b/fxjs/xfa/cjx_line.cpp
@@ -11,27 +11,3 @@
 CJX_Line::CJX_Line(CXFA_Line* node) : CJX_Node(node) {}
 
 CJX_Line::~CJX_Line() = default;
-
-void CJX_Line::use(CFXJSE_Value* pValue,
-                   bool bSetting,
-                   XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Line::slope(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Line::usehref(CFXJSE_Value* pValue,
-                       bool bSetting,
-                       XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Line::hand(CFXJSE_Value* pValue,
-                    bool bSetting,
-                    XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_line.h b/fxjs/xfa/cjx_line.h
index e7b0e8e..34fffc6 100644
--- a/fxjs/xfa/cjx_line.h
+++ b/fxjs/xfa/cjx_line.h
@@ -16,11 +16,6 @@
  public:
   explicit CJX_Line(CXFA_Line* node);
   ~CJX_Line() override;
-
-  JSE_PROP(hand);
-  JSE_PROP(slope);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_LINE_H_
diff --git a/fxjs/xfa/cjx_linear.cpp b/fxjs/xfa/cjx_linear.cpp
index 0d6d286..17bb572 100644
--- a/fxjs/xfa/cjx_linear.cpp
+++ b/fxjs/xfa/cjx_linear.cpp
@@ -11,21 +11,3 @@
 CJX_Linear::CJX_Linear(CXFA_Linear* node) : CJX_Node(node) {}
 
 CJX_Linear::~CJX_Linear() = default;
-
-void CJX_Linear::use(CFXJSE_Value* pValue,
-                     bool bSetting,
-                     XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Linear::type(CFXJSE_Value* pValue,
-                      bool bSetting,
-                      XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
-
-void CJX_Linear::usehref(CFXJSE_Value* pValue,
-                         bool bSetting,
-                         XFA_Attribute eAttribute) {
-  ScriptAttributeString(pValue, bSetting, eAttribute);
-}
diff --git a/fxjs/xfa/cjx_linear.h b/fxjs/xfa/cjx_linear.h
index 979511c..a01b0d1 100644
--- a/fxjs/xfa/cjx_linear.h
+++ b/fxjs/xfa/cjx_linear.h
@@ -16,10 +16,6 @@
  public:
   explicit CJX_Linear(CXFA_Linear* node);
   ~CJX_Linear() override;
-
-  JSE_PROP(type);
-  JSE_PROP(use);
-  JSE_PROP(usehref);
 };
 
 #endif  // FXJS_XFA_CJX_LINEAR_H_
diff --git a/xfa/fxfa/parser/xfa_basic_data_element_script.cpp b/xfa/fxfa/parser/xfa_basic_data_element_script.cpp
index beaec5f..10b2e83 100644
--- a/xfa/fxfa/parser/xfa_basic_data_element_script.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data_element_script.cpp
@@ -1169,62 +1169,62 @@
     /* keyUsage */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_KeyUsage::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x1e459b8f,
           "nonRepudiation",
-          &CJX_KeyUsage::nonRepudiation,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::NonRepudiation,
           XFA_ScriptType::Basic)},
     {ATTR(0x2bb3f470,
           "encipherOnly",
-          &CJX_KeyUsage::encipherOnly,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::EncipherOnly,
           XFA_ScriptType::Basic)},
     {ATTR(0x2f16a382,
           "type",
-          &CJX_KeyUsage::type,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Type,
           XFA_ScriptType::Basic)},
     {ATTR(0x5f760b50,
           "digitalSignature",
-          &CJX_KeyUsage::digitalSignature,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::DigitalSignature,
           XFA_ScriptType::Basic)},
     {ATTR(0x69aa2292,
           "crlSign",
-          &CJX_KeyUsage::crlSign,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::CrlSign,
           XFA_ScriptType::Basic)},
     {ATTR(0x98fd4d81,
           "keyAgreement",
-          &CJX_KeyUsage::keyAgreement,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::KeyAgreement,
           XFA_ScriptType::Basic)},
     {ATTR(0xa66404cb,
           "keyEncipherment",
-          &CJX_KeyUsage::keyEncipherment,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::KeyEncipherment,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_KeyUsage::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xca5dc27c,
           "dataEncipherment",
-          &CJX_KeyUsage::dataEncipherment,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::DataEncipherment,
           XFA_ScriptType::Basic)},
     {ATTR(0xe8f118a8,
           "keyCertSign",
-          &CJX_KeyUsage::keyCertSign,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::KeyCertSign,
           XFA_ScriptType::Basic)},
     {ATTR(0xfea53ec6,
           "decipherOnly",
-          &CJX_KeyUsage::decipherOnly,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::DecipherOnly,
           XFA_ScriptType::Basic)},
 
@@ -1402,17 +1402,17 @@
     /* filter */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Filter::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Filter::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xd861f8af,
           "addRevocationInfo",
-          &CJX_Filter::addRevocationInfo,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::AddRevocationInfo,
           XFA_ScriptType::Basic)},
 
@@ -1796,12 +1796,12 @@
     /* format */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Format::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Format::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
 
@@ -2194,18 +2194,34 @@
           XFA_ScriptType::Basic)},
 
     /* field */
-    {ATTR(0x68, "h", &CJX_Field::h, XFA_Attribute::H, XFA_ScriptType::Basic)},
-    {ATTR(0x77, "w", &CJX_Field::w, XFA_Attribute::W, XFA_ScriptType::Basic)},
-    {ATTR(0x78, "x", &CJX_Field::x, XFA_Attribute::X, XFA_ScriptType::Basic)},
-    {ATTR(0x79, "y", &CJX_Field::y, XFA_Attribute::Y, XFA_ScriptType::Basic)},
+    {ATTR(0x68,
+          "h",
+          &CJX_Object::ScriptAttributeString,
+          XFA_Attribute::H,
+          XFA_ScriptType::Basic)},
+    {ATTR(0x77,
+          "w",
+          &CJX_Object::ScriptAttributeString,
+          XFA_Attribute::W,
+          XFA_ScriptType::Basic)},
+    {ATTR(0x78,
+          "x",
+          &CJX_Object::ScriptAttributeString,
+          XFA_Attribute::X,
+          XFA_ScriptType::Basic)},
+    {ATTR(0x79,
+          "y",
+          &CJX_Object::ScriptAttributeString,
+          XFA_Attribute::Y,
+          XFA_ScriptType::Basic)},
     {ATTR(0x2282c73,
           "hAlign",
-          &CJX_Field::hAlign,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::HAlign,
           XFA_ScriptType::Basic)},
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Field::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x1abbd7e0,
@@ -2215,12 +2231,12 @@
           XFA_ScriptType::Object)},
     {ATTR(0x25839852,
           "access",
-          &CJX_Field::access,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Access,
           XFA_ScriptType::Basic)},
     {ATTR(0x2ee7678f,
           "rotate",
-          &CJX_Field::rotate,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Rotate,
           XFA_ScriptType::Basic)},
     {ATTR(0x3b1ddd06,
@@ -2235,7 +2251,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0x570ce835,
           "presence",
-          &CJX_Field::presence,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Presence,
           XFA_ScriptType::Basic)},
     {ATTR(0x5a3b375d,
@@ -2260,27 +2276,27 @@
           XFA_ScriptType::Basic)},
     {ATTR(0x7a7cc341,
           "vAlign",
-          &CJX_Field::vAlign,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::VAlign,
           XFA_ScriptType::Basic)},
     {ATTR(0x7c2ff6ae,
           "maxH",
-          &CJX_Field::maxH,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::MaxH,
           XFA_ScriptType::Basic)},
     {ATTR(0x7c2ff6bd,
           "maxW",
-          &CJX_Field::maxW,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::MaxW,
           XFA_ScriptType::Basic)},
     {ATTR(0x7d02356c,
           "minH",
-          &CJX_Field::minH,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::MinH,
           XFA_ScriptType::Basic)},
     {ATTR(0x7d02357b,
           "minW",
-          &CJX_Field::minW,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::MinW,
           XFA_ScriptType::Basic)},
     {ATTR(0x85fd6faf,
@@ -2290,7 +2306,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0x8e1c2921,
           "relevant",
-          &CJX_Field::relevant,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Relevant,
           XFA_ScriptType::Basic)},
     {ATTR(0x964fb42e,
@@ -2315,27 +2331,27 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xac06e2b0,
           "colSpan",
-          &CJX_Field::colSpan,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::ColSpan,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Field::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc8fa350,
           "locale",
-          &CJX_Field::locale,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Locale,
           XFA_ScriptType::Basic)},
     {ATTR(0xc2bd40fd,
           "anchorType",
-          &CJX_Field::anchorType,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::AnchorType,
           XFA_ScriptType::Basic)},
     {ATTR(0xc4fed09b,
           "accessKey",
-          &CJX_Field::accessKey,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::AccessKey,
           XFA_ScriptType::Basic)},
     {ATTR(0xcabfa3d0,
@@ -2923,17 +2939,17 @@
     /* image */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Image::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x42fed1fd,
           "contentType",
-          &CJX_Image::contentType,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::ContentType,
           XFA_ScriptType::Basic)},
     {ATTR(0x54fa722c,
           "transferEncoding",
-          &CJX_Image::transferEncoding,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::TransferEncoding,
           XFA_ScriptType::Basic)},
     {ATTR(0xa52682bd,
@@ -2943,12 +2959,12 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Image::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xd171b240,
           "aspect",
-          &CJX_Image::aspect,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Aspect,
           XFA_ScriptType::Basic)},
     {ATTR(0xd6e27f1d,
@@ -2958,7 +2974,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xdb55fec5,
           "href",
-          &CJX_Image::href,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Href,
           XFA_ScriptType::Basic)},
 
@@ -3255,12 +3271,12 @@
     /* handler */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Handler::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x2f16a382,
           "type",
-          &CJX_Handler::type,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Type,
           XFA_ScriptType::Basic)},
     {ATTR(0x5a50e9e6,
@@ -3270,7 +3286,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Handler::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
 
@@ -3700,27 +3716,27 @@
     /* keep */
     {ATTR(0x3848b3f,
           "next",
-          &CJX_Keep::next,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Next,
           XFA_ScriptType::Basic)},
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Keep::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x6a3405dd,
           "previous",
-          &CJX_Keep::previous,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Previous,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Keep::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xf6b59543,
           "intact",
-          &CJX_Keep::intact,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Intact,
           XFA_ScriptType::Basic)},
 
@@ -3744,29 +3760,29 @@
     /* insert */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Insert::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Insert::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
 
     /* imageEdit */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_ImageEdit::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_ImageEdit::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xbde9abda,
           "data",
-          &CJX_ImageEdit::data,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Data,
           XFA_ScriptType::Basic)},
 
@@ -3851,7 +3867,7 @@
     /* integer */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Integer::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xa52682bd,
@@ -3861,7 +3877,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Integer::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xd6e27f1d,
@@ -4559,17 +4575,17 @@
     /* linear */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Linear::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x2f16a382,
           "type",
-          &CJX_Linear::type,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Type,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Linear::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
 
@@ -5367,104 +5383,104 @@
     /* fill */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Fill::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x570ce835,
           "presence",
-          &CJX_Fill::presence,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Presence,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Fill::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
 
     /* font */
     {ATTR(0xcb0ac9,
           "lineThrough",
-          &CJX_Font::lineThrough,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::LineThrough,
           XFA_ScriptType::Basic)},
     {ATTR(0x2c1c7f1,
           "typeface",
-          &CJX_Font::typeface,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Typeface,
           XFA_ScriptType::Basic)},
     {ATTR(0x8c74ae9,
           "fontHorizontalScale",
-          &CJX_Font::fontHorizontalScale,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::FontHorizontalScale,
           XFA_ScriptType::Basic)},
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Font::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x2cd79033,
           "kerningMode",
-          &CJX_Font::kerningMode,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::KerningMode,
           XFA_ScriptType::Basic)},
     {ATTR(0x3a0273a6,
           "underline",
-          &CJX_Font::underline,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Underline,
           XFA_ScriptType::Basic)},
     {ATTR(0x4873c601,
           "baselineShift",
-          &CJX_Font::baselineShift,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::BaselineShift,
           XFA_ScriptType::Basic)},
     {ATTR(0x4b319767,
           "overlinePeriod",
-          &CJX_Font::overlinePeriod,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::OverlinePeriod,
           XFA_ScriptType::Basic)},
     {ATTR(0x79543055,
           "letterSpacing",
-          &CJX_Font::letterSpacing,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::LetterSpacing,
           XFA_ScriptType::Basic)},
     {ATTR(0x8ec6204c,
           "lineThroughPeriod",
-          &CJX_Font::lineThroughPeriod,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::LineThroughPeriod,
           XFA_ScriptType::Basic)},
     {ATTR(0x907c7719,
           "fontVerticalScale",
-          &CJX_Font::fontVerticalScale,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::FontVerticalScale,
           XFA_ScriptType::Basic)},
     {ATTR(0xa686975b,
           "size",
-          &CJX_Font::size,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Size,
           XFA_ScriptType::Basic)},
     {ATTR(0xb5e49bf2,
           "posture",
-          &CJX_Font::posture,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Posture,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Font::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xbd6e1d88,
           "weight",
-          &CJX_Font::weight,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Weight,
           XFA_ScriptType::Basic)},
     {ATTR(0xbd96a0e9,
           "underlinePeriod",
-          &CJX_Font::underlinePeriod,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::UnderlinePeriod,
           XFA_ScriptType::Basic)},
     {ATTR(0xc0ec9fa4,
           "overline",
-          &CJX_Font::overline,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Overline,
           XFA_ScriptType::Basic)},
 
@@ -5538,7 +5554,7 @@
     /* float */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Float::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xa52682bd,
@@ -5548,7 +5564,7 @@
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Float::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xd6e27f1d,
@@ -6170,22 +6186,22 @@
     /* line */
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Line::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0xabef37e3,
           "slope",
-          &CJX_Line::slope,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Slope,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Line::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},
     {ATTR(0xd996fa9b,
           "hand",
-          &CJX_Line::hand,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Hand,
           XFA_ScriptType::Basic)},
 
@@ -6327,27 +6343,27 @@
     /* items */
     {ATTR(0xbb8df5d,
           "ref",
-          &CJX_Items::ref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Ref,
           XFA_ScriptType::Basic)},
     {ATTR(0xc0811ed,
           "use",
-          &CJX_Items::use,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Use,
           XFA_ScriptType::Basic)},
     {ATTR(0x570ce835,
           "presence",
-          &CJX_Items::presence,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Presence,
           XFA_ScriptType::Basic)},
     {ATTR(0xa5b410cf,
           "save",
-          &CJX_Items::save,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Save,
           XFA_ScriptType::Basic)},
     {ATTR(0xbc254332,
           "usehref",
-          &CJX_Items::usehref,
+          &CJX_Object::ScriptAttributeString,
           XFA_Attribute::Usehref,
           XFA_ScriptType::Basic)},