[Libreoffice-commits] core.git: 2 commits - sw/qa sw/source writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Aug 8 09:41:12 PDT 2014


 sw/qa/extras/ooxmlexport/data/sdt-header.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx |    8 
 sw/source/filter/ww8/docxattributeoutput.cxx  |   54 
 sw/source/filter/ww8/docxattributeoutput.hxx  |    2 
 writerfilter/source/dmapper/DomainMapper.cxx  |    2 
 writerfilter/source/ooxml/model.xml           | 3222 --------------------------
 6 files changed, 60 insertions(+), 3228 deletions(-)

New commits:
commit ea258e380eb87db2eb468ba5354df9f957b7660f
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 18:17:43 2014 +0200

    DOCX export: handle date SDT on paragraphs
    
    Date SDT's are normally imported as form controls, while most other SDT
    types are just custom properties on regular text portions or paragraphs.
    
    However, given that form controls are not supported in headers/footers,
    in that case even date SDT's are just custom properties. So support such
    properties on paragraphs in the exporter to properly roundtrip date
    SDT's in headers/footers.
    
    Change-Id: I19eb73a3673e387a7b8780756ce7426a1851e796

diff --git a/sw/qa/extras/ooxmlexport/data/sdt-header.docx b/sw/qa/extras/ooxmlexport/data/sdt-header.docx
new file mode 100644
index 0000000..6a4bdfb2
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/sdt-header.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
index 4c44216..be347b5 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
@@ -600,6 +600,14 @@ DECLARE_OOXMLEXPORT_TEST(testfdo81946, "fdo81946.docx")
     assertXPath(pXmlDoc, "/w:hdr[1]/w:p[1]/w:sdt[1]/w:sdtContent[1]/w:r[2]/mc:AlternateContent[1]",0);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testSdtHeader, "sdt-header.docx")
+{
+    // Problem was that w:sdt elements in headers were lost on import.
+    if (xmlDocPtr pXmlDoc = parseExport("word/header1.xml"))
+        // This was 0, w:sdt (and then w:date) was missing.
+        assertXPath(pXmlDoc, "//w:sdt/w:sdtPr/w:date", 1);
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index a8bcc89..b0447cf 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -549,7 +549,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
     m_pSerializer->endElementNS( XML_w, XML_p );
     // on export sdt blocks are never nested ATM
     if( !m_bAnchorLinkedToNode && !m_bStartedParaSdt )
-        WriteSdtBlock( m_nParagraphSdtPrToken, m_pParagraphSdtPrTokenChildren, m_pParagraphSdtPrDataBindingAttrs, m_aParagraphSdtPrAlias, /*bPara=*/true );
+        WriteSdtBlock( m_nParagraphSdtPrToken, m_pParagraphSdtPrTokenChildren, m_pParagraphSdtPrTokenAttributes, m_pParagraphSdtPrDataBindingAttrs, m_aParagraphSdtPrAlias, /*bPara=*/true );
     else
     {
         //These should be written out to the actual Node and not to the anchor.
@@ -591,6 +591,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
 
 void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken,
                                          ::sax_fastparser::FastAttributeList*& pSdtPrTokenChildren,
+                                         ::sax_fastparser::FastAttributeList*& pSdtPrTokenAttributes,
                                          ::sax_fastparser::FastAttributeList*& pSdtPrDataBindingAttrs,
                                          OUString& rSdtPrAlias,
                                          bool bPara )
@@ -607,7 +608,14 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken,
 
         if( nSdtPrToken > 0 && pSdtPrTokenChildren )
         {
-            m_pSerializer->startElement( nSdtPrToken, FSEND );
+            if (!pSdtPrTokenAttributes)
+                m_pSerializer->startElement( nSdtPrToken, FSEND );
+            else
+            {
+                XFastAttributeListRef xAttrList(pSdtPrTokenAttributes);
+                m_pSerializer->startElement(nSdtPrToken, xAttrList);
+                pSdtPrTokenAttributes = 0;
+            }
 
             uno::Sequence<xml::FastAttribute> aChildren = pSdtPrTokenChildren->getFastAttributes();
             for( sal_Int32 i=0; i < aChildren.getLength(); ++i )
@@ -619,7 +627,16 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken,
             m_pSerializer->endElement( nSdtPrToken );
         }
         else if( (nSdtPrToken > 0) && nSdtPrToken != FSNS( XML_w, XML_id ) && !(m_bRunTextIsOn && m_rExport.SdrExporter().IsParagraphHasDrawing()))
-            m_pSerializer->singleElement( nSdtPrToken, FSEND );
+        {
+            if (!pSdtPrTokenAttributes)
+                m_pSerializer->singleElement( nSdtPrToken, FSEND );
+            else
+            {
+                XFastAttributeListRef xAttrList(pSdtPrTokenAttributes);
+                m_pSerializer->singleElement(nSdtPrToken, xAttrList);
+                pSdtPrTokenAttributes = 0;
+            }
+        }
 
         if( nSdtPrToken == FSNS( XML_w, XML_id ) || ( bPara && m_bParagraphSdtHasId ) )
             //Word won't open a document with an empty id tag, we fill it with a random number
@@ -1136,7 +1153,10 @@ void DocxAttributeOutput::EndRun()
     // enclose in a sdt block, if necessary: if one is already started, then don't do it for now
     // (so on export sdt blocks are never nested ATM)
     if ( !m_bAnchorLinkedToNode && !m_bStartedCharSdt )
-        WriteSdtBlock( m_nRunSdtPrToken, m_pRunSdtPrTokenChildren, m_pRunSdtPrDataBindingAttrs, m_aRunSdtPrAlias, /*bPara=*/false );
+    {
+        ::sax_fastparser::FastAttributeList* pRunSdtPrTokenAttributes = 0;
+        WriteSdtBlock( m_nRunSdtPrToken, m_pRunSdtPrTokenChildren, pRunSdtPrTokenAttributes, m_pRunSdtPrDataBindingAttrs, m_aRunSdtPrAlias, /*bPara=*/false );
+    }
     else
     {
         //These should be written out to the actual Node and not to the anchor.
@@ -7854,8 +7874,30 @@ void DocxAttributeOutput::ParaGrabBag(const SfxGrabBagItem& rItem)
                 }
                 else if (aPropertyValue.Name == "ooxml:CT_SdtPr_id")
                     m_bParagraphSdtHasId = true;
+                else if (aPropertyValue.Name == "ooxml:CT_SdtPr_date")
+                {
+                    m_nParagraphSdtPrToken = FSNS(XML_w, XML_date);
+                    uno::Sequence<beans::PropertyValue> aGrabBag = aPropertyValue.Value.get< uno::Sequence<beans::PropertyValue> >();
+                    for (sal_Int32 j=0; j < aGrabBag.getLength(); ++j)
+                    {
+                        OString sValue = OUStringToOString(aGrabBag[j].Value.get<OUString>(), RTL_TEXTENCODING_UTF8);
+
+                        if (aGrabBag[j].Name == "ooxml:CT_SdtDate_fullDate")
+                            AddToAttrList(m_pParagraphSdtPrTokenAttributes, FSNS(XML_w, XML_fullDate), sValue.getStr());
+                        else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_dateFormat")
+                            AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_dateFormat), sValue.getStr());
+                        else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_lid")
+                            AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_lid), sValue.getStr());
+                        else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_storeMappedDataAs")
+                            AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_storeMappedDataAs), sValue.getStr());
+                        else if (aGrabBag[j].Name == "ooxml:CT_SdtDate_calendar")
+                            AddToAttrList(m_pParagraphSdtPrTokenChildren, FSNS(XML_w, XML_calendar), sValue.getStr());
+                        else
+                            SAL_WARN("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr / ooxml:CT_SdtPr_date grab bag property " << aGrabBag[j].Name);
+                    }
+                }
                 else
-                    SAL_INFO("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr grab bag property " << aPropertyValue.Name);
+                    SAL_WARN("sw.ww8", "DocxAttributeOutput::ParaGrabBag: unhandled SdtPr grab bag property " << aPropertyValue.Name);
             }
         }
         else if (i->first == "ParaCnfStyle")
@@ -8122,6 +8164,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri
       m_setFootnote(false)
     , m_nParagraphSdtPrToken(0)
     , m_pParagraphSdtPrTokenChildren(NULL)
+    , m_pParagraphSdtPrTokenAttributes(NULL)
     , m_pParagraphSdtPrDataBindingAttrs(NULL)
     , m_nRunSdtPrToken(0)
     , m_pRunSdtPrTokenChildren(NULL)
@@ -8146,6 +8189,7 @@ DocxAttributeOutput::~DocxAttributeOutput()
 
     delete m_pTableWrt, m_pTableWrt = NULL;
     delete m_pParagraphSdtPrTokenChildren; m_pParagraphSdtPrTokenChildren = NULL;
+    delete m_pParagraphSdtPrTokenAttributes; m_pParagraphSdtPrTokenAttributes = NULL;
     delete m_pParagraphSdtPrDataBindingAttrs; m_pParagraphSdtPrDataBindingAttrs = NULL;
     delete m_pRunSdtPrTokenChildren; m_pRunSdtPrTokenChildren = NULL;
     delete m_pRunSdtPrDataBindingAttrs; m_pRunSdtPrDataBindingAttrs = NULL;
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index 6ba3b48..90a31d8 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -700,6 +700,7 @@ private:
 
     void WriteSdtBlock(sal_Int32& nSdtPrToken,
                        ::sax_fastparser::FastAttributeList*& pSdtPrTokenChildren,
+                       ::sax_fastparser::FastAttributeList*& pSdtPrTokenAttributes,
                        ::sax_fastparser::FastAttributeList*& pSdtPrDataBindingAttrs,
                        OUString& rSdtPrAlias,
                        bool bPara);
@@ -900,6 +901,7 @@ private:
     /// members to control the existence of grabbagged SDT properties in the paragraph
     sal_Int32 m_nParagraphSdtPrToken;
     ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrTokenChildren;
+    ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrTokenAttributes;
     ::sax_fastparser::FastAttributeList *m_pParagraphSdtPrDataBindingAttrs;
     /// members to control the existence of grabbagged SDT properties in the text run
     sal_Int32 m_nRunSdtPrToken;
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 0da5178..bd2c226 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2358,7 +2358,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
             resourcemodel::resolveSprmProps(*this, rSprm);
         else
         {
-            OUString sName = "ooxml::CT_SdtPr_date";
+            OUString sName = "ooxml:CT_SdtPr_date";
             enableInteropGrabBag(sName);
             resourcemodel::resolveSprmProps(*this, rSprm);
             m_pImpl->m_pSdtHelper->appendToInteropGrabBag(getInteropGrabBag());
commit 3f02b29b6573a637592f096c2d2659534b1683ab
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 16:40:33 2014 +0200

    Unused optional elements
    
    The scripts parsing this file don't care if an element is optional or
    not, so why bother.
    
    Change-Id: I0860c9209347d6fab83e1faf2867db4de94216ac

diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 9083de0..c3600f5 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -87,11 +87,9 @@
         <empty/>
       </define>
       <define name="CT_ColorMapping">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
         <attribute name="bg1">
           <ref name="ST_ColorSchemeIndex"/>
         </attribute>
@@ -143,11 +141,9 @@
         <element name="clrScheme">
           <ref name="CT_ColorScheme"/>
         </element>
-        <optional>
           <element name="clrMap">
             <ref name="CT_ColorMapping"/>
           </element>
-        </optional>
       </define>
       <define name="CT_ColorSchemeList">
         <zeroOrMore>
@@ -161,49 +157,33 @@
           <element name="themeElements">
             <ref name="CT_BaseStyles"/>
           </element>
-          <optional>
             <element name="objectDefaults">
               <ref name="CT_ObjectStyleDefaults"/>
             </element>
-          </optional>
-          <optional>
             <element name="extraClrSchemeLst">
               <ref name="CT_ColorSchemeList"/>
             </element>
-          </optional>
-          <optional>
             <element name="custClrLst">
               <ref name="CT_CustomColorList"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="name">
             <data type="string"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_BaseStylesOverride">
-        <optional>
           <element name="clrScheme">
             <ref name="CT_ColorScheme"/>
           </element>
-        </optional>
-        <optional>
           <element name="fontScheme">
             <ref name="CT_FontScheme"/>
           </element>
-        </optional>
-        <optional>
           <element name="fmtScheme">
             <ref name="CT_StyleMatrix"/>
           </element>
-        </optional>
       </define>
       <define name="CT_ClipboardStyleSheet">
         <element name="themeElements">
@@ -214,11 +194,9 @@
         </element>
       </define>
       <define name="CT_Hyperlink">
-        <optional>
           <attribute name="r:id">
             <text/>
           </attribute>
-        </optional>
       </define>
       <define name="theme">
         <element name="theme">
@@ -262,33 +240,23 @@
         <element name="spPr">
           <ref name="CT_ShapeProperties"/>
         </element>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
       <define name="CT_ObjectStyleDefaults">
-        <optional>
           <element name="spDef">
             <ref name="CT_DefaultShapeDefinition"/>
           </element>
-        </optional>
-        <optional>
           <element name="lnDef">
             <ref name="CT_DefaultShapeDefinition"/>
           </element>
-        </optional>
-        <optional>
           <element name="txDef">
             <ref name="CT_DefaultShapeDefinition"/>
           </element>
-        </optional>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
     </grammar>
   </namespace>
@@ -373,11 +341,9 @@
           </choice>
       </define>
       <define name="CT_LightRig">
-        <optional>
           <element name="rot">
             <ref name="CT_SphereCoords"/>
           </element>
-        </optional>
         <attribute name="rig">
           <ref name="ST_LightRigType"/>
         </attribute>
@@ -438,11 +404,9 @@
         <element name="lightRig">
           <ref name="CT_LightRig"/>
         </element>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
     </grammar>
   </namespace>
@@ -479,21 +443,15 @@
           </choice>
       </define>
       <define name="CT_Bevel">
-        <optional>
           <attribute name="w">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="h">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="prst">
             <ref name="ST_BevelPresetType"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_PresetMaterialType">
           <choice>
@@ -531,59 +489,39 @@
       </define>
       <define name="CT_Shape3D">
         <group>
-          <optional>
             <element name="bevelT">
               <ref name="CT_Bevel"/>
             </element>
-          </optional>
-          <optional>
             <element name="bevelB">
               <ref name="CT_Bevel"/>
             </element>
-          </optional>
-          <optional>
             <element name="extrusionClr">
               <ref name="CT_Color"/>
             </element>
-          </optional>
-          <optional>
             <element name="contourClr">
               <ref name="CT_Color"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="z">
             <ref name="ST_Coordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="extrusionH">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="contourW">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="prstMaterial">
             <ref name="ST_PresetMaterialType"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_FlatText">
-        <optional>
           <attribute name="z">
             <ref name="ST_Coordinate"/>
           </attribute>
-        </optional>
       </define>
       <define name="EG_Text3D">
         <choice>
@@ -762,24 +700,18 @@
         <empty/>
       </define>
       <define name="CT_Camera">
-        <optional>
           <element name="rot">
             <ref name="CT_SphereCoords"/>
           </element>
-        </optional>
         <attribute name="prst">
           <ref name="ST_PresetCameraType"/>
         </attribute>
-        <optional>
           <attribute name="fov">
             <ref name="ST_FOVAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="zoom">
             <ref name="ST_PositivePercentage"/>
           </attribute>
-        </optional>
       </define>
     </grammar>
     <resource name="ST_PresetCameraType" resource="List">
@@ -930,11 +862,9 @@
           <element name="folHlink">
             <ref name="CT_Color"/>
           </element>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
         <attribute name="name">
           <data type="string">
@@ -943,12 +873,10 @@
       </define>
       <define name="CT_CustomColor">
         <ref name="EG_ColorChoice"/>
-        <optional>
           <attribute name="name">
             <data type="string">
             </data>
           </attribute>
-        </optional>
       </define>
       <define name="CT_SupplementalFont">
         <attribute name="script">
@@ -983,24 +911,18 @@
             <ref name="CT_SupplementalFont"/>
           </element>
         </zeroOrMore>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
       <define name="CT_EffectStyleItem">
         <ref name="EG_EffectProperties"/>
-        <optional>
           <element name="scene3d">
             <ref name="CT_Scene3D"/>
           </element>
-        </optional>
-        <optional>
           <element name="sp3d">
             <ref name="CT_Shape3D"/>
           </element>
-        </optional>
       </define>
       <define name="CT_FontScheme">
         <group>
@@ -1010,11 +932,9 @@
           <element name="minorFont">
             <ref name="CT_FontCollection"/>
           </element>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
         <attribute name="name">
           <data type="string"/>
@@ -1059,11 +979,9 @@
             <ref name="CT_BackgroundFillStyleList"/>
           </element>
         </group>
-        <optional>
           <attribute name="name">
             <data type="string"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_BaseStyles">
         <element name="clrScheme">
@@ -1075,11 +993,9 @@
         <element name="fmtScheme">
           <ref name="CT_StyleMatrix"/>
         </element>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
     </grammar>
     <resource name="ST_StyleMatrixColumnIndex" resource="Integer"/>
@@ -1181,21 +1097,15 @@
         <attribute name="typeface">
           <ref name="ST_TextTypeface"/>
         </attribute>
-        <optional>
           <attribute name="panose">
             <ref name="ST_Panose"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="pitchFamily">
             <data type="byte"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="charset">
             <data type="byte"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_TextLanguageID">
         <data type="string"/>
@@ -1254,11 +1164,9 @@
           <element name="uLnTx">
             <ref name="CT_TextUnderlineLineFollowText"/>
           </element>
-          <optional>
             <element name="uLn">
               <ref name="CT_LineProperties"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_TextUnderlineFill">
@@ -1293,159 +1201,95 @@
       </define>
       <define name="CT_TextCharacterProperties">
         <group>
-          <optional>
             <element name="ln">
               <ref name="CT_LineProperties"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_FillProperties"/>
-          </optional>
-          <optional>
             <ref name="EG_EffectProperties"/>
-          </optional>
-          <optional>
             <element name="highlight">
               <ref name="CT_Color"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_TextUnderlineLine"/>
-          </optional>
-          <optional>
             <ref name="EG_TextUnderlineFill"/>
-          </optional>
-          <optional>
             <element name="latin">
               <ref name="CT_TextFont"/>
             </element>
-          </optional>
-          <optional>
             <element name="ea">
               <ref name="CT_TextFont"/>
             </element>
-          </optional>
-          <optional>
             <element name="cs">
               <ref name="CT_TextFont"/>
             </element>
-          </optional>
-          <optional>
             <element name="sym">
               <ref name="CT_TextFont"/>
             </element>
-          </optional>
-          <optional>
             <element name="hlinkClick">
               <ref name="CT_Hyperlink"/>
             </element>
-          </optional>
-          <optional>
             <element name="hlinkMouseOver">
               <ref name="CT_Hyperlink"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="kumimoji">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="lang">
             <ref name="ST_TextLanguageID"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="altLang">
             <ref name="ST_TextLanguageID"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sz">
             <ref name="ST_TextFontSize"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="b">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="i">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="u">
             <ref name="ST_TextUnderlineType"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="strike">
             <ref name="ST_TextStrikeType"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kern">
             <ref name="ST_TextNonNegativePoint"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="cap">
             <ref name="ST_TextCapsType"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="spc">
             <ref name="ST_TextPoint"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="normalizeH">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="baseline">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noProof">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dirty">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="err">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="smtClean">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="smtId">
             <data type="unsignedInt"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="bmk">
             <data type="string"/>
           </attribute>
-        </optional>
       </define>
     </grammar>
     <resource name="ST_TextPoint" resource="Integer"/>
@@ -1506,23 +1350,17 @@
         <empty/>
       </define>
       <define name="CT_AlphaInverseEffect">
-        <optional>
           <ref name="EG_ColorChoice"/>
-        </optional>
       </define>
       <define name="CT_AlphaModulateFixedEffect">
-        <optional>
           <attribute name="amt">
             <ref name="ST_PositivePercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_AlphaOutsetEffect">
-        <optional>
           <attribute name="rad">
             <ref name="ST_Coordinate"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_AlphaReplaceEffect">
         <attribute name="a">
@@ -1535,16 +1373,12 @@
         </attribute>
       </define>
       <define name="CT_BlurEffect">
-        <optional>
           <attribute name="rad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="grow">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_ColorChangeEffect">
         <group>
@@ -1555,11 +1389,9 @@
             <ref name="CT_Color"/>
           </element>
         </group>
-        <optional>
           <attribute name="useA">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_ColorReplaceEffect">
         <ref name="EG_ColorChoice"/>
@@ -1571,109 +1403,73 @@
       </define>
       <define name="CT_GlowEffect">
         <ref name="EG_ColorChoice"/>
-        <optional>
           <attribute name="rad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GrayscaleEffect">
         <empty/>
       </define>
       <define name="CT_HSLEffect">
-        <optional>
           <attribute name="hue">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sat">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="lum">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_InnerShadowEffect">
         <ref name="EG_ColorChoice"/>
-        <optional>
           <attribute name="blurRad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_LuminanceEffect">
-        <optional>
           <attribute name="bright">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="contrast">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_OuterShadowEffect">
         <ref name="EG_ColorChoice"/>
-        <optional>
           <attribute name="blurRad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kx">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ky">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_RectAlignment"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="rotWithShape">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_PresetShadowVal">
           <choice>
@@ -1724,100 +1520,64 @@
         <attribute name="prst">
           <ref name="ST_PresetShadowVal"/>
         </attribute>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_ReflectionEffect">
-        <optional>
           <attribute name="blurRad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="stA">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="stPos">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="endA">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="endPos">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="fadeDir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kx">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ky">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_RectAlignment"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="rotWithShape">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_RelativeOffsetEffect">
-        <optional>
           <attribute name="tx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ty">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_SoftEdgesEffect">
         <attribute name="rad">
@@ -1825,68 +1585,46 @@
         </attribute>
       </define>
       <define name="CT_TintEffect">
-        <optional>
           <attribute name="hue">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="amt">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_TransformEffect">
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kx">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ky">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="tx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ty">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_NoFillProperties">
         <empty/>
       </define>
       <define name="CT_SolidColorFillProperties">
-        <optional>
           <ref name="EG_ColorChoice"/>
-        </optional>
       </define>
       <define name="CT_LinearShadeProperties">
-        <optional>
           <attribute name="ang">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="scaled">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_PathShadeType">
           <choice>
@@ -1899,16 +1637,12 @@
           </choice>
       </define>
       <define name="CT_PathShadeProperties">
-        <optional>
           <element name="fillToRect">
             <ref name="CT_RelativeRect"/>
           </element>
-        </optional>
-        <optional>
           <attribute name="path">
             <ref name="ST_PathShadeType"/>
           </attribute>
-        </optional>
       </define>
       <define name="EG_ShadeProperties">
         <choice>
@@ -1947,69 +1681,45 @@
       </define>
       <define name="CT_GradientFillProperties">
         <group>
-          <optional>
             <element name="gsLst">
               <ref name="CT_GradientStopList"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_ShadeProperties"/>
-          </optional>
-          <optional>
             <element name="tileRect">
               <ref name="CT_RelativeRect"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="flip">
             <ref name="ST_TileFlipMode"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="rotWithShape">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_TileInfoProperties">
-        <optional>
           <attribute name="tx">
             <ref name="ST_Coordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ty">
             <ref name="ST_Coordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="flip">
             <ref name="ST_TileFlipMode"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_RectAlignment"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_StretchInfoProperties">
-        <optional>
           <element name="fillRect">
             <ref name="CT_RelativeRect"/>
           </element>
-        </optional>
       </define>
       <define name="EG_FillModeProperties">
         <choice>
@@ -2092,45 +1802,31 @@
               </element>
             </choice>
           </zeroOrMore>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
         <ref name="AG_Blob"/>
-        <optional>
           <attribute name="cstate">
             <ref name="ST_BlipCompression"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_BlipFillProperties">
         <group>
-          <optional>
             <element name="blip">
               <ref name="CT_Blip"/>
             </element>
-          </optional>
-          <optional>
             <element name="srcRect">
               <ref name="CT_RelativeRect"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_FillModeProperties"/>
-          </optional>
         </group>
-        <optional>
           <attribute name="dpi">
             <data type="unsignedInt"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="rotWithShape">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_PresetPatternVal">
           <choice>
@@ -2246,22 +1942,16 @@
       </define>
       <define name="CT_PatternFillProperties">
         <group>
-          <optional>
             <element name="fgClr">
               <ref name="CT_Color"/>
             </element>
-          </optional>
-          <optional>
             <element name="bgClr">
               <ref name="CT_Color"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="prst">
             <ref name="ST_PresetPatternVal"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GroupFillProperties">
         <empty/>
@@ -2425,16 +2115,12 @@
         <zeroOrMore>
           <ref name="EG_Effect"/>
         </zeroOrMore>
-        <optional>
           <attribute name="type">
             <ref name="ST_EffectContainerType"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="name">
             <data type="token"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_AlphaModulateEffect">
         <element name="cont">
@@ -2450,46 +2136,30 @@
         </attribute>
       </define>
       <define name="CT_EffectList">
-        <optional>
           <element name="blur">
             <ref name="CT_BlurEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="fillOverlay">
             <ref name="CT_FillOverlayEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="glow">
             <ref name="CT_GlowEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="innerShdw">
             <ref name="CT_InnerShadowEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="outerShdw">
             <ref name="CT_OuterShadowEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="prstShdw">
             <ref name="CT_PresetShadowEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="reflection">
             <ref name="CT_ReflectionEffect"/>
           </element>
-        </optional>
-        <optional>
           <element name="softEdge">
             <ref name="CT_SoftEdgesEffect"/>
           </element>
-        </optional>
       </define>
       <define name="EG_EffectProperties">
         <choice>
@@ -2741,21 +2411,15 @@
           </choice>
       </define>
       <define name="CT_LineEndProperties">
-        <optional>
           <attribute name="type">
             <ref name="ST_LineEndType"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="w">
             <ref name="ST_LineEndWidth"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="len">
             <ref name="ST_LineEndLength"/>
           </attribute>
-        </optional>
       </define>
       <define name="EG_LineFillProperties">
         <choice>
@@ -2780,11 +2444,9 @@
         <empty/>
       </define>
       <define name="CT_LineJoinMiterProperties">
-        <optional>
           <attribute name="lim">
             <ref name="ST_PositivePercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="EG_LineJoinProperties">
         <choice>
@@ -2826,11 +2488,9 @@
           </choice>
       </define>
       <define name="CT_PresetLineDashProperties">
-        <optional>
           <attribute name="val">
             <ref name="ST_PresetLineDashVal"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_DashStop">
         <attribute name="d">
@@ -2894,51 +2554,31 @@
       </define>
       <define name="CT_LineProperties">
         <group>
-          <optional>
             <ref name="EG_LineFillProperties"/>
-          </optional>
-          <optional>
             <ref name="EG_LineDashProperties"/>
-          </optional>
-          <optional>
             <ref name="EG_LineJoinProperties"/>
-          </optional>
-          <optional>
             <element name="headEnd">
               <ref name="CT_LineEndProperties"/>
             </element>
-          </optional>
-          <optional>
             <element name="tailEnd">
               <ref name="CT_LineEndProperties"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="w">
             <ref name="ST_LineWidth"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="cap">
             <ref name="ST_LineCap"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="cmpd">
             <ref name="ST_CompoundLine"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_PenAlignment"/>
           </attribute>
-        </optional>
       </define>
     </grammar>
     <resource name="ST_LineEndType" resource="List">
@@ -3019,76 +2659,46 @@
       <include href="dml-shapeLineProperties.rng"/>
       <define name="CT_ShapeProperties">
         <group>
-          <optional>
             <element name="xfrm">
               <ref name="CT_Transform2D"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_Geometry"/>
-          </optional>
-          <optional>
             <ref name="EG_FillProperties"/>
-          </optional>
-          <optional>
             <element name="ln">
               <ref name="CT_LineProperties"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_EffectProperties"/>
-          </optional>
-          <optional>
             <element name="scene3d">
               <ref name="CT_Scene3D"/>
             </element>
-          </optional>
-          <optional>
             <element name="sp3d">
               <ref name="CT_Shape3D"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="bwMode">
             <ref name="ST_BlackWhiteMode"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GroupShapeProperties">
         <group>
-          <optional>
             <element name="xfrm">
               <ref name="CT_GroupTransform2D"/>
             </element>
-          </optional>
-          <optional>
             <ref name="EG_FillProperties"/>
-          </optional>
-          <optional>
             <ref name="EG_EffectProperties"/>
-          </optional>
-          <optional>
             <element name="scene3d">
               <ref name="CT_Scene3D"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="bwMode">
             <ref name="ST_BlackWhiteMode"/>
           </attribute>
-        </optional>
       </define>
     </grammar>
     <resource name="CT_ShapeProperties" resource="Properties">
@@ -3413,11 +3023,9 @@
         <attribute name="val">
           <ref name="ST_SystemColorVal"/>
         </attribute>
-        <optional>
           <attribute name="lastClr">
             <ref name="ST_HexBinary3"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_SchemeColorVal">
           <choice>
@@ -3777,71 +3385,47 @@
       </define>
       <define name="CT_Transform2D">
         <group>
-          <optional>
             <element name="off">
               <ref name="CT_Point2D"/>
             </element>
-          </optional>
-          <optional>
             <element name="ext">
               <ref name="CT_PositiveSize2D"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="rot">
             <ref name="ST_Angle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="flipH">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="flipV">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GroupTransform2D">
         <group>
-          <optional>
             <element name="off">
               <ref name="CT_Point2D"/>
             </element>
-          </optional>
-          <optional>
             <element name="ext">
               <ref name="CT_PositiveSize2D"/>
             </element>
-          </optional>
-          <optional>
             <element name="chOff">
               <ref name="CT_Point2D"/>
             </element>
-          </optional>
-          <optional>
             <element name="chExt">
               <ref name="CT_PositiveSize2D"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="rot">
             <ref name="ST_Angle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="flipH">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="flipV">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Point3D">
         <attribute name="x">
@@ -3877,26 +3461,18 @@
         </attribute>
       </define>
       <define name="CT_RelativeRect">
-        <optional>
           <attribute name="l">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="t">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="r">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="b">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_RectAlignment">
           <choice>
@@ -3980,81 +3556,53 @@
           </choice>
       </define>
       <define name="AG_Blob">
-        <optional>
           <attribute name="r:embed">
             <text/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="r:link">
             <text/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_EmbeddedWAVAudioFile">
         <attribute name="r:embed"/>
-        <optional>
           <attribute name="name">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="builtIn">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Hyperlink">
         <group>
-          <optional>
             <element name="snd">
               <ref name="CT_EmbeddedWAVAudioFile"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="r:id"/>
-        </optional>
-        <optional>
           <attribute name="invalidUrl">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="action">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="tgtFrame">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="tooltip">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="history">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="highlightClick">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="endSnd">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_DrawingElementId">
         <data type="unsignedInt"/>
@@ -4366,187 +3914,121 @@
       <!-- ISO RELAX NG Schema -->
       <include href="dml-shapeGeometry.rng"/>
       <define name="AG_Locking">
-        <optional>
           <attribute name="noGrp">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noSelect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noRot">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noChangeAspect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noMove">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noResize">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noEditPoints">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noAdjustHandles">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noChangeArrowheads">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noChangeShapeType">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_ConnectorLocking">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
         <ref name="AG_Locking"/>
       </define>
       <define name="CT_ShapeLocking">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
         <ref name="AG_Locking"/>
-        <optional>
           <attribute name="noTextEdit">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureLocking">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
         <ref name="AG_Locking"/>
-        <optional>
           <attribute name="noCrop">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GroupLocking">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
-        <optional>
           <attribute name="noGrp">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noUngrp">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noSelect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noRot">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noChangeAspect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noMove">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noResize">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GraphicalObjectFrameLocking">
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
-        <optional>
           <attribute name="noGrp">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noDrilldown">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noSelect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noChangeAspect">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noMove">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="noResize">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_NonVisualDrawingProps">
         <group>
-          <optional>
             <element name="a:hlinkClick">
               <ref name="BUILT_IN_ANY_TYPE"/>
             </element>
-          </optional>
-          <optional>
             <element name="hlinkHover">
               <ref name="CT_Hyperlink"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
         <attribute name="id">
           <ref name="ST_DrawingElementId"/>
@@ -4554,105 +4036,71 @@
         <attribute name="name">
           <data type="string"/>
         </attribute>
-        <optional>
           <attribute name="descr">
             <data type="string"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="hidden">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="title">
             <data type="string"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_NonVisualDrawingShapeProps">
         <group>
-          <optional>
             <element name="spLocks">
               <ref name="CT_ShapeLocking"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="txBox">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_NonVisualConnectorProperties">
-        <optional>
           <element name="cxnSpLocks">
             <ref name="CT_ConnectorLocking"/>
           </element>
-        </optional>
-        <optional>
           <element name="stCxn">
             <ref name="CT_Connection"/>
           </element>
-        </optional>
-        <optional>
           <element name="endCxn">
             <ref name="CT_Connection"/>
           </element>
-        </optional>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
       <define name="CT_NonVisualPictureProperties">
         <group>
-          <optional>
             <element name="picLocks">
               <ref name="CT_PictureLocking"/>
             </element>
-          </optional>
-          <optional>
             <element name="extLst">
               <ref name="CT_OfficeArtExtensionList"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="preferRelativeResize">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_NonVisualGroupDrawingShapeProps">
-        <optional>
           <element name="grpSpLocks">
             <ref name="CT_GroupLocking"/>
           </element>
-        </optional>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
       <define name="CT_NonVisualGraphicFrameProperties">
-        <optional>
           <element name="graphicFrameLocks">
             <ref name="CT_GraphicalObjectFrameLocking"/>
           </element>
-        </optional>
-        <optional>
           <element name="extLst">
             <ref name="CT_OfficeArtExtensionList"/>
           </element>
-        </optional>
       </define>
     </grammar>
     <resource name="CT_GraphicalObjectFrameLocking" resource="Properties">
@@ -5126,131 +4574,89 @@
 
       <define name="EG_ColorChoice">
         <choice>
-           <optional>
             <element name="srgbClr">
               <ref name="CT_SRgbColor"/>
             </element>
-          </optional>
-          <optional>
             <element name="schemeClr">
               <ref name="CT_SchemeColor"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_ColorTransform">
         <choice>
-          <optional>
             <element name="tint">
               <ref name="CT_PositiveFixedPercentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="shade">
               <ref name="CT_PositiveFixedPercentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="alpha">
               <ref name="CT_PositiveFixedPercentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="hueMod">
               <ref name="CT_PositivePercentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="sat">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="satOff">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="satMod">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="lum">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="lumOff">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
-          <optional>
             <element name="lumMod">
               <ref name="CT_Percentage"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_FillProperties">
         <choice>
-          <optional>
             <element name="noFill">
               <ref name="CT_Empty"/>
             </element>
-          </optional>
-          <optional>
             <element name="solidFill">
               <ref name="CT_SolidColorFillProperties"/>
             </element>
-          </optional>
-          <optional>
             <element name="gradFill">
               <ref name="CT_GradientFillProperties"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_ShadeProperties">
         <choice>
-          <optional>
             <element name="lin">
               <ref name="CT_LinearShadeProperties"/>
             </element>
-          </optional>
-          <optional>
             <element name="path">
               <ref name="CT_PathShadeProperties"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_LineDashProperties">
         <choice>
-          <optional>
             <element name="prstDash">
               <ref name="CT_PresetLineDashProperties"/>
             </element>
-          </optional>
         </choice>
       </define>
       <define name="EG_LineJoinProperties">
         <choice>
-          <optional>
             <element name="round">
               <ref name="CT_Empty"/>
             </element>
-          </optional>
-          <optional>
             <element name="bevel">
               <ref name="CT_Empty"/>
             </element>
-          </optional>
-          <optional>
             <element name="miter">
               <ref name="CT_LineJoinMiterProperties"/>
             </element>
-          </optional>
         </choice>
       </define>
 
@@ -5288,38 +4694,26 @@
         <ref name="EG_ColorChoice"/>
       </define>
       <define name="CT_GradientFillProperties">
-        <optional>
           <element name="gsLst">
             <ref name="CT_GradientStopList"/>
           </element>
-        </optional>
-        <optional>
           <ref name="EG_ShadeProperties"/>
-        </optional>
       </define>
       <define name="CT_LinearShadeProperties">
-        <optional>
           <attribute name="ang">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="scaled">
             <ref name="ST_OnOff"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PathShadeProperties">
-        <optional>
           <element name="fillToRect">
             <ref name="CT_RelativeRect"/>
           </element>
-        </optional>
-        <optional>
           <attribute name="path">
             <ref name="ST_PathShadeType"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_GradientStopList">
         <oneOrMore>
@@ -5335,47 +4729,33 @@
         </attribute>
       </define>
       <define name="CT_RelativeRect">
-        <optional>
           <attribute name="l">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="t">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="r">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="b">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PresetLineDashProperties">
-        <optional>
           <attribute name="val">
             <ref name="ST_PresetLineDashVal"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_LineJoinMiterProperties">
-        <optional>
           <attribute name="lim">
             <ref name="ST_PositivePercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Camera">
-        <optional>
           <attribute name="prst">
             <ref name="ST_PresetCameraType"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_LightRig">
         <element name="rot">
@@ -5400,21 +4780,15 @@
         </attribute>
       </define>
       <define name="CT_Bevel">
-        <optional>
           <attribute name="w">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="h">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="prst">
             <ref name="ST_BevelPresetType"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Color">
         <ref name="EG_ColorChoice"/>
@@ -5423,177 +4797,111 @@
         <attribute name="id">
           <ref name="ST_UnsignedDecimalNumber"/>
         </attribute>
-        <optional>
           <attribute name="val">
             <ref name="ST_OnOff"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_OnOff">
-        <optional>
           <attribute name="val">
             <ref name="ST_OnOff"/>
           </attribute>
-        </optional>
       </define>
 
 
       <!-- Main Elements-->
       <define name="CT_Glow">
-        <optional>
             <ref name="EG_ColorChoice"/>
-        </optional>
         <attribute name="rad">
           <ref name="ST_PositiveCoordinate"/>
         </attribute>
       </define>
       <define name="CT_Shadow">
-        <optional>
             <ref name="EG_ColorChoice"/>
-        </optional>
-        <optional>
           <attribute name="blurRad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kx">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ky">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_RectAlignment"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Reflection">
-        <optional>
           <attribute name="blurRad">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="stA">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="stPos">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="endA">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="endPos">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dist">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="dir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="fadeDir">
             <ref name="ST_PositiveFixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sx">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="sy">
             <ref name="ST_Percentage"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="kx">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="ky">
             <ref name="ST_FixedAngle"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_RectAlignment"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_TextOutlineEffect">
-        <optional>
             <ref name="EG_FillProperties"/>
-        </optional>
-        <optional>
             <ref name="EG_LineDashProperties"/>
-        </optional>
-        <optional>
             <ref name="EG_LineJoinProperties"/>
-        </optional>
-        <optional>
           <attribute name="w">
             <ref name="ST_LineWidth"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="cap">
             <ref name="ST_LineCap"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="cmpd">
             <ref name="ST_CompoundLine"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="algn">
             <ref name="ST_PenAlignment"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_FillTextEffect">
-        <optional>
             <ref name="EG_FillProperties"/>
-        </optional>
       </define>
       <define name="CT_Scene3D">
         <element name="camera">
@@ -5616,21 +4924,15 @@
         <element name="contourClr">
           <ref name="CT_Color"/>
         </element>
-        <optional>
           <attribute name="extrusionH">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="contourW">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="prstMaterial">
             <ref name="ST_PresetMaterialType"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Ligatures">
         <attribute name="val">
@@ -5725,21 +5027,15 @@
         </attribute>
       </define>
       <define name="CT_SdtCheckbox">
-        <optional>
           <element name="checked">
             <ref name="CT_String"/>
           </element>
-        </optional>
-        <optional>
           <element name="checkedState">
             <ref name="CT_String"/>
           </element>
-        </optional>
-        <optional>
           <element name="uncheckedState">
             <ref name="CT_String"/>
           </element>
-        </optional>
       </define>
     </grammar>
 
@@ -6233,252 +5529,200 @@
 
       <!-- Complex types for effects -->
       <define name="CT_PictureEffectBlur">
-        <optional>
           <attribute name="visible">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectCement">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="crackSpacing">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectChalkSketch">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pressure">
             <ref name="ST_ArtisticEffectParam4"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectCrisscrossEtching">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pressure">
             <ref name="ST_ArtisticEffectParam4"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectCutout">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="numberOfShades">
             <ref name="ST_ArtisticEffectParam6"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectFilmGrain">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="grainSize">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectGlass">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="scaling">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectGlowDiffused">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="intensity">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectGlowEdges">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="smoothness">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectLightScreen">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="gridSize">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectLineDrawing">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pencilSize">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectMarker">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="size">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectMosiaicBubbles">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pressure">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPaintStrokes">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="intensity">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPaintBrush">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="brushSize">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPastelsSmooth">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="scaling">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPencilGrayscale">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pencilSize">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPencilSketch">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="pressure">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPhotocopy">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="detail">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectPlasticWrap">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="smoothness">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectTexturizer">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="scaling">
             <ref name="ST_ArtisticEffectParam100"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectWatercolorSponge">
-        <optional>
           <attribute name="trans">
             <ref name="ST_PositiveFixedPercentage"/>
           </attribute>
           <attribute name="brushSize">
             <ref name="ST_ArtisticEffectParam10"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectBrightnessContrast">
-        <optional>
           <attribute name="bright">
             <ref name="ST_FixedPercentage"/>
           </attribute>
           <attribute name="contrast">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectColorTemperature">
-        <optional>
           <attribute name="colorTemp">
             <ref name="ST_ColorTemperature"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectSaturation">
-        <optional>
           <attribute name="sat">
             <ref name="ST_SaturationAmount"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureEffectSharpenSoften">
-        <optional>
           <attribute name="amount">
             <ref name="ST_FixedPercentage"/>
           </attribute>
-        </optional>
       </define>
 
       <!-- Complex types for containers -->
@@ -6563,11 +5807,9 @@
             <ref name="CT_PictureEffectSharpenSoften"/>
           </element>
         </choice>
-        <optional>
           <attribute name="visible">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PictureLayer">
         <zeroOrMore>
@@ -7115,71 +6357,47 @@
         <element name="pos">
           <ref name="CT_AdjPoint2D"/>
         </element>
-        <optional>
           <attribute name="gdRefX">
             <ref name="ST_GeomGuideName"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="minX">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="maxX">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="gdRefY">
             <ref name="ST_GeomGuideName"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="minY">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="maxY">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_PolarAdjustHandle">
         <element name="pos">
           <ref name="CT_AdjPoint2D"/>
         </element>
-        <optional>
           <attribute name="gdRefR">
             <ref name="ST_GeomGuideName"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="minR">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="maxR">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="gdRefAng">
             <ref name="ST_GeomGuideName"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="minAng">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="maxAng">
             <ref name="ST_AdjCoordinate"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_ConnectionSite">
         <element name="pos">
@@ -7296,31 +6514,21 @@
             </element>
           </choice>
         </zeroOrMore>
-        <optional>
           <attribute name="w">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="h">
             <ref name="ST_PositiveCoordinate"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="fill">
             <ref name="ST_PathFillMode"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="stroke">
             <data type="boolean"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="extrusionOk">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_Path2DList">
         <zeroOrMore>
@@ -7330,51 +6538,37 @@
         </zeroOrMore>
       </define>
       <define name="CT_PresetGeometry2D">
-        <optional>
           <element name="avLst">
             <ref name="CT_GeomGuideList"/>
           </element>
-        </optional>
         <attribute name="prst">
           <ref name="ST_ShapeType"/>
         </attribute>
       </define>
       <define name="CT_PresetTextShape">
-        <optional>
           <element name="avLst">
             <ref name="CT_GeomGuideList"/>
           </element>
-        </optional>
         <attribute name="prst">
           <ref name="ST_TextShapeType"/>
         </attribute>
       </define>
       <define name="CT_CustomGeometry2D">
-        <optional>
           <element name="avLst">
             <ref name="CT_GeomGuideList"/>
           </element>
-        </optional>
-        <optional>
           <element name="gdLst">
             <ref name="CT_GeomGuideList"/>
           </element>
-        </optional>
-        <optional>
           <element name="ahLst">
             <ref name="CT_AdjustHandleList"/>
           </element>
-        </optional>
-        <optional>
           <element name="cxnLst">
             <ref name="CT_ConnectionSiteList"/>
           </element>
-        </optional>
-        <optional>
           <element name="rect">
             <ref name="CT_GeomRect"/>
           </element>
-        </optional>
         <element name="pathLst">
           <ref name="CT_Path2DList"/>
         </element>
@@ -7695,58 +6889,40 @@
           <element name="extent">
             <ref name="CT_PositiveSize2D"/>
           </element>
-          <optional>
             <element name="effectExtent">
               <ref name="CT_EffectExtent"/>
             </element>
-          </optional>
           <element name="docPr">
             <ref name="CT_NonVisualDrawingProps"/>
           </element>
-          <optional>
             <element name="cNvGraphicFramePr">
               <ref name="CT_NonVisualGraphicFrameProperties"/>
             </element>
-          </optional>
           <element name="a:graphic">
             <ref name="BUILT_IN_ANY_TYPE"/>
           </element>
-          <optional>
             <element name="wp14:sizeRelH">
               <ref name="BUILT_IN_ANY_TYPE"/>
             </element>
-          </optional>
-          <optional>
             <element name="wp14:sizeRelV">
               <ref name="BUILT_IN_ANY_TYPE"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="distT">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distB">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distL">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distR">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="wp14:anchorId">
             <ref name="ST_EditId"/>
           </attribute>
-        </optional>
       </define>
       <define name="ST_WrapText">
           <choice>
@@ -7771,44 +6947,32 @@
             </element>
           </oneOrMore>
         </group>
-        <optional>
           <attribute name="edited">
             <data type="boolean"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_WrapNone">
         <empty/>
       </define>
       <define name="CT_WrapSquare">
-        <optional>
           <element name="effectExtent">
             <ref name="CT_EffectExtent"/>
           </element>
-        </optional>
         <attribute name="wrapText">
           <ref name="ST_WrapText"/>
         </attribute>
-        <optional>
           <attribute name="distT">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distB">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distL">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distR">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_WrapTight">
         <element name="wrapPolygon">
@@ -7817,16 +6981,12 @@
         <attribute name="wrapText">
           <ref name="ST_WrapText"/>
         </attribute>
-        <optional>
           <attribute name="distL">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distR">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_WrapThrough">
         <element name="wrapPolygon">
@@ -7835,33 +6995,23 @@
         <attribute name="wrapText">
           <ref name="ST_WrapText"/>
         </attribute>
-        <optional>
           <attribute name="distL">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distR">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_WrapTopBottom">
-        <optional>
           <element name="effectExtent">
             <ref name="CT_EffectExtent"/>
           </element>
-        </optional>
-        <optional>
           <attribute name="distT">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distB">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
       </define>
       <define name="EG_WrapType">
         <choice>
@@ -7993,54 +7143,38 @@
           <element name="extent">
             <ref name="CT_PositiveSize2D"/>
           </element>
-          <optional>
             <element name="effectExtent">
               <ref name="CT_EffectExtent"/>
             </element>
-          </optional>
           <ref name="EG_WrapType"/>
           <element name="docPr">
             <ref name="CT_NonVisualDrawingProps"/>
           </element>
-          <optional>
             <element name="cNvGraphicFramePr">
               <ref name="CT_NonVisualGraphicFrameProperties"/>
             </element>
-          </optional>
           <element name="a:graphic">
             <ref name="BUILT_IN_ANY_TYPE"/>
           </element>
-          <optional>
             <element name="wp14:sizeRelH">
               <ref name="BUILT_IN_ANY_TYPE"/>
             </element>
-          </optional>
-          <optional>
             <element name="wp14:sizeRelV">
               <ref name="BUILT_IN_ANY_TYPE"/>
             </element>
-          </optional>
         </group>
-        <optional>
           <attribute name="distT">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distB">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distL">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
-        <optional>
           <attribute name="distR">
             <ref name="ST_WrapDistance"/>
           </attribute>
-        </optional>
         <attribute name="simplePos">
           <data type="boolean"/>
         </attribute>
@@ -8056,19 +7190,15 @@
         <attribute name="layoutInCell">
           <data type="boolean"/>
         </attribute>
-        <optional>
           <attribute name="hidden">
             <data type="boolean"/>
           </attribute>
-        </optional>
         <attribute name="allowOverlap">
           <data type="boolean"/>
         </attribute>
-        <optional>
           <attribute name="wp14:anchorId">
             <ref name="ST_EditId"/>
           </attribute>
-        </optional>
       </define>
       <define name="inline">
         <element name="inline">
@@ -8445,256 +7575,174 @@
         </attribute>
       </define>
       <define name="EG_ScriptStyle">
-        <optional>
           <element name="scr">
             <ref name="CT_Script"/>
           </element>
-        </optional>
-        <optional>
           <element name="sty">
             <ref name="CT_Style"/>
           </element>
-        </optional>
       </define>
       <define name="CT_RPR">
-        <optional>
           <element name="lit">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
         <choice>
-          <optional>
             <element name="nor">
               <ref name="CT_OnOff"/>
             </element>
-          </optional>
           <ref name="EG_ScriptStyle"/>
         </choice>
-        <optional>
           <element name="brk">
             <ref name="CT_ManualBreak"/>
           </element>
-        </optional>
-        <optional>
           <element name="aln">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
       </define>
       <define name="CT_Text">
         <ref name="ST_String"/>
-        <optional>
           <attribute name="xml:space">
             <text/>
           </attribute>
-        </optional>
       </define>
       <define name="CT_R">
-        <optional>
           <element name="rPr">
             <ref name="CT_RPR"/>
           </element>
-        </optional>
-        <optional>
           <ref name="EG_RPr"/>
-        </optional>
         <zeroOrMore>
           <choice>
             <ref name="EG_RunInnerContent"/>
-            <optional>
               <element name="t">
                 <ref name="CT_Text"/>
               </element>
-            </optional>
           </choice>
         </zeroOrMore>
       </define>
       <define name="CT_CtrlPr">
-        <optional>
           <ref name="EG_RPrMath"/>
-        </optional>
       </define>
       <define name="CT_AccPr">
-        <optional>
           <element name="chr">
             <ref name="CT_Char"/>
           </element>
-        </optional>
-        <optional>
           <element name="ctrlPr">
             <ref name="CT_CtrlPr"/>
           </element>
-        </optional>
       </define>
       <define name="CT_Acc">
-        <optional>
           <element name="accPr">
             <ref name="CT_AccPr"/>
           </element>
-        </optional>
         <element name="e">
           <ref name="CT_OMathArg"/>
         </element>
       </define>
       <define name="CT_BarPr">
-        <optional>
           <element name="pos">
             <ref name="CT_TopBot"/>
           </element>
-        </optional>
-        <optional>
           <element name="ctrlPr">
             <ref name="CT_CtrlPr"/>
           </element>
-        </optional>
       </define>
       <define name="CT_Bar">
-        <optional>
           <element name="barPr">
             <ref name="CT_BarPr"/>
           </element>
-        </optional>
         <element name="e">
           <ref name="CT_OMathArg"/>
         </element>
       </define>
       <define name="CT_BoxPr">
-        <optional>
           <element name="opEmu">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="noBreak">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="diff">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="brk">
             <ref name="CT_ManualBreak"/>
           </element>
-        </optional>
-        <optional>
           <element name="aln">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="ctrlPr">
             <ref name="CT_CtrlPr"/>
           </element>
-        </optional>
       </define>
       <define name="CT_Box">
-        <optional>
           <element name="boxPr">
             <ref name="CT_BoxPr"/>
           </element>
-        </optional>
         <element name="e">
           <ref name="CT_OMathArg"/>
         </element>
       </define>
       <define name="CT_BorderBoxPr">
-        <optional>
           <element name="hideTop">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="hideBot">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="hideLeft">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="hideRight">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="strikeH">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="strikeV">
             <ref name="CT_OnOff"/>
           </element>
-        </optional>
-        <optional>
           <element name="strikeBLTR">
             <ref name="CT_OnOff"/>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list