summaryrefslogtreecommitdiff
path: root/writerfilter/source/ooxml
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/ooxml')
-rw-r--r--writerfilter/source/ooxml/Handler.cxx348
-rw-r--r--writerfilter/source/ooxml/Handler.hxx145
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx86
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx55
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.cxx410
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.hxx116
-rwxr-xr-xwriterfilter/source/ooxml/OOXMLFactory.cxx339
-rwxr-xr-xwriterfilter/source/ooxml/OOXMLFactory.hxx176
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx2380
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.hxx644
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx233
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx117
-rw-r--r--writerfilter/source/ooxml/OOXMLFastHelper.hxx253
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx119
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx65
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.cxx325
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.hxx118
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.hxx82
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx792
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx289
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.cxx317
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.hxx91
-rw-r--r--writerfilter/source/ooxml/README.efforts131
-rw-r--r--writerfilter/source/ooxml/RefAndPointer.hxx119
-rw-r--r--writerfilter/source/ooxml/analyzemodel.xsl103
-rw-r--r--writerfilter/source/ooxml/analyzestage2.xsl32
-rw-r--r--writerfilter/source/ooxml/analyzestage3.xsl40
-rw-r--r--writerfilter/source/ooxml/attrsprm.xsl142
-rw-r--r--writerfilter/source/ooxml/checkmodel.xsl167
-rw-r--r--writerfilter/source/ooxml/dummyannotate.xsl845
-rw-r--r--writerfilter/source/ooxml/effort.xsl39
-rwxr-xr-xwriterfilter/source/ooxml/efforts.sh3
-rw-r--r--writerfilter/source/ooxml/factory.xsl89
-rw-r--r--writerfilter/source/ooxml/factory_ns.xsl161
-rw-r--r--writerfilter/source/ooxml/factory_values.xsl100
-rw-r--r--writerfilter/source/ooxml/factoryimpl.xsl386
-rw-r--r--writerfilter/source/ooxml/factoryimpl_ns.xsl833
-rw-r--r--writerfilter/source/ooxml/factoryimpl_values.xsl98
-rw-r--r--writerfilter/source/ooxml/factoryinc.xsl112
-rw-r--r--writerfilter/source/ooxml/factorytools.xsl345
-rw-r--r--writerfilter/source/ooxml/fasttokens.xsl113
-rw-r--r--writerfilter/source/ooxml/gperffasttokenhandler.xsl96
-rw-r--r--writerfilter/source/ooxml/makefile.mk256
-rw-r--r--writerfilter/source/ooxml/model.xml23466
-rwxr-xr-xwriterfilter/source/ooxml/modelcleanup3
-rw-r--r--writerfilter/source/ooxml/modelcleanup.xsl304
-rw-r--r--writerfilter/source/ooxml/modelpreprocess.xsl225
-rw-r--r--writerfilter/source/ooxml/namespaceids.xsl100
-rw-r--r--writerfilter/source/ooxml/nostatus.xsl20
-rw-r--r--writerfilter/source/ooxml/ooxmlLoggers.hxx41
-rw-r--r--writerfilter/source/ooxml/qnametostr.xsl132
-rw-r--r--writerfilter/source/ooxml/resourceids.xsl105
-rwxr-xr-xwriterfilter/source/ooxml/rngtocxx32
-rwxr-xr-xwriterfilter/source/ooxml/status.sh24
-rw-r--r--writerfilter/source/ooxml/todo.xsl29
-rw-r--r--writerfilter/source/ooxml/tokenxmlfooter1
-rw-r--r--writerfilter/source/ooxml/tokenxmlheader1
57 files changed, 36193 insertions, 0 deletions
diff --git a/writerfilter/source/ooxml/Handler.cxx b/writerfilter/source/ooxml/Handler.cxx
new file mode 100644
index 000000000000..1b4fb6eb0525
--- /dev/null
+++ b/writerfilter/source/ooxml/Handler.cxx
@@ -0,0 +1,348 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <ooxml/resourceids.hxx>
+#include <resourcemodel/QNameToString.hxx>
+#include "Handler.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+
+/*
+ class OOXMLFootnoteHandler
+ */
+OOXMLFootnoteHandler::OOXMLFootnoteHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLFootnoteHandler::~OOXMLFootnoteHandler()
+{
+}
+
+void OOXMLFootnoteHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_FtnEdnRef_id:
+ mpFastContext->resolveFootnote(val.getString());
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLFootnoteHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLEndnoteHandler
+ */
+OOXMLEndnoteHandler::OOXMLEndnoteHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLEndnoteHandler::~OOXMLEndnoteHandler()
+{
+}
+
+void OOXMLEndnoteHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_FtnEdnRef_id:
+ mpFastContext->resolveEndnote(val.getString());
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLEndnoteHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLCommentHandler
+*/
+OOXMLCommentHandler::OOXMLCommentHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLCommentHandler::~OOXMLCommentHandler()
+{
+}
+
+void OOXMLCommentHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_Markup_id:
+ mpFastContext->resolveComment(val.getString());
+ break;
+ default:
+ ;
+ }
+}
+
+void OOXMLCommentHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLOLEHandler
+*/
+OOXMLOLEHandler::OOXMLOLEHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLOLEHandler::~OOXMLOLEHandler()
+{
+}
+
+void OOXMLOLEHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_OLEObject_r_id:
+ mpFastContext->resolveOLE(val.getString());
+ break;
+ default:
+ ;
+ }
+}
+
+void OOXMLOLEHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLFooterHandler
+ */
+OOXMLFooterHandler::OOXMLFooterHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext), msStreamId(), mnType(0)
+{
+}
+
+OOXMLFooterHandler::~OOXMLFooterHandler()
+{
+ mpFastContext->resolveFooter(mnType, msStreamId);
+}
+
+void OOXMLFooterHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_HdrFtrRef_id:
+ msStreamId = val.getString();
+ break;
+ case NS_ooxml::LN_CT_HdrFtrRef_type:
+ mnType = val.getInt();
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLFooterHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLHeaderHandler
+ */
+OOXMLHeaderHandler::OOXMLHeaderHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext), msStreamId(), mnType(0)
+{
+}
+
+OOXMLHeaderHandler::~OOXMLHeaderHandler()
+{
+ mpFastContext->resolveHeader(mnType, msStreamId);
+}
+
+void OOXMLHeaderHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_HdrFtrRef_id:
+ msStreamId = val.getString();
+ break;
+ case NS_ooxml::LN_CT_HdrFtrRef_type:
+ mnType = val.getInt();
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLHeaderHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLBreakHandler
+ */
+OOXMLBreakHandler::OOXMLBreakHandler(Stream &rStream,
+ OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext), mnType(0), mnClear(0),
+ mrStream(rStream)
+{
+}
+
+OOXMLBreakHandler::~OOXMLBreakHandler()
+{
+ sal_uInt8 tmpBreak[1];
+ switch (mnType)
+ {
+ case NS_ooxml::LN_Value_ST_BrType_column:
+ tmpBreak[0] = 0x0E;
+ break;
+ case NS_ooxml::LN_Value_ST_BrType_page:
+ tmpBreak[0] = 0x0C;
+ break;
+ case NS_ooxml::LN_Value_ST_BrType_textWrapping:
+ default: // when no attribute type is present, the spec assume textWrapping
+ tmpBreak[0] = 0x0A;
+ break;
+ }
+ mrStream.text(&tmpBreak[0], 1);
+}
+
+void OOXMLBreakHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_Br_type:
+ mnType = val.getInt();
+ break;
+ case NS_ooxml::LN_CT_Br_clear:
+ mnClear = val.getInt();
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLBreakHandler::sprm(Sprm & /*sprm*/)
+{
+}
+
+/*
+ class OOXMLPictureHandler
+ */
+OOXMLPictureHandler::OOXMLPictureHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLPictureHandler::~OOXMLPictureHandler()
+{
+}
+
+void OOXMLPictureHandler::attribute(Id name, Value & val)
+{
+ if (name == NS_ooxml::LN_AG_Blob_r_embed)
+ mpFastContext->resolvePicture(val.getString());
+ else
+ {
+ writerfilter::Reference<Properties>::Pointer_t pProps
+ (val.getProperties());
+ if (pProps.get() != NULL)
+ pProps->resolve(*this);
+ }
+}
+
+void OOXMLPictureHandler::sprm(Sprm & rSprm)
+{
+ writerfilter::Reference<Properties>::Pointer_t pProps
+ (rSprm.getProps());
+
+ if (pProps.get() != NULL)
+ pProps->resolve(*this);
+}
+
+/**
+ class OOXMLHyperlinkHandler
+ */
+
+OOXMLHyperlinkHandler::OOXMLHyperlinkHandler(OOXMLFastContextHandler * pContext)
+: mpFastContext(pContext)
+{
+}
+
+OOXMLHyperlinkHandler::~OOXMLHyperlinkHandler()
+{
+ ::rtl::OUString sReturn(RTL_CONSTASCII_USTRINGPARAM(" HYPERLINK \""));
+
+ sReturn += mURL;
+ sReturn += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
+ sReturn += mFieldCode;
+
+ mpFastContext->characters(sReturn);
+}
+
+void OOXMLHyperlinkHandler::attribute(Id name, Value & val)
+{
+ switch (name)
+ {
+ case NS_ooxml::LN_CT_Hyperlink_tgtFrame:
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\t \""));
+ mFieldCode += val.getString();
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
+ break;
+ case NS_ooxml::LN_CT_Hyperlink_tooltip:
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\o \""));
+ mFieldCode += val.getString();
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
+ break;
+ case NS_ooxml::LN_CT_Hyperlink_docLocation:
+ break;
+ case NS_ooxml::LN_CT_Hyperlink_history:
+ break;
+ case NS_ooxml::LN_CT_Hyperlink_anchor:
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" \\l \""));
+ mFieldCode += val.getString();
+ mFieldCode += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\""));
+ break;
+ case NS_ooxml::LN_CT_Hyperlink_r_id:
+ mURL = mpFastContext->getTargetForId(val.getString());
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLHyperlinkHandler::sprm(Sprm & /*rSprm*/)
+{
+}
+}}
diff --git a/writerfilter/source/ooxml/Handler.hxx b/writerfilter/source/ooxml/Handler.hxx
new file mode 100644
index 000000000000..372683c0b0cf
--- /dev/null
+++ b/writerfilter/source/ooxml/Handler.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_HANDLER_HXX
+#define INCLUDED_HANDLER_HXX
+
+#include <resourcemodel/WW8ResourceModel.hxx>
+#include "OOXMLFastContextHandler.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+class OOXMLFootnoteHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+
+public:
+ OOXMLFootnoteHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFootnoteHandler();
+
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLEndnoteHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+public:
+ OOXMLEndnoteHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLEndnoteHandler();
+
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLFooterHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+ ::rtl::OUString msStreamId;
+ sal_Int32 mnType;
+public:
+ OOXMLFooterHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFooterHandler();
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLHeaderHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+ ::rtl::OUString msStreamId;
+ sal_Int32 mnType;
+public:
+ OOXMLHeaderHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLHeaderHandler();
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLCommentHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+ ::rtl::OUString msStreamId;
+public:
+ OOXMLCommentHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLCommentHandler();
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLOLEHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+
+public:
+ OOXMLOLEHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLOLEHandler();
+
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLBreakHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+ sal_Int32 mnType, mnClear;
+ Stream & mrStream;
+public:
+ OOXMLBreakHandler(Stream & rStream, OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLBreakHandler();
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLPictureHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+public:
+ OOXMLPictureHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLPictureHandler();
+
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+class OOXMLHyperlinkHandler : public Properties
+{
+ OOXMLFastContextHandler * mpFastContext;
+ ::rtl::OUString mFieldCode;
+ ::rtl::OUString mURL;
+
+public:
+ OOXMLHyperlinkHandler(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLHyperlinkHandler();
+
+ virtual void attribute(Id name, Value & val);
+ virtual void sprm(Sprm & sprm);
+};
+
+
+}}
+#endif // INCLUDED_HANDLER_HXX
diff --git a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx
new file mode 100644
index 000000000000..d034a145a5bf
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#include "OOXMLBinaryObjectReference.hxx"
+#include <string.h>
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using namespace ::com::sun::star;
+
+OOXMLBinaryObjectReference::OOXMLBinaryObjectReference
+(OOXMLStream::Pointer_t pStream)
+: mpStream(pStream), mbRead(false)
+{
+}
+
+OOXMLBinaryObjectReference::~OOXMLBinaryObjectReference()
+{
+}
+
+void OOXMLBinaryObjectReference::read()
+{
+ sal_uInt32 nMaxReadBytes = 1024*1024;
+ uno::Sequence<sal_Int8> aSeq(nMaxReadBytes);
+ uno::Reference<io::XInputStream> xInputStream =
+ mpStream->getDocumentStream();
+
+ sal_uInt32 nSize = 0;
+ sal_uInt32 nOldSize = 0;
+ sal_uInt32 nBytesRead = 0;
+
+ while ((nBytesRead = xInputStream->readSomeBytes(aSeq, nMaxReadBytes)) > 0)
+ {
+ nOldSize = nSize;
+ nSize += nBytesRead;
+ mSequence.realloc(nSize);
+
+ memcpy(&mSequence[nOldSize], aSeq.getArray(), nBytesRead);
+ }
+
+ mbRead = true;
+}
+
+void OOXMLBinaryObjectReference::resolve(BinaryObj & rHandler)
+{
+ if (! mbRead)
+ read();
+
+ writerfilter::Reference<Properties>::Pointer_t pRef =
+ writerfilter::Reference<Properties>::Pointer_t();
+
+ rHandler.data(reinterpret_cast<sal_uInt8 *>(&mSequence[0]),
+ mSequence.getLength(), pRef);
+}
+
+string OOXMLBinaryObjectReference::getType() const
+{
+ return "OOXMLBinaryObjectReference";
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx
new file mode 100644
index 000000000000..833c93bae9db
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_OOXML_BINARY_OBJECT_REFERENCE_HXX
+#define INCLUDED_OOXML_BINARY_OBJECT_REFERENCE_HXX
+
+#include <resourcemodel/WW8ResourceModel.hxx>
+#include <ooxml/OOXMLDocument.hxx>
+
+namespace writerfilter {
+namespace ooxml
+{
+class OOXMLBinaryObjectReference :
+ public writerfilter::Reference<BinaryObj>
+{
+ OOXMLStream::Pointer_t mpStream;
+ uno::Sequence<sal_Int8> mSequence;
+ bool mbRead;
+
+ void read();
+
+public:
+ OOXMLBinaryObjectReference(OOXMLStream::Pointer_t pStream);
+ virtual ~OOXMLBinaryObjectReference();
+
+ virtual void resolve(BinaryObj & rHandler);
+
+ virtual string getType() const;
+};
+}}
+
+#endif // INCLUDED_OOXML_BINARY_OBJECT_REFERENCE_HXX
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
new file mode 100644
index 000000000000..248334136de5
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -0,0 +1,410 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <com/sun/star/xml/sax/XParser.hpp>
+
+#include <com/sun/star/xml/sax/SAXException.hpp>
+#include <doctok/resourceids.hxx>
+#include <ooxml/resourceids.hxx>
+#include "OOXMLDocumentImpl.hxx"
+#include "OOXMLBinaryObjectReference.hxx"
+#include "OOXMLFastDocumentHandler.hxx"
+#include "OOXMLPropertySetImpl.hxx"
+#include "ooxmlLoggers.hxx"
+
+#include <iostream>
+
+using ::com::sun::star::xml::sax::SAXException;
+namespace writerfilter {
+namespace ooxml
+{
+
+#ifdef DEBUG
+TagLogger::Pointer_t debug_logger(TagLogger::getInstance("DEBUG"));
+#endif
+
+using namespace ::std;
+
+OOXMLDocumentImpl::OOXMLDocumentImpl
+(OOXMLStream::Pointer_t pStream)
+: mpStream(pStream), mXNoteType(0), mbIsSubstream( false )
+{
+}
+
+OOXMLDocumentImpl::~OOXMLDocumentImpl()
+{
+}
+
+void OOXMLDocumentImpl::resolveFastSubStream(Stream & rStreamHandler,
+ OOXMLStream::StreamType_t nType)
+{
+ OOXMLStream::Pointer_t pStream
+ (OOXMLDocumentFactory::createStream(mpStream, nType));
+
+ uno::Reference< xml::sax::XFastParser > xParser
+ (mpStream->getFastParser());
+
+ if (xParser.is())
+ {
+ uno::Reference<uno::XComponentContext> xContext(mpStream->getContext());
+ OOXMLFastDocumentHandler * pDocHandler =
+ new OOXMLFastDocumentHandler(xContext);
+ pDocHandler->setStream(&rStreamHandler);
+ pDocHandler->setDocument(this);
+ pDocHandler->setXNoteId(msXNoteId);
+
+ uno::Reference < xml::sax::XFastDocumentHandler > xDocumentHandler
+ (pDocHandler);
+ uno::Reference < xml::sax::XFastTokenHandler > xTokenHandler
+ (mpStream->getFastTokenHandler(xContext));
+
+ xParser->setFastDocumentHandler(xDocumentHandler);
+ xParser->setTokenHandler(xTokenHandler);
+
+ uno::Reference<io::XInputStream> xInputStream =
+ pStream->getDocumentStream();
+
+ if (xInputStream.is())
+ {
+ struct xml::sax::InputSource oInputSource;
+ oInputSource.aInputStream = xInputStream;
+ xParser->parseStream(oInputSource);
+
+ xInputStream->closeInput();
+ }
+ }
+}
+
+void OOXMLDocumentImpl::resolveFastSubStreamWithId(Stream & rStream,
+ writerfilter::Reference<Stream>::Pointer_t pStream,
+ sal_uInt32 nId)
+{
+ rStream.substream(nId, pStream);
+}
+
+void OOXMLDocumentImpl::setXNoteId(const rtl::OUString & rId)
+{
+ msXNoteId = rId;
+}
+
+const rtl::OUString & OOXMLDocumentImpl::getXNoteId() const
+{
+ return msXNoteId;
+}
+
+void OOXMLDocumentImpl::setXNoteType(const Id & nId)
+{
+ mXNoteType = nId;
+}
+
+const Id & OOXMLDocumentImpl::getXNoteType() const
+{
+ return mXNoteType;
+}
+
+const ::rtl::OUString & OOXMLDocumentImpl::getTarget() const
+{
+ return mpStream->getTarget();
+}
+
+writerfilter::Reference<Stream>::Pointer_t
+OOXMLDocumentImpl::getSubStream(const rtl::OUString & rId)
+{
+ OOXMLStream::Pointer_t pStream
+ (OOXMLDocumentFactory::createStream(mpStream, rId));
+
+ OOXMLDocumentImpl * pTemp;
+ writerfilter::Reference<Stream>::Pointer_t pRet( pTemp = new OOXMLDocumentImpl(pStream) );
+ pTemp->setModel(mxModel);
+ pTemp->setDrawPage(mxDrawPage);
+ pTemp->setIsSubstream( true );
+ return pRet;
+}
+
+writerfilter::Reference<Stream>::Pointer_t
+OOXMLDocumentImpl::getXNoteStream(OOXMLStream::StreamType_t nType, const Id & rType,
+ const rtl::OUString & rId)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("getXNoteStream");
+ debug_logger->attribute("id", rId);
+ debug_logger->endElement("getXNoteStream");
+#endif
+
+ OOXMLStream::Pointer_t pStream =
+ (OOXMLDocumentFactory::createStream(mpStream, nType));
+ OOXMLDocumentImpl * pDocument = new OOXMLDocumentImpl(pStream);
+ pDocument->setXNoteId(rId);
+ pDocument->setXNoteType(rType);
+
+ return writerfilter::Reference<Stream>::Pointer_t(pDocument);
+}
+
+void OOXMLDocumentImpl::resolveFootnote(Stream & rStream,
+ const Id & rType,
+ const rtl::OUString & rNoteId)
+{
+ writerfilter::Reference<Stream>::Pointer_t pStream =
+ getXNoteStream(OOXMLStream::FOOTNOTES, rType, rNoteId);
+
+ Id nId;
+ switch (rType)
+ {
+ case NS_ooxml::LN_Value_wordprocessingml_ST_FtnEdn_separator:
+ case NS_ooxml::LN_Value_wordprocessingml_ST_FtnEdn_continuationSeparator:
+ nId = rType;
+ break;
+ default:
+ nId = NS_rtf::LN_footnote;
+ break;
+ }
+
+ resolveFastSubStreamWithId(rStream, pStream, nId);
+}
+
+void OOXMLDocumentImpl::resolveEndnote(Stream & rStream,
+ const Id & rType,
+ const rtl::OUString & rNoteId)
+{
+ writerfilter::Reference<Stream>::Pointer_t pStream =
+ getXNoteStream(OOXMLStream::ENDNOTES, rType, rNoteId);
+
+ Id nId;
+ switch (rType)
+ {
+ case NS_ooxml::LN_Value_wordprocessingml_ST_FtnEdn_separator:
+ case NS_ooxml::LN_Value_wordprocessingml_ST_FtnEdn_continuationSeparator:
+ nId = rType;
+ break;
+ default:
+ nId = NS_rtf::LN_endnote;
+ break;
+ }
+
+ resolveFastSubStreamWithId(rStream, pStream, nId);
+}
+
+void OOXMLDocumentImpl::resolveComment(Stream & rStream,
+ const rtl::OUString & rId)
+{
+ writerfilter::Reference<Stream>::Pointer_t pStream =
+ getXNoteStream(OOXMLStream::COMMENTS, 0, rId);
+
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_annotation);
+}
+
+OOXMLPropertySet * OOXMLDocumentImpl::getPicturePropSet
+(const ::rtl::OUString & rId)
+{
+ OOXMLStream::Pointer_t pStream
+ (OOXMLDocumentFactory::createStream(mpStream, rId));
+
+ writerfilter::Reference<BinaryObj>::Pointer_t pPicture
+ (new OOXMLBinaryObjectReference(pStream));
+
+ OOXMLValue::Pointer_t pPayloadValue(new OOXMLBinaryValue(pPicture));
+
+ OOXMLProperty::Pointer_t pPayloadProperty
+ (new OOXMLPropertyImpl(NS_rtf::LN_payload, pPayloadValue,
+ OOXMLPropertyImpl::ATTRIBUTE));
+
+ OOXMLPropertySet::Pointer_t pBlipSet(new OOXMLPropertySetImpl());
+
+ pBlipSet->add(pPayloadProperty);
+
+ OOXMLValue::Pointer_t pBlipValue(new OOXMLPropertySetValue(pBlipSet));
+
+ OOXMLProperty::Pointer_t pBlipProperty
+ (new OOXMLPropertyImpl(NS_rtf::LN_blip, pBlipValue,
+ OOXMLPropertyImpl::ATTRIBUTE));
+
+ OOXMLPropertySet * pProps = new OOXMLPropertySetImpl();
+
+ pProps->add(pBlipProperty);
+
+ return pProps;
+}
+
+void OOXMLDocumentImpl::resolvePicture(Stream & rStream,
+ const rtl::OUString & rId)
+{
+ OOXMLPropertySet * pProps = getPicturePropSet(rId);
+
+ rStream.props(writerfilter::Reference<Properties>::Pointer_t(pProps));
+}
+
+::rtl::OUString OOXMLDocumentImpl::getTargetForId(const ::rtl::OUString & rId)
+{
+ return mpStream->getTargetForId(rId);
+}
+
+void OOXMLDocumentImpl::resolveHeader(Stream & rStream,
+ const sal_Int32 type,
+ const rtl::OUString & rId)
+{
+ writerfilter::Reference<Stream>::Pointer_t pStream =
+ getSubStream(rId);
+ switch (type)
+ {
+ case NS_ooxml::LN_Value_ST_HrdFtr_even:
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_headerl);
+ break;
+ case NS_ooxml::LN_Value_ST_HrdFtr_default: // here we assume that default is right, but not necessarily true :-(
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_headerr);
+ break;
+ case NS_ooxml::LN_Value_ST_HrdFtr_first:
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_headerf);
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLDocumentImpl::resolveFooter(Stream & rStream,
+ const sal_Int32 type,
+ const rtl::OUString & rId)
+{
+ writerfilter::Reference<Stream>::Pointer_t pStream =
+ getSubStream(rId);
+
+ switch (type)
+ {
+ case NS_ooxml::LN_Value_ST_HrdFtr_even:
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_footerl);
+ break;
+ case NS_ooxml::LN_Value_ST_HrdFtr_default: // here we assume that default is right, but not necessarily true :-(
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_footerr);
+ break;
+ case NS_ooxml::LN_Value_ST_HrdFtr_first:
+ resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_footerf);
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLDocumentImpl::resolve(Stream & rStream)
+{
+#ifdef DEBUG_RESOLVE
+ debug_logger->startElement("OOXMLDocumentImpl.resolve");
+#endif
+
+ uno::Reference< xml::sax::XFastParser > xParser
+ (mpStream->getFastParser());
+
+ if (xParser.is())
+ {
+ uno::Reference<uno::XComponentContext> xContext(mpStream->getContext());
+
+ OOXMLFastDocumentHandler * pDocHandler =
+ new OOXMLFastDocumentHandler(xContext);
+ pDocHandler->setStream(&rStream);
+ pDocHandler->setDocument(this);
+ pDocHandler->setXNoteId(msXNoteId);
+ pDocHandler->setIsSubstream( mbIsSubstream );
+ uno::Reference < xml::sax::XFastDocumentHandler > xDocumentHandler
+ (pDocHandler);
+ uno::Reference < xml::sax::XFastTokenHandler > xTokenHandler
+ (mpStream->getFastTokenHandler(xContext));
+
+ resolveFastSubStream(rStream, OOXMLStream::SETTINGS);
+ resolveFastSubStream(rStream, OOXMLStream::THEME);
+ resolveFastSubStream(rStream, OOXMLStream::FONTTABLE);
+ resolveFastSubStream(rStream, OOXMLStream::STYLES);
+ resolveFastSubStream(rStream, OOXMLStream::NUMBERING);
+
+ xParser->setFastDocumentHandler( xDocumentHandler );
+ xParser->setTokenHandler( xTokenHandler );
+
+ xml::sax::InputSource aParserInput;
+ aParserInput.aInputStream = mpStream->getDocumentStream();
+ try
+ {
+ xParser->parseStream(aParserInput);
+ }
+ catch (...) {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("exception");
+#endif
+ }
+ }
+
+#ifdef DEBUG_RESOLVE
+ debug_logger->endElement("OOXMLDocumentImpl.resolve");
+#endif
+}
+
+uno::Reference<io::XInputStream> OOXMLDocumentImpl::getInputStreamForId(const ::rtl::OUString & rId)
+{
+ OOXMLStream::Pointer_t pStream(OOXMLDocumentFactory::createStream(mpStream, rId));
+
+ return pStream->getDocumentStream();
+}
+
+string OOXMLDocumentImpl::getType() const
+{
+ return "OOXMLDocumentImpl";
+}
+
+void OOXMLDocumentImpl::setModel(uno::Reference<frame::XModel> xModel)
+{
+ mxModel.set(xModel);
+}
+
+uno::Reference<frame::XModel> OOXMLDocumentImpl::getModel()
+{
+ return mxModel;
+}
+
+void OOXMLDocumentImpl::setDrawPage(uno::Reference<drawing::XDrawPage> xDrawPage)
+{
+ mxDrawPage.set(xDrawPage);
+}
+
+uno::Reference<drawing::XDrawPage> OOXMLDocumentImpl::getDrawPage()
+{
+ return mxDrawPage;
+}
+
+uno::Reference<io::XInputStream> OOXMLDocumentImpl::getInputStream()
+{
+ return mpStream->getDocumentStream();
+}
+
+uno::Reference<io::XInputStream> OOXMLDocumentImpl::getStorageStream()
+{
+ return mpStream->getStorageStream();
+}
+
+OOXMLDocument *
+OOXMLDocumentFactory::createDocument
+(OOXMLStream::Pointer_t pStream)
+{
+ return new OOXMLDocumentImpl(pStream);
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
new file mode 100644
index 000000000000..5da9678c792b
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_OOXML_DOCUMENT_IMPL_HXX
+#define INCLUDED_OOXML_DOCUMENT_IMPL_HXX
+
+#include <ooxml/OOXMLDocument.hxx>
+
+#ifndef _COM_SUN_STAR_XML_SAX_XFAST_TOKEN_HANDLER_HPP_
+#include <com/sun/star/xml/sax/XFastTokenHandler.hpp>
+#endif
+
+#include "OOXMLPropertySet.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using namespace ::com::sun::star;
+
+class OOXMLDocumentImpl : public OOXMLDocument
+{
+ OOXMLStream::Pointer_t mpStream;
+ rtl::OUString msXNoteId;
+ Id mXNoteType;
+
+ uno::Reference<frame::XModel> mxModel;
+ uno::Reference<drawing::XDrawPage> mxDrawPage;
+
+ bool mbIsSubstream;
+
+protected:
+ virtual void resolveFastSubStream(Stream & rStream,
+ OOXMLStream::StreamType_t nType);
+
+ virtual void resolveFastSubStreamWithId(Stream & rStream,
+ writerfilter::Reference<Stream>::Pointer_t pStream,
+ sal_uInt32 nId);
+
+ writerfilter::Reference<Stream>::Pointer_t
+ getSubStream(const rtl::OUString & rId);
+
+ writerfilter::Reference<Stream>::Pointer_t
+ getXNoteStream(OOXMLStream::StreamType_t nType,
+ const Id & rType,
+ const rtl::OUString & rNoteId);
+
+ void setIsSubstream( bool bSubstream ) { mbIsSubstream = bSubstream; };
+
+public:
+ OOXMLDocumentImpl(OOXMLStream::Pointer_t pStream);
+ virtual ~OOXMLDocumentImpl();
+
+ virtual void resolve(Stream & rStream);
+
+ virtual string getType() const;
+
+ virtual void resolveFootnote(Stream & rStream,
+ const Id & rType,
+ const rtl::OUString & rNoteId);
+ virtual void resolveEndnote(Stream & rStream,
+ const Id & rType,
+ const rtl::OUString & rNoteId);
+ virtual void resolveHeader(Stream & rStream,
+ const sal_Int32 type,
+ const rtl::OUString & rId);
+ virtual void resolveFooter(Stream & rStream,
+ const sal_Int32 type,
+ const rtl::OUString & rId);
+
+ virtual void resolveComment(Stream & rStream, const rtl::OUString & rId);
+
+ virtual OOXMLPropertySet * getPicturePropSet
+ (const ::rtl::OUString & rId);
+ virtual void resolvePicture(Stream & rStream, const rtl::OUString & rId);
+
+ virtual ::rtl::OUString getTargetForId(const ::rtl::OUString & rId);
+
+ virtual void setModel(uno::Reference<frame::XModel> xModel);
+ virtual uno::Reference<frame::XModel> getModel();
+ virtual void setDrawPage(uno::Reference<drawing::XDrawPage> xDrawPage);
+ virtual uno::Reference<drawing::XDrawPage> getDrawPage();
+ virtual uno::Reference<io::XInputStream> getInputStream();
+ virtual uno::Reference<io::XInputStream> getStorageStream();
+ virtual uno::Reference<io::XInputStream> getInputStreamForId(const rtl::OUString & rId);
+ virtual void setXNoteId(const rtl::OUString & rId);
+ virtual const ::rtl::OUString & getXNoteId() const;
+ virtual void setXNoteType(const Id & rId);
+ virtual const Id & getXNoteType() const;
+ virtual const ::rtl::OUString & getTarget() const;
+};
+}}
+#endif // OOXML_DOCUMENT_IMPL_HXX
diff --git a/writerfilter/source/ooxml/OOXMLFactory.cxx b/writerfilter/source/ooxml/OOXMLFactory.cxx
new file mode 100755
index 000000000000..964d9e1cb5ee
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFactory.cxx
@@ -0,0 +1,339 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <rtl/instance.hxx>
+#include <osl/mutex.hxx>
+#include "OOXMLFactory.hxx"
+#include "OOXMLFastHelper.hxx"
+
+namespace writerfilter {
+namespace ooxml {
+
+AttributeInfo::AttributeInfo()
+:m_nResource(RT_NoResource), m_nRef(0)
+{
+}
+
+AttributeInfo::AttributeInfo(ResourceType_t nResource, Id nRef)
+ :m_nResource(nResource), m_nRef(nRef)
+{
+}
+
+CreateElement::CreateElement()
+:m_nResource(RT_NoResource), m_nId(0)
+{
+}
+
+CreateElement::CreateElement(ResourceType_t nResource, Id nId)
+: m_nResource(nResource), m_nId(nId)
+{
+}
+
+// class OOXMLFactory_ns
+
+OOXMLFactory_ns::~OOXMLFactory_ns()
+{
+}
+
+AttributeToResourceMapPointer OOXMLFactory_ns::getAttributeToResourceMap(Id nId)
+{
+ if (m_AttributesMap.find(nId) == m_AttributesMap.end())
+ m_AttributesMap[nId] = createAttributeToResourceMap(nId);
+
+ return m_AttributesMap[nId];
+}
+
+ListValueMapPointer OOXMLFactory_ns::getListValueMap(Id nId)
+{
+ if (m_ListValuesMap.find(nId) == m_ListValuesMap.end())
+ m_ListValuesMap[nId] = createListValueMap(nId);
+
+ return m_ListValuesMap[nId];
+}
+
+CreateElementMapPointer OOXMLFactory_ns::getCreateElementMap(Id nId)
+{
+ if (m_CreateElementsMap.find(nId) == m_CreateElementsMap.end())
+ m_CreateElementsMap[nId] = createCreateElementMap(nId);
+
+ return m_CreateElementsMap[nId];
+}
+
+TokenToIdMapPointer OOXMLFactory_ns::getTokenToIdMap(Id nId)
+{
+ if (m_TokenToIdsMap.find(nId) == m_TokenToIdsMap.end())
+ m_TokenToIdsMap[nId] = createTokenToIdMap(nId);
+
+ return m_TokenToIdsMap[nId];
+}
+
+string OOXMLFactory_ns::getDefineName(Id /*nId*/) const
+{
+ return "";
+}
+
+// class OOXMLFactory
+
+typedef rtl::Static< osl::Mutex, OOXMLFactory > OOXMLFactory_Mutex;
+
+OOXMLFactory::Pointer_t OOXMLFactory::m_Instance;
+
+OOXMLFactory::OOXMLFactory()
+{
+ // multi-thread-safe mutex for all platforms
+
+ osl::MutexGuard aGuard(OOXMLFactory_Mutex::get());
+}
+
+OOXMLFactory::~OOXMLFactory()
+{
+}
+
+OOXMLFactory::Pointer_t OOXMLFactory::getInstance()
+{
+ if (m_Instance.get() == NULL)
+ m_Instance.reset(new OOXMLFactory());
+
+ return m_Instance;
+}
+
+void OOXMLFactory::attributes(OOXMLFastContextHandler * pHandler,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+{
+ Id nDefine = pHandler->getDefine();
+ OOXMLFactory_ns::Pointer_t pFactory = getFactoryForNamespace(nDefine);
+
+ if (pFactory.get() != NULL)
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->startElement("attributes");
+ debug_logger->attribute("define", pFactory->getDefineName(nDefine));
+ char sBuffer[256];
+ snprintf(sBuffer, sizeof(sBuffer), "%08" SAL_PRIxUINT32, nDefine);
+ debug_logger->attribute("define-num", sBuffer);
+#endif
+
+ TokenToIdMapPointer pTokenToIdMap = pFactory->getTokenToIdMap(nDefine);
+ AttributeToResourceMapPointer pMap = pFactory->getAttributeToResourceMap(nDefine);
+
+ AttributeToResourceMap::const_iterator aIt;
+ AttributeToResourceMap::const_iterator aEndIt = pMap->end();
+
+ for (aIt = pMap->begin(); aIt != aEndIt; aIt++)
+ {
+ Id nId = (*pTokenToIdMap)[aIt->first];
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->startElement("attribute");
+ debug_logger->attribute("name", fastTokenToId(aIt->first));
+ debug_logger->attribute("tokenid", (*QNameToString::Instance())(nId));
+ snprintf(sBuffer, sizeof(sBuffer), "%08" SAL_PRIxUINT32, nId);
+ debug_logger->attribute("tokenid-num", sBuffer);
+#endif
+ if (Attribs->hasAttribute(aIt->first))
+ {
+ switch (aIt->second.m_nResource)
+ {
+ case RT_Boolean:
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->element("boolean");
+#endif
+ ::rtl::OUString aValue(Attribs->getValue(aIt->first));
+ OOXMLFastHelper<OOXMLBooleanValue>::newProperty(pHandler, nId, aValue);
+
+ OOXMLValue::Pointer_t pValue(new OOXMLBooleanValue(aValue));
+ pFactory->attributeAction(pHandler, aIt->first, pValue);
+ }
+ break;
+ case RT_String:
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->element("string");
+#endif
+ ::rtl::OUString aValue(Attribs->getValue(aIt->first));
+ OOXMLFastHelper<OOXMLStringValue>::newProperty
+ (pHandler, nId, aValue);
+
+ OOXMLValue::Pointer_t pValue(new OOXMLStringValue(aValue));
+ pFactory->attributeAction(pHandler, aIt->first, pValue);
+ }
+ break;
+ case RT_Integer:
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->element("integer");
+#endif
+ ::rtl::OUString aValue(Attribs->getValue(aIt->first));
+ OOXMLFastHelper<OOXMLIntegerValue>::newProperty
+ (pHandler, nId, aValue);
+
+ OOXMLValue::Pointer_t pValue(new OOXMLIntegerValue(aValue));
+ pFactory->attributeAction(pHandler, aIt->first, pValue);
+ }
+ break;
+ case RT_Hex:
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->element("hex");
+#endif
+ ::rtl::OUString aValue(Attribs->getValue(aIt->first));
+ OOXMLFastHelper<OOXMLHexValue>::newProperty
+ (pHandler, nId, aValue);
+
+ OOXMLValue::Pointer_t pValue(new OOXMLHexValue(aValue));
+ pFactory->attributeAction(pHandler, aIt->first, pValue);
+ }
+ break;
+ case RT_List:
+ {
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->startElement("list");
+#endif
+ ListValueMapPointer pListValueMap =
+ pFactory->getListValueMap(aIt->second.m_nRef);
+
+ if (pListValueMap.get() != NULL)
+ {
+ ::rtl::OUString aValue(Attribs->getValue(aIt->first));
+ sal_uInt32 nValue = (*pListValueMap)[aValue];
+
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->attribute("value", aValue);
+ debug_logger->attribute("value-num", nValue);
+#endif
+
+ OOXMLFastHelper<OOXMLIntegerValue>::newProperty
+ (pHandler, nId, nValue);
+
+ OOXMLValue::Pointer_t pValue(new OOXMLIntegerValue(nValue));
+ pFactory->attributeAction(pHandler, aIt->first, pValue);
+ }
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->endElement("list");
+#endif
+ }
+ break;
+ default:
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->element("unknown-attribute-type");
+#endif
+ break;
+ }
+ }
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->endElement("attribute");
+#endif
+ }
+
+#ifdef DEBUG_ATTRIBUTES
+ debug_logger->endElement("attributes");
+#endif
+ }
+}
+
+uno::Reference< xml::sax::XFastContextHandler>
+OOXMLFactory::createFastChildContext(OOXMLFastContextHandler * pHandler,
+ Token_t Element)
+{
+ Id nDefine = pHandler->getDefine();
+
+ OOXMLFactory_ns::Pointer_t pFactory = getFactoryForNamespace(nDefine);
+
+ uno::Reference< xml::sax::XFastContextHandler> ret;
+
+ //Avoid handling unknown tokens and recursing to death
+ if ((Element & 0xffff) < OOXML_FAST_TOKENS_END)
+ ret = createFastChildContextFromFactory(pHandler, pFactory, Element);
+
+ return ret;
+}
+
+void OOXMLFactory::characters(OOXMLFastContextHandler * pHandler,
+ const ::rtl::OUString & rString)
+{
+ Id nDefine = pHandler->getDefine();
+ OOXMLFactory_ns::Pointer_t pFactory = getFactoryForNamespace(nDefine);
+
+ if (pFactory.get() != NULL)
+ {
+ pFactory->charactersAction(pHandler, rString);
+ }
+}
+
+void OOXMLFactory::startAction(OOXMLFastContextHandler * pHandler, Token_t /*nToken*/)
+{
+ Id nDefine = pHandler->getDefine();
+ OOXMLFactory_ns::Pointer_t pFactory = getFactoryForNamespace(nDefine);
+
+ if (pFactory.get() != NULL)
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("factory-startAction");
+#endif
+ pFactory->startAction(pHandler);
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("factory-startAction");
+#endif
+ }
+}
+
+void OOXMLFactory::endAction(OOXMLFastContextHandler * pHandler, Token_t /*nToken*/)
+{
+ Id nDefine = pHandler->getDefine();
+ OOXMLFactory_ns::Pointer_t pFactory = getFactoryForNamespace(nDefine);
+
+ if (pFactory.get() != NULL)
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("factory-endAction");
+#endif
+ pFactory->endAction(pHandler);
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("factory-endAction");
+#endif
+ }
+}
+
+void OOXMLFactory_ns::startAction(OOXMLFastContextHandler *)
+{
+}
+
+void OOXMLFactory_ns::endAction(OOXMLFastContextHandler *)
+{
+}
+
+void OOXMLFactory_ns::charactersAction(OOXMLFastContextHandler *, const ::rtl::OUString &)
+{
+}
+
+void OOXMLFactory_ns::attributeAction(OOXMLFastContextHandler *, Token_t, OOXMLValue::Pointer_t)
+{
+}
+
+}
+}
+
diff --git a/writerfilter/source/ooxml/OOXMLFactory.hxx b/writerfilter/source/ooxml/OOXMLFactory.hxx
new file mode 100755
index 000000000000..0558436ab793
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFactory.hxx
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_OOXML_FACTORY_HXX
+#define INCLUDED_OOXML_FACTORY_HXX
+
+#include <hash_map>
+#include <boost/shared_ptr.hpp>
+
+#ifndef INCLUDED_WW8_RESOURCE_MODEL_HXX
+#include <resourcemodel/WW8ResourceModel.hxx>
+#endif
+
+#ifndef INCLUDED_OOXML_FAST_TOKENS_HXX
+#include <ooxml/OOXMLFastTokens.hxx>
+#endif
+
+#ifndef INCLUDED_OOXML_FAST_CONTEXT_HANDLER_HXX
+#include "OOXMLFastContextHandler.hxx"
+#endif
+
+namespace writerfilter {
+namespace ooxml {
+
+using namespace std;
+
+enum ResourceType_t {
+ RT_NoResource,
+ RT_Table,
+ RT_Stream,
+ RT_List,
+ RT_Integer,
+ RT_Properties,
+ RT_Hex,
+ RT_String,
+ RT_Shape,
+ RT_Boolean,
+ RT_HexValue,
+ RT_Value,
+ RT_XNote,
+ RT_TextTableCell,
+ RT_TextTableRow,
+ RT_TextTable,
+ RT_PropertyTable,
+ RT_Any
+};
+
+struct AttributeInfo
+{
+ ResourceType_t m_nResource;
+ Id m_nRef;
+
+ AttributeInfo(ResourceType_t nResource, Id nRef);
+ AttributeInfo();
+};
+
+typedef hash_map<Token_t, AttributeInfo> AttributeToResourceMap;
+typedef boost::shared_ptr<AttributeToResourceMap> AttributeToResourceMapPointer;
+typedef hash_map<Id, AttributeToResourceMapPointer> AttributesMap;
+
+typedef hash_map<rtl::OUString, sal_Int32, ::rtl::OUStringHash> ListValueMap;
+typedef boost::shared_ptr<ListValueMap> ListValueMapPointer;
+typedef hash_map<Id, ListValueMapPointer> ListValuesMap;
+
+struct CreateElement
+{
+ ResourceType_t m_nResource;
+ Id m_nId;
+
+ CreateElement(ResourceType_t nResource, Id nId);
+ CreateElement();
+};
+
+typedef hash_map<Token_t, CreateElement> CreateElementMap;
+typedef boost::shared_ptr<CreateElementMap> CreateElementMapPointer;
+typedef hash_map<Id, CreateElementMapPointer> CreateElementsMap;
+typedef hash_map<Id, string> IdToStringMap;
+typedef boost::shared_ptr<IdToStringMap> IdToStringMapPointer;
+
+typedef hash_map<Id, Token_t> TokenToIdMap;
+typedef boost::shared_ptr<TokenToIdMap> TokenToIdMapPointer;
+typedef hash_map<Id, TokenToIdMapPointer> TokenToIdsMap;
+
+class OOXMLFactory_ns {
+public:
+ typedef boost::shared_ptr<OOXMLFactory_ns> Pointer_t;
+
+ virtual void startAction(OOXMLFastContextHandler * pHandler);
+ virtual void charactersAction(OOXMLFastContextHandler * pHandler, const ::rtl::OUString & rString);
+ virtual void endAction(OOXMLFastContextHandler * pHandler);
+ virtual void attributeAction(OOXMLFastContextHandler * pHandler, Token_t nToken, OOXMLValue::Pointer_t pValue);
+ virtual string getDefineName(Id nId) const;
+
+ AttributeToResourceMapPointer getAttributeToResourceMap(Id nId);
+ ListValueMapPointer getListValueMap(Id nId);
+ CreateElementMapPointer getCreateElementMap(Id nId);
+ TokenToIdMapPointer getTokenToIdMap(Id nId);
+
+protected:
+ virtual ~OOXMLFactory_ns();
+
+ AttributesMap m_AttributesMap;
+ ListValuesMap m_ListValuesMap;
+ CreateElementsMap m_CreateElementsMap;
+ TokenToIdsMap m_TokenToIdsMap;
+
+ virtual AttributeToResourceMapPointer createAttributeToResourceMap(Id nId) = 0;
+ virtual ListValueMapPointer createListValueMap(Id nId) = 0;
+ virtual CreateElementMapPointer createCreateElementMap(Id nId) = 0;
+ virtual TokenToIdMapPointer createTokenToIdMap(Id nId) = 0;
+};
+
+class OOXMLFactory
+{
+public:
+ typedef boost::shared_ptr<OOXMLFactory> Pointer_t;
+
+ static Pointer_t getInstance();
+
+ uno::Reference< xml::sax::XFastContextHandler> createFastChildContext
+ (OOXMLFastContextHandler * pHandler, Token_t Element);
+
+ uno::Reference< xml::sax::XFastContextHandler> createFastChildContextFromStart
+ (OOXMLFastContextHandler * pHandler, Token_t Element);
+
+ void attributes(OOXMLFastContextHandler * pHandler,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs);
+
+ void characters(OOXMLFastContextHandler * pHandler,
+ const ::rtl::OUString & rString);
+
+ void startAction(OOXMLFastContextHandler * pHandler, Token_t nToken);
+ void endAction(OOXMLFastContextHandler * pHandler, Token_t nToken);
+
+ virtual ~OOXMLFactory();
+
+private:
+ static Pointer_t m_Instance;
+
+ OOXMLFactory();
+ OOXMLFactory_ns::Pointer_t getFactoryForNamespace(Id id);
+
+ uno::Reference< xml::sax::XFastContextHandler>
+ createFastChildContextFromFactory(OOXMLFastContextHandler * pHandler,
+ OOXMLFactory_ns::Pointer_t pFactory,
+ Token_t Element);
+};
+
+}
+}
+
+#endif // INCLUDED_OOXML_FACTORY_HXX
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
new file mode 100644
index 000000000000..20ee49258c00
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -0,0 +1,2380 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3sen
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <stdio.h>
+#include <iostream>
+#include <set>
+#include <rtl/uuid.h>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <resourcemodel/QNameToString.hxx>
+#include <resourcemodel/util.hxx>
+#include <ooxml/resourceids.hxx>
+#include <doctok/sprmids.hxx>
+#include <ooxml/OOXMLnamespaceids.hxx>
+#include "OOXMLFastContextHandler.hxx"
+#include "OOXMLFactory.hxx"
+#include "Handler.hxx"
+#include "ooxmlLoggers.hxx"
+
+static const ::rtl::OUString aEmptyStr;
+
+static const sal_uInt8 s0x7[] = { 0x7, 0x0 };
+static const sal_uInt8 s0xd[] = { 0xd, 0x0 };
+static const sal_uInt8 sCR[] = { 0xd, 0x0 };
+static const sal_uInt8 sFtnEdnRef[] = { 0x2, 0x0 };
+static const sal_uInt8 sFtnEdnSep[] = { 0x3, 0x0 };
+static const sal_uInt8 sFtnEdnCont[] = { 0x4, 0x0 };
+static const sal_uInt8 sTab[] = { 0x9, 0x0 };
+static const sal_uInt8 sPgNum[] = { 0x0, 0x0 };
+static const sal_uInt8 sFieldStart[] = { 0x13 };
+static const sal_uInt8 sFieldSep[] = { 0x14 };
+static const sal_uInt8 sFieldEnd[] = { 0x15 };
+static const sal_uInt8 sNoBreakHyphen[] = { 0x1e, 0x0 };
+static const sal_uInt8 sSoftHyphen[] = { 0x1f, 0x0 };
+
+namespace writerfilter {
+namespace ooxml
+{
+using ::com::sun::star::lang::XMultiComponentFactory;
+using namespace ::com::sun::star;
+using namespace ::std;
+
+static uno::Sequence< sal_Int8 > CreateUnoTunnelId()
+{
+ static osl::Mutex aCreateMutex;
+ osl::Guard<osl::Mutex> aGuard( aCreateMutex );
+ uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ return aSeq;
+}
+
+static string resourceToString
+(OOXMLFastContextHandler::ResourceEnum_t eResource)
+{
+ string sResult;
+
+ switch (eResource)
+ {
+ case OOXMLFastContextHandler::STREAM:
+ sResult = "Stream";
+ break;
+ case OOXMLFastContextHandler::PROPERTIES:
+ sResult = "Properties";
+ break;
+ case OOXMLFastContextHandler::TABLE:
+ sResult = "Table";
+ break;
+ case OOXMLFastContextHandler::SHAPE:
+ sResult = "Shape";
+ break;
+ default:
+ sResult = "??";
+ }
+
+ return sResult;
+}
+
+set<OOXMLFastContextHandler *> aSetContexts;
+
+#ifdef DEBUG
+class OOXMLIdToString : public IdToString
+{
+public:
+ OOXMLIdToString() : IdToString() {}
+ virtual ~OOXMLIdToString() {}
+
+ virtual string toString(const Id & rId) const
+ {
+ string s((*QNameToString::Instance())(rId));
+
+ if (s.size() == 0)
+ s = "(fasttoken)" + fastTokenToId(rId);
+ else
+ s = "(qname)" + s;
+
+ return s;
+ }
+};
+#endif
+
+/*
+ class OOXMLFastContextHandler
+ */
+
+sal_uInt32 OOXMLFastContextHandler::mnInstanceCount = 0;
+
+OOXMLFastContextHandler::OOXMLFastContextHandler
+(uno::Reference< uno::XComponentContext > const & context)
+: mpParent(NULL),
+ mId(0),
+ mnDefine(0),
+ mnToken(OOXML_FAST_TOKENS_END),
+ mpStream(NULL),
+ mnTableDepth(0),
+ mnInstanceNumber(mnInstanceCount),
+ mnRefCount(0),
+ m_xContext(context)
+{
+ mnInstanceCount++;
+ aSetContexts.insert(this);
+
+ if (mpParserState.get() == NULL)
+ mpParserState.reset(new OOXMLParserState());
+
+ mpParserState->incContextCount();
+}
+
+OOXMLFastContextHandler::OOXMLFastContextHandler
+(OOXMLFastContextHandler * pContext)
+: cppu::WeakImplHelper1<com::sun::star::xml::sax::XFastContextHandler>(),
+ mpParent(pContext),
+ mId(0),
+ mnDefine(0),
+ mnToken(OOXML_FAST_TOKENS_END),
+ mpStream(NULL),
+ mnTableDepth(0),
+ mnInstanceNumber(mnInstanceCount),
+ mnRefCount(0),
+ m_xContext(pContext->m_xContext)
+{
+ if (pContext != NULL)
+ {
+ mpStream = pContext->mpStream;
+ mpParserState = pContext->mpParserState;
+ mnTableDepth = pContext->mnTableDepth;
+ m_xContext = pContext->m_xContext;
+ }
+
+ if (mpParserState.get() == NULL)
+ mpParserState.reset(new OOXMLParserState());
+
+ mnInstanceCount++;
+ aSetContexts.insert(this);
+ mpParserState->incContextCount();
+}
+
+OOXMLFastContextHandler::~OOXMLFastContextHandler()
+{
+ aSetContexts.erase(this);
+}
+
+#ifdef DEBUG_MEMORY
+void SAL_CALL OOXMLFastContextHandler::acquire()
+ throw ()
+{
+ mnRefCount++;
+
+ static char buffer[256];
+ snprintf(buffer, sizeof(buffer), "%ld: %s: aquire(%ld)", mnInstanceNumber,
+ getType().c_str(), mnRefCount);
+ logger("MEMORY", buffer);
+
+ cppu::WeakImplHelper1<com::sun::star::xml::sax::XFastContextHandler>::acquire();
+}
+
+void SAL_CALL OOXMLFastContextHandler::release()
+ throw ()
+{
+ static char buffer[256];
+ snprintf(buffer, sizeof(buffer), "%s: release(%ld)", mnInstanceNumber,
+ getType().c_str(), mnRefCount);
+ logger("MEMORY", buffer);
+
+ cppu::WeakImplHelper1<com::sun::star::xml::sax::XFastContextHandler>::release();
+ mnRefCount--;
+}
+#endif
+
+// ::com::sun::star::xml::sax::XFastContextHandler:
+void SAL_CALL OOXMLFastContextHandler::startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("element");
+ debug_logger->attribute("token", fastTokenToId(Element));
+ debug_logger->attribute("type",getType());
+ debug_logger->startElement("at-start");
+ debug_logger->addTag(toTag());
+ debug_logger->endElement("at-start");
+#endif
+#ifdef DEBUG_MEMORY
+ static char buffer[256];
+ snprintf(buffer, sizeof(buffer), "%ld: startFastElement", mnInstanceNumber);
+ logger("MEMORY", buffer);
+#endif
+ attributes(Attribs);
+ lcl_startFastElement(Element, Attribs);
+}
+
+void SAL_CALL OOXMLFastContextHandler::startUnknownElement
+(const ::rtl::OUString & Namespace, const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ debug_logger->startElement("unknown-element");
+ debug_logger->attribute("namespace", Namespace);
+ debug_logger->attribute("name", Name);
+#else
+ (void) Namespace;
+ (void) Name;
+#endif
+}
+
+void SAL_CALL OOXMLFastContextHandler::endFastElement(Token_t Element)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ lcl_endFastElement(Element);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("at-end");
+ debug_logger->addTag(toTag());
+ debug_logger->endElement("at-end");
+ debug_logger->endElement("element");
+#endif
+#ifdef DEBUG_MEMORY
+ static char buffer[256];
+ snprintf(buffer, sizeof(buffer), "%ld: %s:endFastElement", mnInstanceNumber,
+ getType().c_str());
+ logger("MEMORY", buffer);
+#endif
+}
+
+void OOXMLFastContextHandler::lcl_startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ OOXMLFactory::getInstance()->startAction(this, Element);
+}
+
+void OOXMLFastContextHandler::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ debug_logger->startElement("endAction");
+ debug_logger->endElement("endAction");
+ debug_logger->startElement("token");
+ debug_logger->chars(fastTokenToId(Element));
+ debug_logger->endElement("token");
+#endif
+
+ OOXMLFactory::getInstance()->endAction(this, Element);
+}
+
+void SAL_CALL OOXMLFastContextHandler::endUnknownElement
+(const ::rtl::OUString & , const ::rtl::OUString & )
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("unknown-element");
+ debug_logger->endElement("unknown-element");
+#endif
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ OOXMLFastContextHandler::createFastChildContext
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ debug_logger->startElement("createFastChildContext");
+ debug_logger->attribute("token", fastTokenToId(Element));
+ debug_logger->attribute("type", getType());
+#endif
+
+ uno::Reference< xml::sax::XFastContextHandler > xResult
+ (lcl_createFastChildContext(Element, Attribs));
+
+#ifdef DEBUG_CONTEXT_STACK
+ debug_logger->endElement("createFastChildContext");
+#endif
+
+ return xResult;
+}
+
+uno::Reference< xml::sax::XFastContextHandler >
+ OOXMLFastContextHandler::lcl_createFastChildContext
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ return OOXMLFactory::getInstance()->createFastChildContext(this, Element);
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+OOXMLFastContextHandler::createUnknownChildContext
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("createUnknownChildContext");
+ debug_logger->attribute("namespace", Namespace);
+ debug_logger->attribute("name", Name);
+ debug_logger->endElement("createUnknownChildContext");
+#else
+ (void) Namespace;
+ (void) Name;
+#endif
+
+ return uno::Reference< xml::sax::XFastContextHandler >
+ (new OOXMLFastContextHandler(*const_cast<const OOXMLFastContextHandler *>(this)));
+}
+
+void SAL_CALL OOXMLFastContextHandler::characters
+(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ lcl_characters(aChars);
+}
+
+void OOXMLFastContextHandler::lcl_characters
+(const ::rtl::OUString & rString)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ OOXMLFactory::getInstance()->characters(this, rString);
+}
+
+const uno::Sequence< sal_Int8 > & OOXMLFastContextHandler::getUnoTunnelId()
+{
+ static uno::Sequence< sal_Int8 > aSeq = CreateUnoTunnelId();
+ return aSeq;
+}
+
+sal_Int64 SAL_CALL OOXMLFastContextHandler::getSomething( const uno::Sequence< sal_Int8 >& rId )
+ throw(uno::RuntimeException)
+{
+ if( rId.getLength() == 16
+ && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return sal::static_int_cast<sal_Int64>
+ (reinterpret_cast<sal_IntPtr>(this));
+ }
+
+ return 0x0;
+}
+
+void OOXMLFastContextHandler::setStream(Stream * pStream)
+{
+ mpStream = pStream;
+}
+
+OOXMLValue::Pointer_t OOXMLFastContextHandler::getValue() const
+{
+ return OOXMLValue::Pointer_t();
+}
+
+void OOXMLFastContextHandler::attributes
+(const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ OOXMLFactory::getInstance()->attributes(this, Attribs);
+}
+
+void OOXMLFastContextHandler::startAction(Token_t Element)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("startAction");
+#endif
+ lcl_startAction(Element);
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("startAction");
+#endif
+}
+
+void OOXMLFastContextHandler::lcl_startAction(Token_t Element)
+{
+ OOXMLFactory::getInstance()->startAction(this, Element);
+}
+
+void OOXMLFastContextHandler::endAction(Token_t Element)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("endAction");
+#endif
+ lcl_endAction(Element);
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("endAction");
+#endif
+}
+
+void OOXMLFastContextHandler::lcl_endAction(Token_t Element)
+{
+ OOXMLFactory::getInstance()->endAction(this, Element);
+}
+
+#ifdef DEBUG
+XMLTag::Pointer_t OOXMLFastContextHandler::toPropertiesTag
+ (OOXMLPropertySet::Pointer_t pProps)
+{
+ XMLTag::Pointer_t pTag;
+
+ if (pProps.get() != NULL)
+ {
+ PropertySetToTagHandler aHandler(IdToString::Pointer_t(new OOXMLIdToString()));
+
+ pProps->resolve(aHandler);
+ pTag = aHandler.getTag();
+ }
+
+ return pTag;
+}
+
+XMLTag::Pointer_t OOXMLFastContextHandler::toTag() const
+{
+ XMLTag::Pointer_t pTag(new XMLTag("context"));
+
+ static char sBuffer[128];
+ snprintf(sBuffer, sizeof(sBuffer), "%p", this);
+
+ pTag->addAttr("parent", sBuffer);
+ pTag->addAttr("type", getType());
+ pTag->addAttr("resource", getResourceString());
+ pTag->addAttr("token", fastTokenToId(getToken()));
+ pTag->addAttr("id", (*QNameToString::Instance())(getId()));
+
+ OOXMLValue::Pointer_t pVal(getValue());
+
+ if (pVal.get() != NULL)
+ pTag->addAttr("value", pVal->toString());
+ else
+ pTag->addAttr("value", "(null)");
+
+ XMLTag::Pointer_t pTagProps(toPropertiesTag(getPropertySet()));
+ if (pTagProps.get() != NULL)
+ pTag->addTag(pTagProps);
+
+ pTag->addTag(mpParserState->toTag());
+
+ return pTag;
+}
+
+string OOXMLFastContextHandler::toString() const
+{
+ return toTag()->toString();
+}
+#endif
+
+string OOXMLFastContextHandler::getResourceString() const
+{
+ return resourceToString(getResource());
+}
+
+void OOXMLFastContextHandler::setId(Id rId)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("setId");
+
+ static char sBuffer[256];
+ snprintf(sBuffer, sizeof(sBuffer), "%" SAL_PRIuUINT32, rId);
+
+ debug_logger->attribute("id", sBuffer);
+ debug_logger->chars((*QNameToString::Instance())(rId));
+ debug_logger->endElement("setId");
+#endif
+
+ mId = rId;
+}
+
+Id OOXMLFastContextHandler::getId() const
+{
+ return mId;
+}
+
+void OOXMLFastContextHandler::setDefine(Id nDefine)
+{
+ mnDefine = nDefine;
+}
+
+Id OOXMLFastContextHandler::getDefine() const
+{
+ return mnDefine;
+}
+
+OOXMLParserState::Pointer_t OOXMLFastContextHandler::getParserState() const
+{
+ return mpParserState;
+}
+
+void OOXMLFastContextHandler::setToken(Token_t nToken)
+{
+ mnToken = nToken;
+
+#ifdef DEBUG_CONTEXT_STACK
+ msTokenString = fastTokenToId(mnToken);
+#endif
+}
+
+Token_t OOXMLFastContextHandler::getToken() const
+{
+ return mnToken;
+}
+
+void OOXMLFastContextHandler::mark(const Id & rId, OOXMLValue::Pointer_t pVal)
+{
+ OOXMLPropertySetImpl::Pointer_t pPropSet(new OOXMLPropertySetImpl());
+ OOXMLPropertyImpl::Pointer_t pProperty
+ (new OOXMLPropertyImpl(rId, pVal, OOXMLPropertyImpl::ATTRIBUTE));
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("mark");
+ debug_logger->chars(xmlify(pProperty->toString()));
+ debug_logger->endElement("mark");
+#endif
+ pPropSet->add(pProperty);
+ mpStream->props(pPropSet);
+}
+
+void OOXMLFastContextHandler::setParent
+(OOXMLFastContextHandler * pParent)
+{
+ mpParent = pParent;
+}
+
+OOXMLPropertySet * OOXMLFastContextHandler::getPicturePropSet
+(const ::rtl::OUString & rId)
+{
+ return dynamic_cast<OOXMLDocumentImpl *>(mpParserState->getDocument())->
+ getPicturePropSet(rId);
+}
+
+void OOXMLFastContextHandler::sendTableDepth() const
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendTableDepth");
+#endif
+
+ if (mnTableDepth > 0)
+ {
+ OOXMLPropertySet * pProps = new OOXMLPropertySetImpl();
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(mnTableDepth));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PTableDepth, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(1));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PFInTable, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("props");
+ debug_logger->chars(pProps->toString());
+ debug_logger->endElement("props");
+#endif
+ mpStream->props(writerfilter::Reference<Properties>::Pointer_t(pProps));
+ }
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendTableDepth");
+#endif
+}
+
+void OOXMLFastContextHandler::setHandle()
+{
+ mpParserState->setHandle();
+ mpStream->info(mpParserState->getHandle());
+}
+
+void OOXMLFastContextHandler::startCharacterGroup()
+{
+ if (isForwardEvents())
+ {
+ if (mpParserState->isInCharacterGroup())
+ endCharacterGroup();
+
+ if (! mpParserState->isInParagraphGroup())
+ startParagraphGroup();
+
+ if (! mpParserState->isInCharacterGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("startCharacterGroup");
+#endif
+
+ mpStream->startCharacterGroup();
+ mpParserState->setInCharacterGroup(true);
+ mpParserState->resolveCharacterProperties(*mpStream);
+ }
+ }
+}
+
+void OOXMLFastContextHandler::endCharacterGroup()
+{
+ if (isForwardEvents() && mpParserState->isInCharacterGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("endCharacterGroup");
+#endif
+
+ mpStream->endCharacterGroup();
+ mpParserState->setInCharacterGroup(false);
+ }
+}
+
+void OOXMLFastContextHandler::startParagraphGroup()
+{
+ if (isForwardEvents())
+ {
+ if (mpParserState->isInParagraphGroup())
+ endParagraphGroup();
+
+ if (! mpParserState->isInSectionGroup())
+ startSectionGroup();
+
+ if (! mpParserState->isInParagraphGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("startParagraphGroup");
+#endif
+
+ mpStream->startParagraphGroup();
+ mpParserState->setInParagraphGroup(true);
+ }
+ }
+}
+
+void OOXMLFastContextHandler::endParagraphGroup()
+{
+ if (isForwardEvents())
+ {
+ if (mpParserState->isInCharacterGroup())
+ endCharacterGroup();
+
+ if (mpParserState->isInParagraphGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("endParagraphGroup");
+#endif
+ mpStream->endParagraphGroup();
+ mpParserState->setInParagraphGroup(false);
+ }
+ }
+}
+
+void OOXMLFastContextHandler::startSectionGroup()
+{
+ if (isForwardEvents())
+ {
+ if (mpParserState->isInSectionGroup())
+ endSectionGroup();
+
+ if (! mpParserState->isInSectionGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("startSectionGroup");
+#endif
+ mpStream->info(mpParserState->getHandle());
+ mpStream->startSectionGroup();
+ mpParserState->setInSectionGroup(true);
+ }
+ }
+}
+
+void OOXMLFastContextHandler::endSectionGroup()
+{
+ if (isForwardEvents())
+ {
+ if (mpParserState->isInParagraphGroup())
+ endParagraphGroup();
+
+ if (mpParserState->isInSectionGroup())
+ {
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("endSectionGroup");
+#endif
+ mpStream->endSectionGroup();
+ mpParserState->setInSectionGroup(false);
+ }
+ }
+}
+
+void OOXMLFastContextHandler::setLastParagraphInSection()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("setLastParagraphInSection");
+#endif
+
+ mpParserState->setLastParagraphInSection(true);
+ mpStream->markLastParagraphInSection( );
+}
+
+void OOXMLFastContextHandler::newProperty
+(const Id & /*nId*/, OOXMLValue::Pointer_t /*pVal*/)
+{
+}
+
+void OOXMLFastContextHandler::setPropertySet
+(OOXMLPropertySet::Pointer_t /* pPropertySet */)
+{
+}
+
+OOXMLPropertySet::Pointer_t OOXMLFastContextHandler::getPropertySet() const
+{
+ return OOXMLPropertySet::Pointer_t();
+}
+
+void OOXMLFastContextHandler::startField()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("startField");
+#endif
+ startCharacterGroup();
+ if (isForwardEvents())
+ mpStream->text(sFieldStart, 1);
+ endCharacterGroup();
+}
+
+void OOXMLFastContextHandler::fieldSeparator()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("fieldSeparator");
+#endif
+ startCharacterGroup();
+ if (isForwardEvents())
+ mpStream->text(sFieldSep, 1);
+ endCharacterGroup();
+}
+
+void OOXMLFastContextHandler::endField()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("endField");
+#endif
+ startCharacterGroup();
+ if (isForwardEvents())
+ mpStream->text(sFieldEnd, 1);
+ endCharacterGroup();
+}
+
+void OOXMLFastContextHandler::ftnednref()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("ftnednref");
+#endif
+ if (isForwardEvents())
+ mpStream->utext(sFtnEdnRef, 1);
+}
+
+void OOXMLFastContextHandler::ftnednsep()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("ftnednsep");
+#endif
+ if (isForwardEvents())
+ mpStream->utext(sFtnEdnSep, 1);
+}
+
+void OOXMLFastContextHandler::ftnedncont()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("ftnedncont");
+#endif
+ if (isForwardEvents())
+ mpStream->text(sFtnEdnCont, 1);
+}
+
+void OOXMLFastContextHandler::pgNum()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("pgNum");
+#endif
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sPgNum, 1);
+}
+
+void OOXMLFastContextHandler::tab()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("tab");
+#endif
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sTab, 1);
+}
+
+void OOXMLFastContextHandler::cr()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("cr");
+#endif
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sCR, 1);
+}
+
+void OOXMLFastContextHandler::noBreakHyphen()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("noBreakHyphen");
+#endif
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sNoBreakHyphen, 1);
+}
+
+void OOXMLFastContextHandler::softHyphen()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("softHyphen");
+#endif
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sSoftHyphen, 1);
+}
+
+void OOXMLFastContextHandler::handleLastParagraphInSection()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("handleLastParagraphInSection");
+#endif
+
+ if (mpParserState->isLastParagraphInSection())
+ {
+ mpParserState->setLastParagraphInSection(false);
+ startSectionGroup();
+ }
+}
+
+void OOXMLFastContextHandler::endOfParagraph()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("endOfParagraph");
+#endif
+ if (! mpParserState->isInCharacterGroup())
+ startCharacterGroup();
+ if (isForwardEvents())
+ mpStream->utext((const sal_uInt8*)sCR, 1);
+}
+
+void OOXMLFastContextHandler::text(const ::rtl::OUString & sText)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("text");
+ debug_logger->chars(sText);
+ debug_logger->endElement("text");
+#endif
+ if (isForwardEvents())
+ mpStream->utext(reinterpret_cast < const sal_uInt8 * >
+ (sText.getStr()),
+ sText.getLength());
+}
+
+void OOXMLFastContextHandler::propagateCharacterProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("propagateCharacterProperties");
+ debug_logger->addTag(toPropertiesTag(getPropertySet()));
+ debug_logger->endElement("propagateCharacterProperties");
+#endif
+
+ mpParserState->setCharacterProperties(getPropertySet());
+}
+
+void OOXMLFastContextHandler::propagateCharacterPropertiesAsSet(const Id & rId)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("propagateCharacterPropertiesAsSet");
+ debug_logger->addTag(toPropertiesTag(getPropertySet()));
+ debug_logger->endElement("propagateCharacterPropertiesAsSet");
+#endif
+
+ OOXMLValue::Pointer_t pValue(new OOXMLPropertySetValue(getPropertySet()));
+ OOXMLPropertySet::Pointer_t pPropertySet(new OOXMLPropertySetImpl());
+
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(rId, pValue, OOXMLPropertyImpl::SPRM));
+
+ pPropertySet->add(pProp);
+ mpParserState->setCharacterProperties(pPropertySet);
+}
+
+bool OOXMLFastContextHandler::propagatesProperties() const
+{
+ return false;
+}
+
+void OOXMLFastContextHandler::propagateCellProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("propagateCellProperties");
+#endif
+
+ mpParserState->setCellProperties(getPropertySet());
+}
+
+void OOXMLFastContextHandler::propagateRowProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("propagateRowProperties");
+#endif
+
+ mpParserState->setRowProperties(getPropertySet());
+}
+
+void OOXMLFastContextHandler::propagateTableProperties()
+{
+ OOXMLPropertySet::Pointer_t pProps = getPropertySet();
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("propagateTableProperties");
+ debug_logger->addTag(toPropertiesTag(pProps));
+ debug_logger->endElement("propagateTableProperties");
+#endif
+
+ mpParserState->setTableProperties(pProps);
+}
+
+void OOXMLFastContextHandler::sendCellProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendCellProperties");
+#endif
+
+ mpParserState->resolveCellProperties(*mpStream);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendCellProperties");
+#endif
+}
+
+void OOXMLFastContextHandler::sendRowProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendRowProperties");
+#endif
+
+ mpParserState->resolveRowProperties(*mpStream);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendRowProperties");
+#endif
+}
+
+void OOXMLFastContextHandler::sendTableProperties()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendTableProperties");
+#endif
+
+ mpParserState->resolveTableProperties(*mpStream);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendTableProperties");
+#endif
+}
+
+void OOXMLFastContextHandler::clearTableProps()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("clearTableProps");
+#endif
+
+ mpParserState->setTableProperties(OOXMLPropertySet::Pointer_t
+ (new OOXMLPropertySetImpl()));
+}
+
+void OOXMLFastContextHandler::sendPropertiesWithId(const Id & rId)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendPropertiesWithId");
+ debug_logger->attribute("id", fastTokenToId(rId));
+#endif
+
+ OOXMLValue::Pointer_t pValue(new OOXMLPropertySetValue(getPropertySet()));
+ OOXMLPropertySet::Pointer_t pPropertySet(new OOXMLPropertySetImpl());
+
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(rId, pValue, OOXMLPropertyImpl::SPRM));
+
+ pPropertySet->add(pProp);
+ mpStream->props(pPropertySet);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->addTag(toPropertiesTag(pPropertySet));
+ debug_logger->endElement("sendPropertiesWithId");
+#endif
+}
+
+void OOXMLFastContextHandler::clearProps()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("clearProps");
+#endif
+
+ setPropertySet(OOXMLPropertySet::Pointer_t(new OOXMLPropertySetImpl()));
+}
+
+void OOXMLFastContextHandler::setDefaultBooleanValue()
+{
+}
+
+void OOXMLFastContextHandler::setDefaultIntegerValue()
+{
+}
+
+void OOXMLFastContextHandler::setDefaultHexValue()
+{
+}
+
+void OOXMLFastContextHandler::setDefaultStringValue()
+{
+}
+
+void OOXMLFastContextHandler::setDocument(OOXMLDocument * pDocument)
+{
+ mpParserState->setDocument(pDocument);
+}
+
+OOXMLDocument * OOXMLFastContextHandler::getDocument()
+{
+ return mpParserState->getDocument();
+}
+
+void OOXMLFastContextHandler::setForwardEvents(bool bForwardEvents)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("setForwardEvents");
+
+ if (bForwardEvents)
+ debug_logger->chars("true");
+ else
+ debug_logger->chars("false");
+
+ debug_logger->endElement("setForwardEvents");
+#endif
+
+ mpParserState->setForwardEvents(bForwardEvents);
+}
+
+bool OOXMLFastContextHandler::isForwardEvents() const
+{
+ return mpParserState->isForwardEvents();
+}
+
+void OOXMLFastContextHandler::setXNoteId(const ::rtl::OUString & rId)
+{
+ mpParserState->setXNoteId(rId);
+}
+
+void OOXMLFastContextHandler::setXNoteId(OOXMLValue::Pointer_t pValue)
+{
+ mpParserState->setXNoteId(pValue->getString());
+}
+
+const rtl::OUString & OOXMLFastContextHandler::getXNoteId() const
+{
+ return mpParserState->getXNoteId();
+}
+
+void OOXMLFastContextHandler::resolveFootnote
+(const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolveFootnote
+ (*mpStream, 0, rId);
+}
+
+void OOXMLFastContextHandler::resolveEndnote(const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolveEndnote
+ (*mpStream, 0, rId);
+}
+
+void OOXMLFastContextHandler::resolveComment(const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolveComment(*mpStream, rId);
+}
+
+void OOXMLFastContextHandler::resolvePicture(const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolvePicture(*mpStream, rId);
+}
+
+void OOXMLFastContextHandler::resolveHeader
+(const sal_Int32 type, const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolveHeader(*mpStream, type, rId);
+}
+
+void OOXMLFastContextHandler::resolveFooter
+(const sal_Int32 type, const rtl::OUString & rId)
+{
+ mpParserState->getDocument()->resolveFooter(*mpStream, type, rId);
+}
+
+void OOXMLFastContextHandler::resolveOLE(const rtl::OUString & rId)
+{
+ uno::Reference<io::XInputStream> xInputStream
+ (mpParserState->getDocument()->getInputStreamForId(rId));
+
+ OOXMLValue::Pointer_t aValue(new OOXMLInputStreamValue(xInputStream));
+
+ newProperty(NS_ooxml::LN_inputstream, aValue);
+}
+
+::rtl::OUString OOXMLFastContextHandler::getTargetForId
+(const ::rtl::OUString & rId)
+{
+ return mpParserState->getDocument()->getTargetForId(rId);
+}
+
+void OOXMLFastContextHandler::resolvePropertySetAttrs()
+{
+}
+
+void OOXMLFastContextHandler::sendPropertyToParent()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendPropertyToParent");
+#endif
+
+ if (mpParent != NULL)
+ {
+ OOXMLPropertySet::Pointer_t pProps(mpParent->getPropertySet());
+
+ if (pProps.get() != NULL)
+ {
+ OOXMLProperty::Pointer_t
+ pProp(new OOXMLPropertyImpl(mId, getValue(),
+ OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->addTag(toPropertiesTag(pProps));
+#endif
+ }
+ }
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendPropertyToParent");
+#endif
+}
+
+void OOXMLFastContextHandler::sendPropertiesToParent()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("sendPropertiesToParent");
+#endif
+ if (mpParent != NULL)
+ {
+ OOXMLPropertySet::Pointer_t pParentProps(mpParent->getPropertySet());
+
+ if (pParentProps.get() != NULL)
+ {
+ OOXMLPropertySet::Pointer_t pProps(getPropertySet());
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("me");
+ debug_logger->addTag(toPropertiesTag(pProps));
+ debug_logger->endElement("me");
+#endif
+
+ if (pProps.get() != NULL)
+ {
+ OOXMLValue::Pointer_t pValue
+ (new OOXMLPropertySetValue(getPropertySet()));
+
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(getId(), pValue, OOXMLPropertyImpl::SPRM));
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("propertyForSet");
+ debug_logger->chars(pProp->toString());
+ debug_logger->endElement("propertyForSet");
+#endif
+
+ pParentProps->add(pProp);
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("parent");
+ debug_logger->addTag(toPropertiesTag(pParentProps));
+ debug_logger->endElement("parent");
+#endif
+ }
+ }
+ }
+#ifdef DEBUG_ELEMENT
+ debug_logger->endElement("sendPropertiesToParent");
+#endif
+}
+
+uno::Reference< uno::XComponentContext >
+OOXMLFastContextHandler::getComponentContext()
+{
+ return m_xContext;
+}
+
+/*
+ class OOXMLFastContextHandlerStream
+ */
+
+OOXMLFastContextHandlerStream::OOXMLFastContextHandlerStream
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext),
+ mpPropertySetAttrs(new OOXMLPropertySetImpl())
+{
+}
+
+OOXMLFastContextHandlerStream::~OOXMLFastContextHandlerStream()
+{
+}
+
+void OOXMLFastContextHandlerStream::newProperty(const Id & rId,
+ OOXMLValue::Pointer_t pVal)
+{
+ if (rId != 0x0)
+ {
+ OOXMLPropertyImpl::Pointer_t pProperty
+ (new OOXMLPropertyImpl(rId, pVal, OOXMLPropertyImpl::ATTRIBUTE));
+
+ mpPropertySetAttrs->add(pProperty);
+ }
+}
+
+void OOXMLFastContextHandlerStream::sendProperty(Id nId)
+{
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("sendProperty");
+ debug_logger->attribute("id", (*QNameToString::Instance())(nId));
+ debug_logger->chars(xmlify(getPropertySetAttrs()->toString()));
+ debug_logger->endElement("sendProperty");
+#endif
+
+ OOXMLPropertySetEntryToString aHandler(nId);
+ getPropertySetAttrs()->resolve(aHandler);
+ const ::rtl::OUString & sText = aHandler.getString();
+ mpStream->utext(reinterpret_cast < const sal_uInt8 * >
+ (sText.getStr()),
+ sText.getLength());
+}
+
+OOXMLPropertySet::Pointer_t
+OOXMLFastContextHandlerStream::getPropertySetAttrs() const
+{
+ return mpPropertySetAttrs;
+}
+
+void OOXMLFastContextHandlerStream::resolvePropertySetAttrs()
+{
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("resolvePropertySetAttrs");
+ debug_logger->chars(mpPropertySetAttrs->toString());
+ debug_logger->endElement("resolvePropertySetAttrs");
+#endif
+ mpStream->props(mpPropertySetAttrs);
+}
+
+OOXMLPropertySet::Pointer_t OOXMLFastContextHandlerStream::getPropertySet()
+ const
+{
+ return getPropertySetAttrs();
+}
+
+void OOXMLFastContextHandlerStream::handleHyperlink()
+{
+ OOXMLHyperlinkHandler aHyperlinkHandler(this);
+ getPropertySetAttrs()->resolve(aHyperlinkHandler);
+}
+
+void OOXMLFastContextHandlerStream::lcl_characters
+(const ::rtl::OUString & rChars)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ text(rChars);
+}
+
+/*
+ class OOXMLFastContextHandlerProperties
+ */
+OOXMLFastContextHandlerProperties::OOXMLFastContextHandlerProperties
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext), mpPropertySet(new OOXMLPropertySetImpl()),
+ mbResolve(false)
+{
+ if (pContext->getResource() == STREAM)
+ mbResolve = true;
+}
+
+OOXMLFastContextHandlerProperties::~OOXMLFastContextHandlerProperties()
+{
+}
+
+void OOXMLFastContextHandlerProperties::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ endAction(Element);
+
+ if (mbResolve)
+ {
+ if (isForwardEvents())
+ {
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("sendproperties");
+#endif
+ mpStream->props(mpPropertySet);
+#ifdef DEBUG_PROPERTIES
+ debug_logger->endElement("sendproperties");
+#endif
+ }
+ }
+ else
+ {
+ sendPropertiesToParent();
+ }
+}
+
+OOXMLValue::Pointer_t OOXMLFastContextHandlerProperties::getValue() const
+{
+ return OOXMLValue::Pointer_t(new OOXMLPropertySetValue(mpPropertySet));
+}
+
+#ifdef DEBUG
+XMLTag::Pointer_t OOXMLFastContextHandlerProperties::toTag() const
+{
+ XMLTag::Pointer_t pTag(OOXMLFastContextHandler::toTag());
+ pTag->addAttr("resolve", mbResolve ? "resolve" : "noResolve");
+
+ return pTag;
+}
+#endif
+
+void OOXMLFastContextHandlerProperties::newProperty
+(const Id & rId, OOXMLValue::Pointer_t pVal)
+{
+ if (rId != 0x0)
+ {
+ OOXMLPropertyImpl::Pointer_t pProperty
+ (new OOXMLPropertyImpl(rId, pVal, OOXMLPropertyImpl::ATTRIBUTE));
+
+ mpPropertySet->add(pProperty);
+ }
+}
+
+void OOXMLFastContextHandlerProperties::handleXNotes()
+{
+ switch (mnToken)
+ {
+ case NS_wordprocessingml|OOXML_footnoteReference:
+ {
+ OOXMLFootnoteHandler aFootnoteHandler(this);
+ mpPropertySet->resolve(aFootnoteHandler);
+ }
+ break;
+ case NS_wordprocessingml|OOXML_endnoteReference:
+ {
+ OOXMLEndnoteHandler aEndnoteHandler(this);
+ mpPropertySet->resolve(aEndnoteHandler);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLFastContextHandlerProperties::handleHdrFtr()
+{
+ switch (mnToken)
+ {
+ case NS_wordprocessingml|OOXML_footerReference:
+ {
+ OOXMLFooterHandler aFooterHandler(this);
+ mpPropertySet->resolve(aFooterHandler);
+ }
+ break;
+ case NS_wordprocessingml|OOXML_headerReference:
+ {
+ OOXMLHeaderHandler aHeaderHandler(this);
+ mpPropertySet->resolve(aHeaderHandler);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void OOXMLFastContextHandlerProperties::handleComment()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("handleComment");
+#endif
+
+ OOXMLCommentHandler aCommentHandler(this);
+ getPropertySet()->resolve(aCommentHandler);
+}
+
+void OOXMLFastContextHandlerProperties::handlePicture()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("handlePicture");
+#endif
+
+ OOXMLPictureHandler aPictureHandler(this);
+ getPropertySet()->resolve(aPictureHandler);
+}
+
+void OOXMLFastContextHandlerProperties::handleBreak()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("handleBreak");
+#endif
+
+ OOXMLBreakHandler aBreakHandler(*mpStream, this);
+ getPropertySet()->resolve(aBreakHandler);
+}
+
+void OOXMLFastContextHandlerProperties::handleOLE()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("handleOLE");
+#endif
+
+ OOXMLOLEHandler aOLEHandler(this);
+ getPropertySet()->resolve(aOLEHandler);
+}
+
+void OOXMLFastContextHandlerProperties::setParent
+(OOXMLFastContextHandler * pParent)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("setParent");
+ debug_logger->chars("OOXMLFastContextHandlerProperties");
+ debug_logger->endElement("setParent");
+#endif
+
+ OOXMLFastContextHandler::setParent(pParent);
+
+ if (mpParent->getResource() == STREAM)
+ mbResolve = true;
+}
+
+void OOXMLFastContextHandlerProperties::setPropertySet
+(OOXMLPropertySet::Pointer_t pPropertySet)
+{
+ if (pPropertySet.get() != NULL)
+ mpPropertySet = pPropertySet;
+}
+
+OOXMLPropertySet::Pointer_t
+OOXMLFastContextHandlerProperties::getPropertySet() const
+{
+ return mpPropertySet;
+}
+
+/*
+ * class OOXMLFasContextHandlerPropertyTable
+ */
+
+OOXMLFastContextHandlerPropertyTable::OOXMLFastContextHandlerPropertyTable
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandlerProperties(pContext)
+{
+}
+
+OOXMLFastContextHandlerPropertyTable::~OOXMLFastContextHandlerPropertyTable()
+{
+}
+
+void OOXMLFastContextHandlerPropertyTable::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ OOXMLPropertySet::Pointer_t pPropSet(mpPropertySet->clone());
+ OOXMLTableImpl::ValuePointer_t pTmpVal
+ (new OOXMLPropertySetValue(pPropSet));
+
+ mTable.add(pTmpVal);
+
+ writerfilter::Reference<Table>::Pointer_t pTable(mTable.clone());
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("table");
+ debug_logger->attribute("id", (*QNameToString::Instance())(mId));
+ debug_logger->endElement("table");
+#endif
+
+ mpStream->table(mId, pTable);
+
+ endAction(Element);
+}
+
+/*
+ class OOXMLFastContextHandlerValue
+*/
+
+OOXMLFastContextHandlerValue::OOXMLFastContextHandlerValue
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerValue::~OOXMLFastContextHandlerValue()
+{
+}
+
+void OOXMLFastContextHandlerValue::setValue(OOXMLValue::Pointer_t pValue)
+{
+ mpValue = pValue;
+}
+
+OOXMLValue::Pointer_t OOXMLFastContextHandlerValue::getValue() const
+{
+ return mpValue;
+}
+
+void OOXMLFastContextHandlerValue::lcl_endFastElement
+(Token_t Element)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ sendPropertyToParent();
+
+ endAction(Element);
+}
+
+void OOXMLFastContextHandlerValue::setDefaultBooleanValue()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("setDefaultBooleanValue");
+#endif
+
+ if (mpValue.get() == NULL)
+ {
+ OOXMLValue::Pointer_t pValue(new OOXMLBooleanValue(true));
+ setValue(pValue);
+ }
+}
+
+void OOXMLFastContextHandlerValue::setDefaultIntegerValue()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("setDefaultIntegerValue");
+#endif
+
+ if (mpValue.get() == NULL)
+ {
+ OOXMLValue::Pointer_t pValue(new OOXMLIntegerValue(0));
+ setValue(pValue);
+ }
+}
+
+void OOXMLFastContextHandlerValue::setDefaultHexValue()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("setDefaultHexValue");
+#endif
+
+ if (mpValue.get() == NULL)
+ {
+ OOXMLValue::Pointer_t pValue(new OOXMLHexValue(0));
+ setValue(pValue);
+ }
+}
+
+void OOXMLFastContextHandlerValue::setDefaultStringValue()
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->element("setDefaultStringValue");
+#endif
+
+ if (mpValue.get() == NULL)
+ {
+ OOXMLValue::Pointer_t pValue(new OOXMLStringValue(::rtl::OUString()));
+ setValue(pValue);
+ }
+}
+/*
+ class OOXMLFastContextHandlerTable
+*/
+
+OOXMLFastContextHandlerTable::OOXMLFastContextHandlerTable
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerTable::~OOXMLFastContextHandlerTable()
+{
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+OOXMLFastContextHandlerTable::createFastChildContext
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ addCurrentChild();
+
+ mCurrentChild.set
+ (OOXMLFastContextHandler::createFastChildContext(Element, Attribs));
+
+ return mCurrentChild;
+}
+
+void OOXMLFastContextHandlerTable::lcl_endFastElement
+(Token_t /*Element*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ addCurrentChild();
+
+ writerfilter::Reference<Table>::Pointer_t pTable(mTable.clone());
+ if (isForwardEvents() && mId != 0x0)
+ {
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("table");
+ string str = (*QNameToString::Instance())(mId);
+ debug_logger->attribute("id", str);
+ debug_logger->endElement("table");
+#endif
+
+ mpStream->table(mId, pTable);
+ }
+}
+
+void OOXMLFastContextHandlerTable::addCurrentChild()
+{
+ OOXMLFastContextHandler * pHandler = mCurrentChild.getPointer();
+ if ( pHandler != NULL)
+ {
+ OOXMLValue::Pointer_t pValue(pHandler->getValue());
+
+ if (pValue.get() != NULL)
+ {
+ OOXMLTableImpl::ValuePointer_t pTmpVal(pValue->clone());
+ mTable.add(pTmpVal);
+ }
+ }
+}
+
+void OOXMLFastContextHandlerTable::newPropertySet
+(OOXMLPropertySet::Pointer_t /*pPropertySet*/)
+{
+
+}
+
+/*
+ class OOXMLFastContextHandlerXNote
+ */
+
+OOXMLFastContextHandlerXNote::OOXMLFastContextHandlerXNote
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerXNote::~OOXMLFastContextHandlerXNote()
+{
+}
+
+void OOXMLFastContextHandlerXNote::lcl_startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ mbForwardEventsSaved = isForwardEvents();
+
+ if (msMyXNoteId.compareTo(getXNoteId()) == 0)
+ setForwardEvents(true);
+ else
+ setForwardEvents(false);
+
+ startAction(Element);
+}
+
+void OOXMLFastContextHandlerXNote::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ endAction(Element);
+
+ setForwardEvents(mbForwardEventsSaved);
+}
+
+void OOXMLFastContextHandlerXNote::checkId(OOXMLValue::Pointer_t pValue)
+{
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("checkId");
+ debug_logger->attribute("myId", pValue->getString());
+ debug_logger->attribute("id", getXNoteId());
+ debug_logger->endElement("checkId");
+#endif
+
+ msMyXNoteId = pValue->getString();
+}
+
+/*
+ class OOXMLFastContextHandlerTextTableCell
+ */
+
+OOXMLFastContextHandlerTextTableCell::OOXMLFastContextHandlerTextTableCell
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerTextTableCell::~OOXMLFastContextHandlerTextTableCell()
+{
+}
+
+void OOXMLFastContextHandlerTextTableCell::startCell()
+{
+}
+
+void OOXMLFastContextHandlerTextTableCell::endCell()
+{
+ if (isForwardEvents())
+ {
+ OOXMLPropertySet * pProps = new OOXMLPropertySetImpl();
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(mnTableDepth));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PTableDepth, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(1));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PFInTable, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLBooleanValue(mnTableDepth > 0));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PCell, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("endcell");
+ debug_logger->addTag(toPropertiesTag
+ (OOXMLPropertySet::Pointer_t(pProps->clone())));
+ debug_logger->endElement("endcell");
+#endif
+ mpStream->props(writerfilter::Reference<Properties>::Pointer_t(pProps));
+ }
+}
+
+/*
+ class OOXMLFastContextHandlerTextTableRow
+ */
+
+OOXMLFastContextHandlerTextTableRow::OOXMLFastContextHandlerTextTableRow
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerTextTableRow::~OOXMLFastContextHandlerTextTableRow()
+{
+}
+
+void OOXMLFastContextHandlerTextTableRow::startRow()
+{
+}
+
+void OOXMLFastContextHandlerTextTableRow::endRow()
+{
+ startParagraphGroup();
+
+ if (isForwardEvents())
+ {
+ OOXMLPropertySet * pProps = new OOXMLPropertySetImpl();
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(mnTableDepth));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PTableDepth, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(1));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PFInTable, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(1));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_sprm::LN_PRow, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("endrow");
+ debug_logger->addTag(toPropertiesTag
+ (OOXMLPropertySet::Pointer_t(pProps->clone())));
+ debug_logger->endElement("endrow");
+#endif
+
+ mpStream->props(writerfilter::Reference<Properties>::Pointer_t(pProps));
+ }
+
+ startCharacterGroup();
+
+ if (isForwardEvents())
+ mpStream->utext(s0xd, 1);
+
+ endCharacterGroup();
+ endParagraphGroup();
+}
+
+/*
+ class OOXMLFastContextHandlerTextTable
+ */
+
+OOXMLFastContextHandlerTextTable::OOXMLFastContextHandlerTextTable
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandler(pContext)
+{
+}
+
+OOXMLFastContextHandlerTextTable::~OOXMLFastContextHandlerTextTable()
+{
+ clearTableProps();
+}
+
+void OOXMLFastContextHandlerTextTable::lcl_startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ mpParserState->startTable();
+ mnTableDepth++;
+
+ boost::shared_ptr<OOXMLPropertySet> pProps( new OOXMLPropertySetImpl );
+ {
+ OOXMLValue::Pointer_t pVal
+ (new OOXMLIntegerValue(mnTableDepth));
+ OOXMLProperty::Pointer_t pProp
+ (new OOXMLPropertyImpl(NS_ooxml::LN_tblStart, pVal, OOXMLPropertyImpl::SPRM));
+ pProps->add(pProp);
+ }
+ mpParserState->setCharacterProperties(pProps);
+
+ startAction(Element);
+}
+
+void OOXMLFastContextHandlerTextTable::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ endAction(Element);
+
+ mnTableDepth--;
+ mpParserState->endTable();
+}
+
+/*
+ class OOXMLFastContextHandlerShape
+ */
+
+OOXMLFastContextHandlerShape::OOXMLFastContextHandlerShape
+(OOXMLFastContextHandler * pContext)
+: OOXMLFastContextHandlerProperties(pContext), m_bShapeSent( false ),
+ m_bShapeStarted(false)
+{
+ uno::Reference<uno::XComponentContext> xContext(getComponentContext());
+ if (xContext.is())
+ {
+ uno::Reference<XMultiComponentFactory> rServiceManager
+ (xContext->getServiceManager());
+
+ mrShapeContext.set
+ (rServiceManager->
+ createInstanceWithContext
+ (::rtl::OUString
+ (RTL_CONSTASCII_USTRINGPARAM
+ ("com.sun.star.xml.sax.FastShapeContextHandler")), xContext),
+ uno::UNO_QUERY);
+
+ if (mrShapeContext.is())
+ {
+ mrShapeContext->setModel(getDocument()->getModel());
+ mrShapeContext->setDrawPage(getDocument()->getDrawPage());
+ mrShapeContext->setInputStream(getDocument()->getStorageStream());
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("setRelationFragmentPath");
+ debug_logger->attribute("path", mpParserState->getTarget());
+ debug_logger->endElement("setRelationFragmentPath");
+#endif
+ mrShapeContext->setRelationFragmentPath
+ (mpParserState->getTarget());
+ }
+#ifdef DEBUG_CONTEXT_STACK
+ else
+ {
+ debug_logger->startElement("error");
+ debug_logger->chars("failed to get shape handler");
+ debug_logger->endElement("error");
+ }
+#endif
+ }
+}
+
+OOXMLFastContextHandlerShape::~OOXMLFastContextHandlerShape()
+{
+}
+
+void OOXMLFastContextHandlerShape::lcl_startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ startAction(Element);
+
+ if (mrShapeContext.is())
+ {
+ mrShapeContext->startFastElement(Element, Attribs);
+ }
+}
+
+void SAL_CALL OOXMLFastContextHandlerShape::startUnknownElement
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mrShapeContext.is())
+ mrShapeContext->startUnknownElement(Namespace, Name, Attribs);
+}
+
+void OOXMLFastContextHandlerShape::setToken(Token_t nToken)
+{
+ OOXMLFastContextHandler::setToken(nToken);
+
+ if (mrShapeContext.is())
+ mrShapeContext->setStartToken(nToken);
+}
+
+void OOXMLFastContextHandlerShape::sendShape( Token_t Element )
+{
+ if ( mrShapeContext.is() && !m_bShapeSent )
+ {
+ uno::Reference<drawing::XShape> xShape(mrShapeContext->getShape());
+ if (xShape.is())
+ {
+ OOXMLValue::Pointer_t
+ pValue(new OOXMLShapeValue(xShape));
+ newProperty(NS_ooxml::LN_shape, pValue);
+ m_bShapeSent = true;
+
+ bool bIsPicture = Element == ( NS_picture | OOXML_pic );
+
+ // Notify the dmapper that the shape is ready to use
+ if ( !bIsPicture )
+ {
+ mpStream->startShape( xShape );
+ m_bShapeStarted = true;
+ }
+ }
+ }
+}
+
+void OOXMLFastContextHandlerShape::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mrShapeContext.is())
+ {
+ mrShapeContext->endFastElement(Element);
+ sendShape( Element );
+ }
+
+ OOXMLFastContextHandlerProperties::lcl_endFastElement(Element);
+
+ // Ending the shape should be the last thing to do
+ bool bIsPicture = Element == ( NS_picture | OOXML_pic );
+ if ( !bIsPicture && m_bShapeStarted)
+ mpStream->endShape( );
+}
+
+void SAL_CALL OOXMLFastContextHandlerShape::endUnknownElement
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mrShapeContext.is())
+ mrShapeContext->endUnknownElement(Namespace, Name);
+}
+
+uno::Reference< xml::sax::XFastContextHandler >
+OOXMLFastContextHandlerShape::lcl_createFastChildContext
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ uno::Reference< xml::sax::XFastContextHandler > xContextHandler;
+
+ sal_uInt32 nNamespace = Element & 0xffff0000;
+
+ switch (nNamespace)
+ {
+ case NS_wordprocessingml:
+ case NS_vml_wordprocessingDrawing:
+ case NS_office:
+ xContextHandler.set(OOXMLFactory::getInstance()->createFastChildContextFromStart(this, Element));
+ break;
+ default:
+ if (mrShapeContext.is())
+ {
+ uno::Reference<XFastContextHandler> pChildContext =
+ mrShapeContext->createFastChildContext(Element, Attribs);
+
+ OOXMLFastContextHandlerWrapper * pWrapper =
+ new OOXMLFastContextHandlerWrapper(this, pChildContext);
+
+ pWrapper->addNamespace(NS_wordprocessingml);
+ pWrapper->addNamespace(NS_vml_wordprocessingDrawing);
+ pWrapper->addNamespace(NS_office);
+ pWrapper->addToken( NS_vml|OOXML_textbox );
+
+ xContextHandler.set(pWrapper);
+ }
+ else
+ xContextHandler.set(this);
+ break;
+ }
+
+
+ return xContextHandler;
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+OOXMLFastContextHandlerShape::createUnknownChildContext
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ uno::Reference< xml::sax::XFastContextHandler > xResult;
+
+ if (mrShapeContext.is())
+ xResult.set(mrShapeContext->createUnknownChildContext
+ (Namespace, Name, Attribs));
+
+ return xResult;
+}
+
+void OOXMLFastContextHandlerShape::lcl_characters
+(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mrShapeContext.is())
+ mrShapeContext->characters(aChars);
+}
+
+/*
+ class OOXMLFastContextHandlerWrapper
+*/
+
+OOXMLFastContextHandlerWrapper::OOXMLFastContextHandlerWrapper
+(OOXMLFastContextHandler * pParent,
+ uno::Reference<XFastContextHandler> xContext)
+: OOXMLFastContextHandler(pParent), mxContext(xContext)
+{
+ if (pParent != NULL)
+ {
+ setId(pParent->getId());
+ setToken(pParent->getToken());
+ setPropertySet(pParent->getPropertySet());
+ }
+}
+
+OOXMLFastContextHandlerWrapper::~OOXMLFastContextHandlerWrapper()
+{
+}
+
+void SAL_CALL OOXMLFastContextHandlerWrapper::startUnknownElement
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ mxContext->startUnknownElement(Namespace, Name, Attribs);
+}
+
+void SAL_CALL OOXMLFastContextHandlerWrapper::endUnknownElement
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ mxContext->endUnknownElement(Namespace, Name);
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+OOXMLFastContextHandlerWrapper::createUnknownChildContext
+(const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ uno::Reference< xml::sax::XFastContextHandler > xResult;
+
+ if (mxContext.is())
+ xResult = mxContext->createUnknownChildContext
+ (Namespace, Name, Attribs);
+ else
+ xResult.set(this);
+
+ return xResult;
+}
+
+void OOXMLFastContextHandlerWrapper::attributes
+(const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pHandler->attributes(Attribs);
+ }
+}
+
+OOXMLFastContextHandler::ResourceEnum_t
+OOXMLFastContextHandlerWrapper::getResource() const
+{
+ return UNKNOWN;
+}
+
+void OOXMLFastContextHandlerWrapper::addNamespace(const Id & nId)
+{
+ mMyNamespaces.insert(nId);
+}
+
+void OOXMLFastContextHandlerWrapper::addToken( Token_t Token )
+{
+ mMyTokens.insert( Token );
+}
+
+void OOXMLFastContextHandlerWrapper::lcl_startFastElement
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ mxContext->startFastElement(Element, Attribs);
+}
+
+void OOXMLFastContextHandlerWrapper::lcl_endFastElement
+(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ mxContext->endFastElement(Element);
+}
+
+uno::Reference< xml::sax::XFastContextHandler >
+OOXMLFastContextHandlerWrapper::lcl_createFastChildContext
+(Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ uno::Reference< xml::sax::XFastContextHandler > xResult;
+
+ Id nNameSpace = Element & 0xffff0000;
+
+#ifdef DEBUG_ELEMENT
+ debug_logger->startElement("Wrapper-createChildContext");
+ debug_logger->attribute("token", fastTokenToId(Element));
+
+ set<Id>::const_iterator aIt(mMyNamespaces.begin());
+ while (aIt != mMyNamespaces.end())
+ {
+ debug_logger->startElement("namespace");
+ debug_logger->attribute("id", fastTokenToId(*aIt));
+ debug_logger->endElement("namespace");
+
+ aIt++;
+ }
+
+ debug_logger->endElement("Wrapper-createChildContext");
+#endif
+
+ bool bInNamespaces = mMyNamespaces.find(nNameSpace) != mMyNamespaces.end();
+ bool bInTokens = mMyTokens.find( Element ) != mMyTokens.end( );
+ if ( bInNamespaces )
+ xResult.set(OOXMLFactory::getInstance()->createFastChildContextFromStart(this, Element));
+ else if (mxContext.is())
+ {
+ OOXMLFastContextHandlerWrapper * pWrapper =
+ new OOXMLFastContextHandlerWrapper
+ (this, mxContext->createFastChildContext(Element, Attribs));
+ pWrapper->mMyNamespaces = mMyNamespaces;
+ pWrapper->setPropertySet(getPropertySet());
+ xResult.set(pWrapper);
+ }
+ else
+ xResult.set(this);
+
+ if ( bInTokens )
+ {
+ OOXMLFastContextHandlerShape* pShapeCtx = (OOXMLFastContextHandlerShape*)mpParent;
+ pShapeCtx->sendShape( Element );
+ }
+
+ return xResult;
+}
+
+void OOXMLFastContextHandlerWrapper::lcl_characters
+(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ if (mxContext.is())
+ mxContext->characters(aChars);
+}
+
+OOXMLFastContextHandler *
+OOXMLFastContextHandlerWrapper::getFastContextHandler() const
+{
+ if (mxContext.is())
+ return dynamic_cast<OOXMLFastContextHandler *>(mxContext.get());
+
+ return NULL;
+}
+
+void OOXMLFastContextHandlerWrapper::newProperty
+(const Id & rId, OOXMLValue::Pointer_t pVal)
+{
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pHandler->newProperty(rId, pVal);
+ }
+}
+
+void OOXMLFastContextHandlerWrapper::setPropertySet
+(OOXMLPropertySet::Pointer_t pPropertySet)
+{
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pHandler->setPropertySet(pPropertySet);
+ }
+
+ mpPropertySet = pPropertySet;
+}
+
+OOXMLPropertySet::Pointer_t OOXMLFastContextHandlerWrapper::getPropertySet()
+ const
+{
+ OOXMLPropertySet::Pointer_t pResult(mpPropertySet);
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pResult = pHandler->getPropertySet();
+ }
+
+ return pResult;
+}
+
+string OOXMLFastContextHandlerWrapper::getType() const
+{
+ string sResult = "Wrapper(";
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ sResult += pHandler->getType();
+ }
+
+ sResult += ")";
+
+ return sResult;
+}
+
+void OOXMLFastContextHandlerWrapper::setId(Id rId)
+{
+ OOXMLFastContextHandler::setId(rId);
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pHandler->setId(rId);
+ }
+}
+
+Id OOXMLFastContextHandlerWrapper::getId() const
+{
+ Id nResult = OOXMLFastContextHandler::getId();
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL && pHandler->getId() != 0)
+ nResult = pHandler->getId();
+ }
+
+ return nResult;
+}
+
+void OOXMLFastContextHandlerWrapper::setToken(Token_t nToken)
+{
+ OOXMLFastContextHandler::setToken(nToken);
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ pHandler->setToken(nToken);
+ }
+}
+
+Token_t OOXMLFastContextHandlerWrapper::getToken() const
+{
+ Token_t nResult = OOXMLFastContextHandler::getToken();
+
+ if (mxContext.is())
+ {
+ OOXMLFastContextHandler * pHandler = getFastContextHandler();
+ if (pHandler != NULL)
+ nResult = pHandler->getToken();
+ }
+
+ return nResult;
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
new file mode 100644
index 000000000000..0c441f62a180
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -0,0 +1,644 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_OOXML_FAST_CONTEXT_HANDLER_HXX
+#define INCLUDED_OOXML_FAST_CONTEXT_HANDLER_HXX
+
+#include <com/sun/star/xml/sax/XFastShapeContextHandler.hpp>
+
+#include <string>
+#include <set>
+#include "sal/config.h"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "cppuhelper/implbase1.hxx"
+#include "com/sun/star/xml/sax/XFastContextHandler.hpp"
+#include "OOXMLParserState.hxx"
+#include "OOXMLPropertySetImpl.hxx"
+#include "OOXMLDocumentImpl.hxx"
+#include "RefAndPointer.hxx"
+#include <ooxml/OOXMLFastTokens.hxx>
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::std;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::xml::sax;
+
+typedef boost::shared_ptr<Stream> StreamPointer_t;
+
+class OOXMLFastContextHandler:
+ public ::cppu::WeakImplHelper1<
+ xml::sax::XFastContextHandler>
+{
+public:
+ typedef RefAndPointer<XFastContextHandler, OOXMLFastContextHandler>
+ RefAndPointer_t;
+ typedef boost::shared_ptr<OOXMLFastContextHandler> Pointer_t;
+
+ enum ResourceEnum_t { UNKNOWN, STREAM, PROPERTIES, TABLE, SHAPE };
+
+ OOXMLFastContextHandler();
+ explicit OOXMLFastContextHandler
+ (uno::Reference< uno::XComponentContext > const & context);
+
+ explicit OOXMLFastContextHandler
+ (OOXMLFastContextHandler * pContext);
+
+ virtual ~OOXMLFastContextHandler();
+
+ // ::com::sun::star::xml::sax::XFastContextHandler:
+ virtual void SAL_CALL startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL startUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL endUnknownElement
+ (const ::rtl::OUString & Namespace, const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createFastChildContext
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createUnknownChildContext
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ static const uno::Sequence< sal_Int8 > & getUnoTunnelId();
+ virtual sal_Int64 SAL_CALL getSomething(const uno::Sequence<sal_Int8> & rId)
+ throw (uno::RuntimeException);
+
+ // local
+
+ void setStream(Stream * pStream);
+
+ /**
+ Return value of this context(element).
+
+ @return the value
+ */
+ virtual OOXMLValue::Pointer_t getValue() const;
+
+ /**
+ Returns a string describing the type of the context.
+
+ This is the name of the define normally.
+
+ @return type string
+ */
+ virtual string getType() const { return "??"; }
+
+ virtual ResourceEnum_t getResource() const { return STREAM; }
+
+ virtual void attributes
+ (const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void newProperty(const Id & rId, OOXMLValue::Pointer_t pVal);
+ virtual void setPropertySet(OOXMLPropertySet::Pointer_t pPropertySet);
+ virtual OOXMLPropertySet::Pointer_t getPropertySet() const;
+
+ virtual void setToken(Token_t nToken);
+ virtual Token_t getToken() const;
+
+ void mark(const Id & rId, OOXMLValue::Pointer_t pVal);
+
+ void resolveFootnote(const rtl::OUString & rId);
+ void resolveEndnote(const rtl::OUString & rId);
+ void resolveComment(const rtl::OUString & rId);
+ void resolvePicture(const rtl::OUString & rId);
+ void resolveHeader(const sal_Int32 type,
+ const rtl::OUString & rId);
+ void resolveFooter(const sal_Int32 type,
+ const rtl::OUString & rId);
+ void resolveOLE(const rtl::OUString & rId);
+
+ ::rtl::OUString getTargetForId(const ::rtl::OUString & rId);
+
+ uno::Reference < xml::sax::XFastContextHandler >
+ createFromStart
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs);
+
+ void setDocument(OOXMLDocument * pDocument);
+ OOXMLDocument * getDocument();
+ void setXNoteId(OOXMLValue::Pointer_t pValue);
+ void setXNoteId(const ::rtl::OUString & rId);
+ const rtl::OUString & getXNoteId() const;
+ void setForwardEvents(bool bForwardEvents);
+ bool isForwardEvents() const;
+ virtual void setParent(OOXMLFastContextHandler * pParent);
+ virtual void setId(Id nId);
+ virtual Id getId() const;
+
+ void setDefine(Id nDefine);
+ Id getDefine() const;
+
+ OOXMLParserState::Pointer_t getParserState() const;
+
+ void sendTableDepth() const;
+ void setHandle();
+
+ void startSectionGroup();
+ void setLastParagraphInSection();
+ void endSectionGroup();
+ void startParagraphGroup();
+ void endParagraphGroup();
+ void startCharacterGroup();
+ void endCharacterGroup();
+
+ void startField();
+ void fieldSeparator();
+ void endField();
+ void ftnednref();
+ void ftnedncont();
+ void ftnednsep();
+ void pgNum();
+ void tab();
+ void cr();
+ void noBreakHyphen();
+ void softHyphen();
+ void handleLastParagraphInSection();
+ void endOfParagraph();
+ void text(const ::rtl::OUString & sText);
+ virtual void propagateCharacterProperties();
+ virtual void propagateCharacterPropertiesAsSet(const Id & rId);
+ virtual void propagateTableProperties();
+ virtual void propagateRowProperties();
+ virtual void propagateCellProperties();
+ virtual bool propagatesProperties() const;
+ void sendPropertiesWithId(const Id & rId);
+ void sendPropertiesToParent();
+ void sendCellProperties();
+ void sendRowProperties();
+ void sendTableProperties();
+ void clearTableProps();
+ void clearProps();
+
+ virtual void setDefaultBooleanValue();
+ virtual void setDefaultIntegerValue();
+ virtual void setDefaultHexValue();
+ virtual void setDefaultStringValue();
+
+ void sendPropertyToParent();
+
+#ifdef DEBUG
+ static XMLTag::Pointer_t toPropertiesTag(OOXMLPropertySet::Pointer_t);
+ virtual XMLTag::Pointer_t toTag() const;
+ virtual string toString() const;
+#endif
+
+#ifdef DEBUG_MEMORY
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+#endif
+
+protected:
+ OOXMLFastContextHandler * mpParent;
+ Id mId;
+ Id mnDefine;
+ Token_t mnToken;
+
+#ifdef DEBUG_CONTEXT_STACK
+ string msTokenString;
+#endif
+
+ // the stream to send the stream events to.
+ Stream * mpStream;
+
+ // the current global parser state
+ OOXMLParserState::Pointer_t mpParserState;
+
+ // the table depth of this context
+ unsigned int mnTableDepth;
+
+ virtual void lcl_startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler >
+ lcl_createFastChildContext
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ void startAction(Token_t Element);
+ virtual void lcl_startAction(Token_t Element);
+ void endAction(Token_t Element);
+ virtual void lcl_endAction(Token_t Element);
+
+
+ // Returns string for resource of this context. (debug)
+ string getResourceString() const;
+
+ virtual OOXMLPropertySet * getPicturePropSet
+ (const ::rtl::OUString & rId);
+ virtual void resolvePropertySetAttrs();
+
+ uno::Reference< uno::XComponentContext > getComponentContext();
+
+ sal_uInt32 mnInstanceNumber;
+ sal_uInt32 mnRefCount;
+private:
+ void operator =(OOXMLFastContextHandler &); // not defined
+
+ uno::Reference< uno::XComponentContext > m_xContext;
+
+ static sal_uInt32 mnInstanceCount;
+
+};
+
+class OOXMLFastContextHandlerStream : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerStream(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerStream();
+
+ virtual ResourceEnum_t getResource() const { return STREAM; }
+
+ OOXMLPropertySet::Pointer_t getPropertySetAttrs() const;
+
+ virtual void newProperty(const Id & rId, OOXMLValue::Pointer_t pVal);
+ virtual void sendProperty(Id nId);
+ virtual OOXMLPropertySet::Pointer_t getPropertySet() const;
+
+ void handleHyperlink();
+
+protected:
+ virtual void resolvePropertySetAttrs();
+ virtual void lcl_characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+private:
+ mutable OOXMLPropertySet::Pointer_t mpPropertySetAttrs;
+};
+
+class OOXMLFastContextHandlerProperties : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerProperties(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerProperties();
+
+ virtual OOXMLValue::Pointer_t getValue() const;
+ virtual ResourceEnum_t getResource() const { return PROPERTIES; }
+
+ virtual void newProperty(const Id & nId, OOXMLValue::Pointer_t pVal);
+
+ void handleXNotes();
+ void handleHdrFtr();
+ void handleComment();
+ void handlePicture();
+ void handleBreak();
+ void handleOLE();
+
+ virtual void setPropertySet(OOXMLPropertySet::Pointer_t pPropertySet);
+ virtual OOXMLPropertySet::Pointer_t getPropertySet() const;
+
+#ifdef DEBUG
+ virtual XMLTag::Pointer_t toTag() const;
+#endif
+
+protected:
+ /// the properties
+ OOXMLPropertySet::Pointer_t mpPropertySet;
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void setParent(OOXMLFastContextHandler * pParent);
+
+private:
+
+ bool mbResolve;
+};
+
+class OOXMLFastContextHandlerPropertyTable :
+ public OOXMLFastContextHandlerProperties
+{
+public:
+ OOXMLFastContextHandlerPropertyTable(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerPropertyTable();
+
+protected:
+ OOXMLTableImpl mTable;
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ };
+
+class OOXMLFastContextHandlerValue :
+ public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerValue
+ (OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerValue();
+
+ virtual void setValue(OOXMLValue::Pointer_t pValue);
+ virtual OOXMLValue::Pointer_t getValue() const;
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual string getType() const { return "Value"; }
+
+ virtual void setDefaultBooleanValue();
+ virtual void setDefaultIntegerValue();
+ virtual void setDefaultHexValue();
+ virtual void setDefaultStringValue();
+
+protected:
+ OOXMLValue::Pointer_t mpValue;
+};
+
+class OOXMLFastContextHandlerTable : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerTable(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerTable();
+
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createFastChildContext
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void newPropertySet(OOXMLPropertySet::Pointer_t pPropertySet);
+protected:
+ OOXMLTableImpl mTable;
+
+ RefAndPointer_t mCurrentChild;
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual ResourceEnum_t getResource() const { return TABLE; }
+
+ virtual string getType() const { return "Table"; }
+
+ void addCurrentChild();
+};
+
+class OOXMLFastContextHandlerXNote : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerXNote(OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerXNote();
+
+ void checkId(OOXMLValue::Pointer_t pValue);
+
+ virtual string getType() const { return "XNote"; }
+
+private:
+ bool mbForwardEventsSaved;
+ ::rtl::OUString msMyXNoteId;
+
+ virtual void lcl_startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual ResourceEnum_t getResource() const { return STREAM; }
+};
+
+class OOXMLFastContextHandlerTextTableCell : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerTextTableCell
+ (OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerTextTableCell();
+
+ virtual string getType() const { return "TextTableCell"; }
+
+ void startCell();
+ void endCell();
+};
+
+class OOXMLFastContextHandlerTextTableRow : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerTextTableRow
+ (OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerTextTableRow();
+
+ virtual string getType() const { return "TextTableRow"; }
+
+ void startRow();
+ void endRow();
+};
+
+class OOXMLFastContextHandlerTextTable : public OOXMLFastContextHandler
+{
+public:
+ OOXMLFastContextHandlerTextTable
+ (OOXMLFastContextHandler * pContext);
+
+ virtual ~OOXMLFastContextHandlerTextTable();
+
+ virtual string getType() const { return "TextTable"; }
+
+protected:
+ virtual void lcl_startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+};
+
+class OOXMLFastContextHandlerShape: public OOXMLFastContextHandlerProperties
+{
+private:
+ bool m_bShapeSent;
+ bool m_bShapeStarted;
+
+public:
+ explicit OOXMLFastContextHandlerShape
+ (OOXMLFastContextHandler * pContext);
+ virtual ~OOXMLFastContextHandlerShape();
+
+ virtual string getType() const { return "Shape"; }
+
+ // ::com::sun::star::xml::sax::XFastContextHandler:
+ virtual void SAL_CALL startUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL endUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createUnknownChildContext
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void setToken(Token_t nToken);
+
+ virtual ResourceEnum_t getResource() const { return SHAPE; }
+
+ void sendShape( Token_t Element );
+
+protected:
+ typedef uno::Reference<XFastShapeContextHandler> ShapeContextRef;
+ ShapeContextRef mrShapeContext;
+
+ virtual void lcl_startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler >
+ lcl_createFastChildContext
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+};
+
+/**
+ OOXMLFastContextHandlerWrapper wraps an OOXMLFastContextHandler.
+
+ The method calls for the interface
+ ::com::sun::star::xml::sax::XFastContextHandler are forwarded to the wrapped
+ OOXMLFastContextHandler.
+ */
+class OOXMLFastContextHandlerWrapper : public OOXMLFastContextHandler
+{
+public:
+ explicit OOXMLFastContextHandlerWrapper
+ (OOXMLFastContextHandler * pParent,
+ uno::Reference<XFastContextHandler> xContext);
+ virtual ~OOXMLFastContextHandlerWrapper();
+
+ // ::com::sun::star::xml::sax::XFastContextHandler:
+ virtual void SAL_CALL startUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void SAL_CALL endUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createUnknownChildContext
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void attributes
+ (const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual ResourceEnum_t getResource() const;
+
+ void addNamespace(const Id & nId);
+ void addToken( Token_t Element );
+
+ virtual void newProperty(const Id & rId, OOXMLValue::Pointer_t pVal);
+ virtual void setPropertySet(OOXMLPropertySet::Pointer_t pPropertySet);
+ virtual OOXMLPropertySet::Pointer_t getPropertySet() const;
+
+ virtual string getType() const;
+
+protected:
+ virtual void lcl_startFastElement
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_endFastElement(Token_t Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual uno::Reference< xml::sax::XFastContextHandler >
+ lcl_createFastChildContext
+ (Token_t Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void lcl_characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ virtual void setId(Id nId);
+ virtual Id getId() const;
+
+ virtual void setToken(Token_t nToken);
+ virtual Token_t getToken() const;
+
+private:
+ uno::Reference<XFastContextHandler> mxContext;
+ set<Id> mMyNamespaces;
+ set<Token_t> mMyTokens;
+ OOXMLPropertySet::Pointer_t mpPropertySet;
+
+ OOXMLFastContextHandler * getFastContextHandler() const;
+};
+}}
+#endif // INCLUDED_OOXML_FAST_CONTEXT_HANDLER_HXX
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
new file mode 100644
index 000000000000..1768d486c80d
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
@@ -0,0 +1,233 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <iostream>
+#include <boost/shared_ptr.hpp>
+#ifdef DEBUG_ELEMENT
+#include "ooxmlLoggers.hxx"
+#include <resourcemodel/Protocol.hxx>
+#endif
+#include "OOXMLFastDocumentHandler.hxx"
+#include "OOXMLFastContextHandler.hxx"
+#include "OOXMLFastTokens.hxx"
+#include "OOXMLFactory.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::com::sun::star;
+using namespace ::std;
+
+
+OOXMLFastDocumentHandler::OOXMLFastDocumentHandler
+(uno::Reference< uno::XComponentContext > const & context)
+: m_xContext(context)
+{}
+
+// ::com::sun::star::xml::sax::XFastContextHandler:
+void SAL_CALL OOXMLFastDocumentHandler::startFastElement
+(::sal_Int32
+#ifdef DEBUG_CONTEXT_STACK
+Element
+#endif
+, const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":start element:"
+ << fastTokenToId(Element)
+ << endl;
+#endif
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::startUnknownElement
+(const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Namespace
+#endif
+, const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Name
+#endif
+,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":start unknown element:"
+ << OUStringToOString(Namespace, RTL_TEXTENCODING_ASCII_US).getStr()
+ << ":"
+ << OUStringToOString(Name, RTL_TEXTENCODING_ASCII_US).getStr()
+ << endl;
+#endif
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::endFastElement(::sal_Int32
+#ifdef DEBUG_CONTEXT_STACK
+Element
+#endif
+)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":end element:"
+ << fastTokenToId(Element)
+ << endl;
+#endif
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::endUnknownElement
+(const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Namespace
+#endif
+, const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Name
+#endif
+)
+throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":end unknown element:"
+ << OUStringToOString(Namespace, RTL_TEXTENCODING_ASCII_US).getStr()
+ << ":"
+ << OUStringToOString(Name, RTL_TEXTENCODING_ASCII_US).getStr()
+ << endl;
+#endif
+}
+
+OOXMLFastContextHandler::Pointer_t
+OOXMLFastDocumentHandler::getContextHandler() const
+{
+ if (mpContextHandler == OOXMLFastContextHandler::Pointer_t())
+ {
+ mpContextHandler.reset
+ (new OOXMLFastContextHandler(m_xContext));
+ mpContextHandler->setStream(mpStream);
+ mpContextHandler->setDocument(mpDocument);
+ mpContextHandler->setXNoteId(msXNoteId);
+ mpContextHandler->setForwardEvents(true);
+ }
+
+ return mpContextHandler;
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ OOXMLFastDocumentHandler::createFastChildContext
+(::sal_Int32 Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":createFastChildContext:"
+ << fastTokenToId(Element)
+ << endl;
+#endif
+
+ return OOXMLFactory::getInstance()->createFastChildContextFromStart(getContextHandler().get(), Element);
+}
+
+uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+OOXMLFastDocumentHandler::createUnknownChildContext
+(const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Namespace
+#endif
+,
+ const ::rtl::OUString &
+#ifdef DEBUG_CONTEXT_STACK
+Name
+#endif
+, const uno::Reference< xml::sax::XFastAttributeList > & /*Attribs*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ clog << this << ":createUnknownChildContext:"
+ << OUStringToOString(Namespace, RTL_TEXTENCODING_ASCII_US).getStr()
+ << ":"
+ << OUStringToOString(Name, RTL_TEXTENCODING_ASCII_US).getStr()
+ << endl;
+#endif
+
+ return uno::Reference< xml::sax::XFastContextHandler >
+ (new OOXMLFastDocumentHandler(m_xContext));
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::characters(const ::rtl::OUString & /*aChars*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ // TODO: Insert your implementation for "characters" here.
+}
+
+// ::com::sun::star::xml::sax::XFastDocumentHandler:
+void SAL_CALL OOXMLFastDocumentHandler::startDocument()
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::endDocument()
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+#ifdef DEBUG_CONTEXT_STACK
+ OOXMLFastContextHandler::dumpOpenContexts();
+#endif
+}
+
+void SAL_CALL OOXMLFastDocumentHandler::setDocumentLocator
+(const uno::Reference< xml::sax::XLocator > & /*xLocator*/)
+ throw (uno::RuntimeException, xml::sax::SAXException)
+{
+ // TODO: Insert your implementation for "setDocumentLocator" here.
+}
+
+void OOXMLFastDocumentHandler::setStream(Stream * pStream)
+{
+#ifdef DEBUG_PROTOCOL
+ mpTmpStream.reset(new StreamProtocol(pStream, debug_logger));
+ mpStream = mpTmpStream.get();
+#else
+ mpStream = pStream;
+#endif
+}
+
+void OOXMLFastDocumentHandler::setDocument(OOXMLDocument * pDocument)
+{
+ mpDocument = pDocument;
+}
+
+void OOXMLFastDocumentHandler::setXNoteId(const ::rtl::OUString & rXNoteId)
+{
+ msXNoteId = rXNoteId;
+}
+
+void OOXMLFastDocumentHandler::setIsSubstream( bool bSubstream )
+{
+ getContextHandler( )->getParserState( )->setInSectionGroup( bSubstream );
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
new file mode 100644
index 000000000000..ca322e0c2098
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_OOXML_FAST_DOCUMENT_HANDLER_HXX
+#define INCLUDED_OOXML_FAST_DOCUMENT_HANDLER_HXX
+
+#include <sal/config.h>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/xml/sax/XFastDocumentHandler.hpp>
+#include <resourcemodel/WW8ResourceModel.hxx>
+#include <ooxml/OOXMLDocument.hxx>
+#include "OOXMLParserState.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::com::sun::star;
+
+class OOXMLFastContextHandler;
+
+class OOXMLFastDocumentHandler:
+ public ::cppu::WeakImplHelper1<
+ xml::sax::XFastDocumentHandler>
+{
+public:
+ OOXMLFastDocumentHandler
+ (uno::Reference< uno::XComponentContext > const & context);
+ virtual ~OOXMLFastDocumentHandler() {}
+
+ // ::com::sun::star::xml::sax::XFastDocumentHandler:
+ virtual void SAL_CALL startDocument()
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL endDocument()
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL setDocumentLocator
+ (const uno::Reference< xml::sax::XLocator > & xLocator)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ // ::com::sun::star::xml::sax::XFastContextHandler:
+ virtual void SAL_CALL startFastElement
+ (::sal_Int32 Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL startUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL endFastElement(::sal_Int32 Element)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL endUnknownElement
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createFastChildContext
+ (::sal_Int32 Element,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
+ createUnknownChildContext
+ (const ::rtl::OUString & Namespace,
+ const ::rtl::OUString & Name,
+ const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+ virtual void SAL_CALL characters(const ::rtl::OUString & aChars)
+ throw (uno::RuntimeException, xml::sax::SAXException);
+
+ void setStream(Stream * pStream);
+ void setDocument(OOXMLDocument * pDocument);
+ void setXNoteId(const ::rtl::OUString & rXNoteId);
+
+ void setIsSubstream( bool bSubstream );
+
+private:
+ OOXMLFastDocumentHandler(OOXMLFastDocumentHandler &); // not defined
+ void operator =(OOXMLFastDocumentHandler &); // not defined
+
+ uno::Reference< uno::XComponentContext > m_xContext;
+
+ Stream * mpStream;
+#ifdef DEBUG_ELEMENT
+ Stream::Pointer_t mpTmpStream;
+#endif
+ OOXMLDocument * mpDocument;
+ ::rtl::OUString msXNoteId;
+ mutable boost::shared_ptr<OOXMLFastContextHandler> mpContextHandler;
+ boost::shared_ptr<OOXMLFastContextHandler> getContextHandler() const;
+};
+}}
+
+#endif // INCLUDED_OOXML_FAST_DOCUMENT_HANDLER_HXX
diff --git a/writerfilter/source/ooxml/OOXMLFastHelper.hxx b/writerfilter/source/ooxml/OOXMLFastHelper.hxx
new file mode 100644
index 000000000000..5d4587922a54
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastHelper.hxx
@@ -0,0 +1,253 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_FAST_HELPER_HXX
+#define INCLUDED_FAST_HELPER_HXX
+
+#include <iostream>
+#include <resourcemodel/QNameToString.hxx>
+#include "OOXMLFastContextHandler.hxx"
+#include "ooxmlLoggers.hxx"
+namespace writerfilter {
+
+namespace ooxml
+{
+using namespace ::std;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::xml::sax;
+
+template <class T>
+class OOXMLFastHelper
+{
+public:
+ static uno::Reference<XFastContextHandler> createAndSetParent
+ (OOXMLFastContextHandler * pHandler, sal_uInt32 nToken, Id nId);
+
+ static uno::Reference<XFastContextHandler> createAndSetParentAndDefine
+ (OOXMLFastContextHandler * pHandler, sal_uInt32 nToken, Id nId, Id nDefine);
+
+ static uno::Reference<XFastContextHandler> createAndSetParentRef
+ (OOXMLFastContextHandler * pHandler, sal_uInt32 nToken,
+ const uno::Reference < xml::sax::XFastAttributeList > & Attribs);
+
+ static void newProperty(OOXMLFastContextHandler * pHandler,
+ Id nId,
+ const ::rtl::OUString & rValue);
+
+ static void newProperty(OOXMLFastContextHandler * pHandler,
+ Id nId, sal_Int32 nValue);
+
+ static void mark(OOXMLFastContextHandler * pHandler,
+ Id nId,
+ const ::rtl::OUString & rValue);
+
+ static void attributes
+ (OOXMLFastContextHandler * pContext,
+ const uno::Reference < xml::sax::XFastAttributeList > & Attribs);
+};
+
+template <class T>
+uno::Reference<XFastContextHandler>
+OOXMLFastHelper<T>::createAndSetParent
+(OOXMLFastContextHandler * pHandler, sal_uInt32 nToken, Id nId)
+{
+ OOXMLFastContextHandler * pTmp = new T(pHandler);
+
+ pTmp->setToken(nToken);
+ pTmp->setId(nId);
+
+#ifdef DEBUG_CREATE
+ debug_logger->startElement("createAndSetParent");
+ debug_logger->attribute("context", pHandler->getType());
+ debug_logger->attribute("token", fastTokenToId(pTmp->getToken()));
+ debug_logger->attribute("id", (*QNameToString::Instance())(nId));
+
+ debug_logger->startElement("created");
+ debug_logger->addTag(pTmp->toTag());
+ debug_logger->endElement("created");
+ debug_logger->endElement("createAndSetParent");
+#endif
+
+ uno::Reference<XFastContextHandler> aResult(pTmp);
+
+ return aResult;
+}
+
+template <class T>
+uno::Reference<XFastContextHandler>
+OOXMLFastHelper<T>::createAndSetParentAndDefine
+(OOXMLFastContextHandler * pHandler, sal_uInt32 nToken, Id nId, Id nDefine)
+{
+ OOXMLFastContextHandler * pTmp = new T(pHandler);
+
+ pTmp->setToken(nToken);
+ pTmp->setId(nId);
+ pTmp->setDefine(nDefine);
+
+#ifdef DEBUG_CREATE
+ debug_logger->startElement("createAndSetParentAndDefine");
+ debug_logger->attribute("context", pHandler->getType());
+ debug_logger->attribute("token", fastTokenToId(pTmp->getToken()));
+ debug_logger->attribute("id", (*QNameToString::Instance())(nId));
+
+ static char buffer[16];
+ snprintf(buffer, sizeof(buffer), "0x%08" SAL_PRIxUINT32, nId);
+
+ debug_logger->attribute("idnum", buffer);
+
+ debug_logger->startElement("created");
+ debug_logger->addTag(pTmp->toTag());
+ debug_logger->endElement("created");
+ debug_logger->endElement("createAndSetParentAndDefine");
+#endif
+
+ uno::Reference<XFastContextHandler> aResult(pTmp);
+
+ return aResult;
+}
+
+template <class T>
+uno::Reference<XFastContextHandler>
+OOXMLFastHelper<T>::createAndSetParentRef
+(OOXMLFastContextHandler * pHandler, sal_uInt32 nToken,
+ const uno::Reference < xml::sax::XFastAttributeList > & Attribs)
+{
+ boost::shared_ptr<OOXMLFastContextHandler> pTmp(new T(pHandler));
+
+ uno::Reference<XFastContextHandler> xChild =
+ pTmp->createFastChildContext(nToken, Attribs);
+
+ OOXMLFastContextHandler * pResult = NULL;
+ if (xChild.is())
+ {
+ pResult = dynamic_cast<OOXMLFastContextHandler *>(xChild.get());
+ pResult->setToken(nToken);
+ pResult->setParent(pHandler);
+ }
+
+
+#ifdef DEBUG_CREATE
+ debug_logger->startElement("createAndSetParentRef");
+ debug_logger->attribute("context", pHandler->getType());
+ debug_logger->attribute("type", fastTokenToId(nToken));
+
+ debug_logger->startElement("created");
+ debug_logger->chars(pTmp->getType());
+ debug_logger->endElement("created");
+ debug_logger->endElement("createAndSetParentRef");
+#endif
+
+ return xChild;
+}
+
+template <class T>
+void OOXMLFastHelper<T>::newProperty(OOXMLFastContextHandler * pHandler,
+ Id nId,
+ const ::rtl::OUString & rValue)
+{
+ OOXMLValue::Pointer_t pVal(new T(rValue));
+
+#ifdef DEBUG_PROPERTIES
+ string aStr = (*QNameToString::Instance())(nId);
+
+ debug_logger->startElement("newProperty-from-string");
+ debug_logger->attribute("name", aStr);
+ debug_logger->attribute
+ ("value",
+ ::rtl::OUStringToOString
+ (rValue, RTL_TEXTENCODING_ASCII_US).getStr());
+
+ if (aStr.size() == 0)
+ debug_logger->addTag(XMLTag::Pointer_t(new XMLTag("unknown-qname")));
+
+ debug_logger->endElement("newProperty-from-string");
+#endif
+
+ pHandler->newProperty(nId, pVal);
+}
+
+template <class T>
+void OOXMLFastHelper<T>::newProperty(OOXMLFastContextHandler * pHandler,
+ Id nId,
+ sal_Int32 nVal)
+{
+ OOXMLValue::Pointer_t pVal(new T(nVal));
+
+#ifdef DEBUG_PROPERTIES
+ string aStr = (*QNameToString::Instance())(nId);
+
+ debug_logger->startElement("newProperty-from-int");
+ debug_logger->attribute("name", aStr);
+ debug_logger->attribute("value", pVal->toString());
+
+ if (aStr.size() == 0)
+ debug_logger->addTag(XMLTag::Pointer_t(new XMLTag("unknown-qname")));
+
+ debug_logger->endElement("newProperty-from-int");
+#endif
+
+ pHandler->newProperty(nId, pVal);
+}
+
+template <class T>
+void OOXMLFastHelper<T>::mark(OOXMLFastContextHandler * pHandler,
+ Id nId,
+ const ::rtl::OUString & rValue)
+{
+ OOXMLValue::Pointer_t pVal(new T(rValue));
+
+ string aStr = (*QNameToString::Instance())(nId);
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("mark");
+ debug_logger->attribute("name", aStr);
+ debug_logger->attribute
+ ("value",
+ ::rtl::OUStringToOString
+ (rValue, RTL_TEXTENCODING_ASCII_US).getStr());
+
+ if (aStr.size() == 0)
+ debug_logger->addTag(XMLTag::Pointer_t(new XMLTag("unknown-qname")));
+
+ debug_logger->endElement("mark");
+#endif
+
+ pHandler->mark(nId, pVal);
+}
+
+template <class T>
+void OOXMLFastHelper<T>::attributes
+(OOXMLFastContextHandler * pContext,
+ const uno::Reference < xml::sax::XFastAttributeList > & Attribs)
+ {
+ T aContext(pContext);
+
+ aContext.setPropertySet(pContext->getPropertySet());
+ aContext.attributes(Attribs);
+}
+
+}}
+#endif // INCLUDED_FAST_HELPER_HXX
diff --git a/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx b/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx
new file mode 100644
index 000000000000..bb44111195d2
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <iostream>
+#include <string.h>
+#include <ooxml/resourceids.hxx>
+#include "OOXMLFastTokenHandler.hxx"
+#include "gperffasttoken.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using namespace ::std;
+
+OOXMLFastTokenHandler::OOXMLFastTokenHandler
+(css::uno::Reference< css::uno::XComponentContext > const & context)
+: m_xContext(context)
+{}
+
+// ::com::sun::star::xml::sax::XFastTokenHandler:
+::sal_Int32 SAL_CALL OOXMLFastTokenHandler::getToken(const ::rtl::OUString & Identifier)
+ throw (css::uno::RuntimeException)
+{
+ ::sal_Int32 nResult = OOXML_FAST_TOKENS_END;
+
+ struct tokenmap::token * pToken =
+ tokenmap::Perfect_Hash::in_word_set
+ (OUStringToOString(Identifier, RTL_TEXTENCODING_ASCII_US).getStr(),
+ Identifier.getLength());
+
+ if (pToken != NULL)
+ nResult = pToken->nToken;
+
+#ifdef DEBUG_TOKEN
+ clog << "getToken: "
+ << OUStringToOString(Identifier, RTL_TEXTENCODING_ASCII_US).getStr()
+ << ", " << nResult
+ << endl;
+#endif
+
+ return nResult;
+}
+
+::rtl::OUString SAL_CALL OOXMLFastTokenHandler::getIdentifier(::sal_Int32 Token)
+ throw (css::uno::RuntimeException)
+{
+ ::rtl::OUString sResult;
+
+ if ( Token >= 0 || Token < OOXML_FAST_TOKENS_END )
+ {
+ static ::rtl::OUString aTokens[OOXML_FAST_TOKENS_END];
+
+ if (aTokens[Token].getLength() == 0)
+ aTokens[Token] = ::rtl::OUString::createFromAscii
+ (tokenmap::wordlist[Token].name);
+ }
+
+ return sResult;
+}
+
+css::uno::Sequence< ::sal_Int8 > SAL_CALL OOXMLFastTokenHandler::getUTF8Identifier(::sal_Int32 Token)
+ throw (css::uno::RuntimeException)
+{
+ if ( Token < 0 || Token >= OOXML_FAST_TOKENS_END )
+ return css::uno::Sequence< ::sal_Int8 >();
+
+ return css::uno::Sequence< ::sal_Int8 >(reinterpret_cast< const sal_Int8 *>(tokenmap::wordlist[Token].name), strlen(tokenmap::wordlist[Token].name));
+}
+
+::sal_Int32 SAL_CALL OOXMLFastTokenHandler::getTokenFromUTF8
+(const css::uno::Sequence< ::sal_Int8 > & Identifier) throw (css::uno::RuntimeException)
+{
+ ::sal_Int32 nResult = OOXML_FAST_TOKENS_END;
+
+ struct tokenmap::token * pToken =
+ tokenmap::Perfect_Hash::in_word_set
+ (reinterpret_cast<const char *>(Identifier.getConstArray()),
+ Identifier.getLength());
+
+ if (pToken != NULL)
+ nResult = pToken->nToken;
+
+#ifdef DEBUG_TOKEN
+ clog << "getTokenFromUTF8: "
+ << string(reinterpret_cast<const char *>
+ (Identifier.getConstArray()), Identifier.getLength())
+ << ", " << nResult
+ << (pToken == NULL ? ", failed" : "") << endl;
+#endif
+
+ return nResult;
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx b/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx
new file mode 100644
index 000000000000..5debd7224cb9
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_OOXML_FAST_TOKEN_HANDLER_HXX
+#define INCLUDED_OOXML_FAST_TOKEN_HANDLER_HXX
+
+#include "sal/config.h"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "cppuhelper/implbase1.hxx"
+#include "com/sun/star/xml/sax/XFastTokenHandler.hpp"
+
+namespace css = ::com::sun::star;
+
+namespace writerfilter {
+namespace ooxml
+{
+
+class OOXMLFastTokenHandler:
+ public ::cppu::WeakImplHelper1<
+ css::xml::sax::XFastTokenHandler>
+{
+public:
+ explicit OOXMLFastTokenHandler(css::uno::Reference< css::uno::XComponentContext > const & context);
+
+ // ::com::sun::star::xml::sax::XFastTokenHandler:
+ virtual ::sal_Int32 SAL_CALL getToken(const ::rtl::OUString & Identifier) throw (css::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getIdentifier(::sal_Int32 Token) throw (css::uno::RuntimeException);
+ virtual css::uno::Sequence< ::sal_Int8 > SAL_CALL getUTF8Identifier(::sal_Int32 Token) throw (css::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getTokenFromUTF8(const css::uno::Sequence< ::sal_Int8 > & Identifier) throw (css::uno::RuntimeException);
+
+private:
+ OOXMLFastTokenHandler(OOXMLFastTokenHandler &); // not defined
+ void operator =(OOXMLFastTokenHandler &); // not defined
+
+ virtual ~OOXMLFastTokenHandler() {}
+
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+};
+
+}}
+#endif // INCLUDED_OOXML_FAST_TOKEN_HANDLER_HXX
diff --git a/writerfilter/source/ooxml/OOXMLParserState.cxx b/writerfilter/source/ooxml/OOXMLParserState.cxx
new file mode 100644
index 000000000000..fb347d02048e
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLParserState.cxx
@@ -0,0 +1,325 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <stdio.h>
+#include <iostream>
+#include "OOXMLParserState.hxx"
+#include "ooxmlLoggers.hxx"
+
+namespace writerfilter {
+namespace ooxml
+{
+/*
+ class OOXMLParserState
+*/
+
+OOXMLParserState::OOXMLParserState() :
+ mbInSectionGroup(false),
+ mbInParagraphGroup(false),
+ mbInCharacterGroup(false),
+ mbLastParagraphInSection(false),
+ mbForwardEvents(true),
+ mnContexts(0),
+ mnHandle(0),
+ mpDocument(NULL)
+{
+}
+
+OOXMLParserState::~OOXMLParserState()
+{
+}
+
+void OOXMLParserState::setLastParagraphInSection(bool bLastParagraphInSection)
+{
+ mbLastParagraphInSection = bLastParagraphInSection;
+}
+
+bool OOXMLParserState::isLastParagraphInSection() const
+{
+ return mbLastParagraphInSection;
+}
+
+bool OOXMLParserState::isInSectionGroup() const
+{
+ return mbInSectionGroup;
+}
+
+void OOXMLParserState::setInSectionGroup(bool bInSectionGroup)
+{
+ mbInSectionGroup = bInSectionGroup;
+}
+
+bool OOXMLParserState::isInParagraphGroup() const
+{
+ return mbInParagraphGroup;
+}
+
+void OOXMLParserState::setInParagraphGroup(bool bInParagraphGroup)
+{
+ mbInParagraphGroup = bInParagraphGroup;
+}
+
+bool OOXMLParserState::isInCharacterGroup() const
+{
+ return mbInCharacterGroup;
+}
+
+void OOXMLParserState::setInCharacterGroup(bool bInCharacterGroup)
+{
+ mbInCharacterGroup = bInCharacterGroup;
+}
+
+void OOXMLParserState::setForwardEvents(bool bForwardEvents)
+{
+ mbForwardEvents = bForwardEvents;
+}
+
+bool OOXMLParserState::isForwardEvents() const
+{
+ return mbForwardEvents;
+}
+
+const string OOXMLParserState::getHandle() const
+{
+ char sBuffer[256];
+
+ snprintf(sBuffer, sizeof(sBuffer), "%d", mnHandle);
+
+ return sBuffer;
+}
+
+void OOXMLParserState::setHandle()
+{
+ mnHandle = mnContexts;
+}
+
+void OOXMLParserState::setDocument(OOXMLDocument * pDocument)
+{
+ mpDocument = pDocument;
+}
+
+OOXMLDocument * OOXMLParserState::getDocument() const
+{
+ return mpDocument;
+}
+
+void OOXMLParserState::setXNoteId(const rtl::OUString & rId)
+{
+ mpDocument->setXNoteId(rId);
+}
+
+const rtl::OUString & OOXMLParserState::getXNoteId() const
+{
+ return mpDocument->getXNoteId();
+}
+
+const ::rtl::OUString & OOXMLParserState::getTarget() const
+{
+ return mpDocument->getTarget();
+}
+
+void OOXMLParserState::resolveCharacterProperties(Stream & rStream)
+{
+ if (mpCharacterProps.get() != NULL)
+ {
+#ifdef DEBUG_PROPERTIES
+ debug_logger->startElement("resolveCharacterProperties");
+#endif
+
+ rStream.props(mpCharacterProps);
+ mpCharacterProps.reset(new OOXMLPropertySetImpl());
+
+#ifdef DEBUG_PROPERTIES
+ debug_logger->endElement("resolveCharacterProperties");
+#endif
+ }
+}
+
+void OOXMLParserState::setCharacterProperties
+(OOXMLPropertySet::Pointer_t pProps)
+{
+ if (mpCharacterProps.get() == NULL)
+ mpCharacterProps = pProps;
+ else
+ mpCharacterProps->add(pProps);
+}
+
+void OOXMLParserState::setCellProperties
+(OOXMLPropertySet::Pointer_t pProps)
+{
+ if (mCellProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rCellProps = mCellProps.top();
+
+ if (rCellProps.get() == NULL)
+ rCellProps = pProps;
+ else
+ rCellProps->add(pProps);
+ }
+}
+
+void OOXMLParserState::setRowProperties
+(OOXMLPropertySet::Pointer_t pProps)
+{
+ if (mRowProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rRowProps = mRowProps.top();
+
+ if (rRowProps.get() == NULL)
+ rRowProps = pProps;
+ else
+ rRowProps->add(pProps);
+ }
+}
+
+void OOXMLParserState::resolveCellProperties(Stream & rStream)
+{
+ if (mCellProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rCellProps = mCellProps.top();
+
+ if (rCellProps.get() != NULL)
+ {
+ rStream.props(rCellProps);
+ rCellProps.reset(new OOXMLPropertySetImpl());
+ }
+ }
+}
+
+void OOXMLParserState::resolveRowProperties(Stream & rStream)
+{
+ if (mRowProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rRowProps = mRowProps.top();
+
+ if (rRowProps.get() != NULL)
+ {
+ rStream.props(rRowProps);
+ rRowProps.reset(new OOXMLPropertySetImpl());
+ }
+ }
+}
+
+void OOXMLParserState::resolveTableProperties(Stream & rStream)
+{
+ if (mTableProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rTableProps = mTableProps.top();
+
+ if (rTableProps.get() != NULL)
+ {
+ rStream.props(rTableProps);
+ rTableProps.reset(new OOXMLPropertySetImpl());
+ }
+ }
+}
+
+void OOXMLParserState::setTableProperties
+(OOXMLPropertySet::Pointer_t pProps)
+{
+ if (mTableProps.size() > 0)
+ {
+ OOXMLPropertySet::Pointer_t & rTableProps = mTableProps.top();
+ if (rTableProps.get() == NULL)
+ rTableProps = pProps;
+ else
+ rTableProps->add(pProps);
+ }
+}
+
+void OOXMLParserState::startTable()
+{
+ OOXMLPropertySet::Pointer_t pCellProps;
+ OOXMLPropertySet::Pointer_t pRowProps;
+ OOXMLPropertySet::Pointer_t pTableProps;
+
+ mCellProps.push(pCellProps);
+ mRowProps.push(pRowProps);
+ mTableProps.push(pTableProps);
+}
+
+void OOXMLParserState::endTable()
+{
+ mCellProps.pop();
+ mRowProps.pop();
+ mTableProps.pop();
+}
+
+void OOXMLParserState::incContextCount()
+{
+ mnContexts++;
+}
+
+#ifdef DEBUG
+unsigned int OOXMLParserState::getContextCount() const
+{
+ return mnContexts;
+}
+
+string OOXMLParserState::toString() const
+{
+ return toTag()->toString();
+}
+
+XMLTag::Pointer_t OOXMLParserState::toTag() const
+{
+ XMLTag::Pointer_t pTag(new XMLTag("parserstate"));
+
+ string sTmp;
+
+ if (isInSectionGroup())
+ sTmp += "s";
+ else
+ sTmp += "-";
+
+ if (isInParagraphGroup())
+ sTmp += "p";
+ else
+ sTmp += "-";
+
+ if (isInCharacterGroup())
+ sTmp += "c";
+ else
+ sTmp += "-";
+
+ if (isForwardEvents())
+ sTmp += "f";
+ else
+ sTmp += "-";
+
+ pTag->addAttr("state", sTmp);
+ pTag->addAttr("XNoteId",
+ OUStringToOString(getXNoteId(),
+ RTL_TEXTENCODING_ASCII_US).getStr());
+ if (mpCharacterProps != OOXMLPropertySet::Pointer_t())
+ pTag->chars(mpCharacterProps->toString());
+
+ return pTag;
+ }
+#endif
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLParserState.hxx b/writerfilter/source/ooxml/OOXMLParserState.hxx
new file mode 100644
index 000000000000..2dd118a5b96b
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLParserState.hxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDE_OOXML_PARSER_STATE_HXX
+#define INCLUDE_OOXML_PARSER_STATE_HXX
+
+#include <stack>
+#include <ooxml/OOXMLDocument.hxx>
+#include "OOXMLPropertySetImpl.hxx"
+
+#ifdef DEBUG
+#include <resourcemodel/TagLogger.hxx>
+#endif
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using ::std::stack;
+
+class OOXMLParserState
+{
+ bool mbInSectionGroup;
+ bool mbInParagraphGroup;
+ bool mbInCharacterGroup;
+ bool mbLastParagraphInSection;
+ bool mbForwardEvents;
+ unsigned int mnContexts;
+ unsigned int mnHandle;
+ OOXMLDocument * mpDocument;
+ rtl::OUString msXNoteId;
+ rtl::OUString msTarget;
+ OOXMLPropertySet::Pointer_t mpCharacterProps;
+ stack<OOXMLPropertySet::Pointer_t> mCellProps;
+ stack<OOXMLPropertySet::Pointer_t> mRowProps;
+ stack<OOXMLPropertySet::Pointer_t> mTableProps;
+
+public:
+ typedef boost::shared_ptr<OOXMLParserState> Pointer_t;
+
+ OOXMLParserState();
+ virtual ~OOXMLParserState();
+
+ bool isInSectionGroup() const;
+ void setInSectionGroup(bool bInSectionGroup);
+
+ void setLastParagraphInSection(bool bLastParagraphInSection);
+ bool isLastParagraphInSection() const;
+
+ bool isInParagraphGroup() const;
+ void setInParagraphGroup(bool bInParagraphGroup);
+
+ bool isInCharacterGroup() const;
+ void setInCharacterGroup(bool bInCharacterGroup);
+
+ void setForwardEvents(bool bForwardEvents);
+ bool isForwardEvents() const;
+
+ const string getHandle() const;
+ void setHandle();
+
+ void setDocument(OOXMLDocument * pDocument);
+ OOXMLDocument * getDocument() const;
+
+ void setXNoteId(const rtl::OUString & rId);
+ const rtl::OUString & getXNoteId() const;
+
+ const rtl::OUString & getTarget() const;
+
+ void resolveCharacterProperties(Stream & rStream);
+ void setCharacterProperties(OOXMLPropertySet::Pointer_t pProps);
+ void resolveCellProperties(Stream & rStream);
+ void setCellProperties(OOXMLPropertySet::Pointer_t pProps);
+ void resolveRowProperties(Stream & rStream);
+ void setRowProperties(OOXMLPropertySet::Pointer_t pProps);
+ void resolveTableProperties(Stream & rStream);
+ void setTableProperties(OOXMLPropertySet::Pointer_t pProps);
+
+ void startTable();
+ void endTable();
+
+ void incContextCount();
+
+#ifdef DEBUG
+public:
+ unsigned int getContextCount() const;
+ string toString() const;
+ XMLTag::Pointer_t toTag() const;
+#endif
+
+};
+
+}}
+
+#endif // INCLUDE_OOXML_PARSER_STATE_HXX
diff --git a/writerfilter/source/ooxml/OOXMLPropertySet.hxx b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
new file mode 100644
index 000000000000..d448b58cc304
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_OOXML_PROPERTY_SET_HXX
+#define INCLUDED_OOXML_PROPERTY_SET_HXX
+
+#include <resourcemodel/WW8ResourceModel.hxx>
+
+namespace writerfilter {
+namespace ooxml
+{
+
+class OOXMLProperty : public Sprm
+{
+public:
+ typedef boost::shared_ptr<OOXMLProperty> Pointer_t;
+
+ virtual ~OOXMLProperty();
+
+ virtual sal_uInt32 getId() const = 0;
+ virtual Value::Pointer_t getValue() = 0;
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary() = 0;
+ virtual writerfilter::Reference<Stream>::Pointer_t getStream() = 0;
+ virtual writerfilter::Reference<Properties>::Pointer_t getProps() = 0;
+ virtual string getName() const = 0;
+ virtual string toString() const = 0;
+ virtual void resolve(Properties & rProperties) = 0;
+
+ virtual Sprm * clone() = 0;
+};
+
+class OOXMLPropertySet : public writerfilter::Reference<Properties>
+{
+public:
+ typedef boost::shared_ptr<OOXMLPropertySet> Pointer_t;
+
+ virtual ~OOXMLPropertySet();
+
+ virtual void resolve(Properties & rHandler) = 0;
+ virtual string getType() const = 0;
+ virtual void add(OOXMLProperty::Pointer_t pProperty) = 0;
+ virtual void add(OOXMLPropertySet::Pointer_t pPropertySet) = 0;
+ virtual OOXMLPropertySet * clone() const = 0;
+ virtual void setType(const string & rsType) = 0;
+
+ virtual string toString() = 0;
+};
+
+class OOXMLTable : public writerfilter::Reference<Table>
+{
+public:
+ virtual ~OOXMLTable();
+
+ virtual void resolve(Table & rTable) = 0;
+ virtual OOXMLTable * clone() const = 0;
+};
+}}
+
+#endif // INCLUDED_OOXML_PROPERTY_SET_HXX
diff --git a/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx
new file mode 100644
index 000000000000..f106972b23c0
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx
@@ -0,0 +1,792 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "OOXMLPropertySetImpl.hxx"
+#include <stdio.h>
+#include <iostream>
+#include <resourcemodel/QNameToString.hxx>
+#include <resourcemodel/Protocol.hxx>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <ooxml/OOXMLFastTokens.hxx>
+#include "ooxmlLoggers.hxx"
+
+//#define DEBUG_RESOLVE
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::std;
+
+static ::rtl::OUString strue(RTL_CONSTASCII_USTRINGPARAM("true"));
+static ::rtl::OUString sTrue(RTL_CONSTASCII_USTRINGPARAM("True"));
+static ::rtl::OUString s1(RTL_CONSTASCII_USTRINGPARAM("1"));
+static ::rtl::OUString sOn(RTL_CONSTASCII_USTRINGPARAM("On"));
+static ::rtl::OUString son(RTL_CONSTASCII_USTRINGPARAM("on"));
+
+OOXMLProperty::~OOXMLProperty()
+{
+}
+
+OOXMLPropertySet::~OOXMLPropertySet()
+{
+}
+
+OOXMLTable::~OOXMLTable()
+{
+}
+
+OOXMLPropertyImpl::OOXMLPropertyImpl(Id id, OOXMLValue::Pointer_t pValue,
+ OOXMLPropertyImpl::Type_t eType)
+: mId(id), mpValue(pValue), meType(eType)
+{
+}
+
+OOXMLPropertyImpl::OOXMLPropertyImpl(const OOXMLPropertyImpl & rSprm)
+: OOXMLProperty(), mId(rSprm.mId), mpValue(rSprm.mpValue), meType(rSprm.meType)
+{
+}
+
+OOXMLPropertyImpl::~OOXMLPropertyImpl()
+{
+}
+
+sal_uInt32 OOXMLPropertyImpl::getId() const
+{
+ return mId;
+}
+
+Value::Pointer_t OOXMLPropertyImpl::getValue()
+{
+ Value::Pointer_t pResult;
+
+ if (mpValue.get() != NULL)
+ pResult = Value::Pointer_t(mpValue->clone());
+ else
+ pResult = Value::Pointer_t(new OOXMLValue());
+
+ return pResult;
+}
+
+writerfilter::Reference<BinaryObj>::Pointer_t OOXMLPropertyImpl::getBinary()
+{
+ writerfilter::Reference<BinaryObj>::Pointer_t pResult;
+
+ if (mpValue.get() != NULL)
+ pResult = mpValue->getBinary();
+
+ return pResult;
+}
+
+writerfilter::Reference<Stream>::Pointer_t OOXMLPropertyImpl::getStream()
+{
+ writerfilter::Reference<Stream>::Pointer_t pResult;
+
+ if (mpValue.get() != NULL)
+ pResult = mpValue->getStream();
+
+ return pResult;
+}
+
+writerfilter::Reference<Properties>::Pointer_t OOXMLPropertyImpl::getProps()
+{
+ writerfilter::Reference<Properties>::Pointer_t pResult;
+
+ if (mpValue.get() != NULL)
+ pResult = mpValue->getProperties();
+
+ return pResult;
+}
+
+string OOXMLPropertyImpl::getName() const
+{
+ string sResult = (*QNameToString::Instance())(mId);
+
+ if (sResult.length() == 0)
+ sResult = (*SprmIdToString::Instance())(mId);
+
+ if (sResult.length() == 0)
+ sResult = fastTokenToId(mId);
+
+ if (sResult.length() == 0)
+ {
+ static char sBuffer[256];
+
+ snprintf(sBuffer, sizeof(sBuffer), "%" SAL_PRIxUINT32, mId);
+ sResult = sBuffer;
+ }
+
+ return sResult;
+}
+
+string OOXMLPropertyImpl::toString() const
+{
+ string sResult = "(";
+
+ sResult += getName();
+ sResult += ", ";
+ if (mpValue.get() != NULL)
+ sResult += mpValue->toString();
+ else
+ sResult +="(null)";
+ sResult +=")";
+
+ return sResult;
+}
+
+Sprm::Kind OOXMLPropertyImpl::getKind()
+{
+ return SprmKind(getId());
+}
+
+Sprm * OOXMLPropertyImpl::clone()
+{
+ return new OOXMLPropertyImpl(*this);
+}
+
+void OOXMLPropertyImpl::resolve(writerfilter::Properties & rProperties)
+{
+ writerfilter::Properties * pProperties = NULL;
+#ifdef DEBUG_PROTOCOL
+ writerfilter::PropertiesProtocol::Pointer_t pProtocol
+ (new writerfilter::PropertiesProtocol(&rProperties, debug_logger));
+ pProperties = pProtocol.get();
+#else
+ pProperties = &rProperties;
+#endif
+
+ switch (meType)
+ {
+ case SPRM:
+ if (mId != 0x0)
+ pProperties->sprm(*this);
+ break;
+ case ATTRIBUTE:
+ pProperties->attribute(mId, *getValue());
+ break;
+ }
+}
+
+/*
+ class OOXMLValue
+*/
+
+OOXMLValue::OOXMLValue()
+{
+}
+
+OOXMLValue::~OOXMLValue()
+{
+}
+
+bool OOXMLValue::getBool() const
+{
+ return false;
+}
+
+int OOXMLValue::getInt() const
+{
+ return 0;
+}
+
+::rtl::OUString OOXMLValue::getString() const
+{
+ return ::rtl::OUString();
+}
+
+uno::Any OOXMLValue::getAny() const
+{
+ return uno::Any();
+}
+
+writerfilter::Reference<Properties>::Pointer_t OOXMLValue::getProperties()
+{
+ return writerfilter::Reference<Properties>::Pointer_t();
+}
+
+writerfilter::Reference<Stream>::Pointer_t OOXMLValue::getStream()
+{
+ return writerfilter::Reference<Stream>::Pointer_t();
+}
+
+writerfilter::Reference<BinaryObj>::Pointer_t OOXMLValue::getBinary()
+{
+ return writerfilter::Reference<BinaryObj>::Pointer_t();
+}
+
+string OOXMLValue::toString() const
+{
+ return "OOXMLValue";
+}
+
+OOXMLValue * OOXMLValue::clone() const
+{
+ return new OOXMLValue(*this);
+}
+
+/*
+ class OOXMLBinaryValue
+ */
+
+OOXMLBinaryValue::OOXMLBinaryValue(OOXMLBinaryObjectReference::Pointer_t
+ pBinaryObj)
+: mpBinaryObj(pBinaryObj)
+{
+}
+
+OOXMLBinaryValue::~OOXMLBinaryValue()
+{
+}
+
+writerfilter::Reference<BinaryObj>::Pointer_t OOXMLBinaryValue::getBinary()
+{
+ return mpBinaryObj;
+}
+
+string OOXMLBinaryValue::toString() const
+{
+ return "BinaryObj";
+}
+
+OOXMLValue * OOXMLBinaryValue::clone() const
+{
+ return new OOXMLBinaryValue(mpBinaryObj);
+}
+
+/*
+ class OOXMLBooleanValue
+*/
+
+OOXMLBooleanValue::OOXMLBooleanValue(bool bValue)
+: mbValue(bValue)
+{
+}
+
+OOXMLBooleanValue::OOXMLBooleanValue(const rtl::OUString & rValue)
+: mbValue(false)
+{
+ if (strue.compareTo(rValue) == 0
+ || sTrue.compareTo(rValue) == 0
+ || s1.compareTo(rValue) == 0
+ || son.compareTo(rValue) == 0
+ || sOn.compareTo(rValue) == 0)
+ mbValue = true;
+ else
+ mbValue = false;
+}
+
+OOXMLBooleanValue::~OOXMLBooleanValue()
+{
+}
+
+bool OOXMLBooleanValue::getBool() const
+{
+ return mbValue;
+}
+
+int OOXMLBooleanValue::getInt() const
+{
+ return mbValue ? 1 : 0;
+}
+
+uno::Any OOXMLBooleanValue::getAny() const
+{
+ uno::Any aResult(mbValue);
+
+ return aResult;
+}
+
+string OOXMLBooleanValue::toString() const
+{
+ return mbValue ? "true" : "false";
+}
+
+OOXMLValue * OOXMLBooleanValue::clone() const
+{
+ return new OOXMLBooleanValue(*this);
+}
+
+/*
+ class OOXMLStringValue
+*/
+
+OOXMLStringValue::OOXMLStringValue(const rtl::OUString & rStr)
+: mStr(rStr)
+{
+}
+
+OOXMLStringValue::~OOXMLStringValue()
+{
+}
+
+uno::Any OOXMLStringValue::getAny() const
+{
+ uno::Any aAny(mStr);
+
+ return aAny;
+}
+
+rtl::OUString OOXMLStringValue::getString() const
+{
+ return mStr;
+}
+
+string OOXMLStringValue::toString() const
+{
+ return OUStringToOString(mStr, RTL_TEXTENCODING_ASCII_US).getStr();
+}
+
+OOXMLValue * OOXMLStringValue::clone() const
+{
+ return new OOXMLStringValue(*this);
+}
+
+/*
+ class OOXMLInputStreamValue
+ */
+OOXMLInputStreamValue::OOXMLInputStreamValue(uno::Reference<io::XInputStream> xInputStream)
+: mxInputStream(xInputStream)
+{
+}
+
+OOXMLInputStreamValue::~OOXMLInputStreamValue()
+{
+}
+
+uno::Any OOXMLInputStreamValue::getAny() const
+{
+ uno::Any aAny(mxInputStream);
+
+ return aAny;
+}
+
+string OOXMLInputStreamValue::toString() const
+{
+ return "InputStream";
+}
+
+OOXMLValue * OOXMLInputStreamValue::clone() const
+{
+ return new OOXMLInputStreamValue(mxInputStream);
+}
+
+/*
+ struct OOXMLPropertySetImplCompare
+ */
+
+bool OOXMLPropertySetImplCompare::operator()(const OOXMLProperty::Pointer_t x,
+ const OOXMLProperty::Pointer_t y) const
+{
+ bool bResult = false;
+
+ if (x.get() == NULL && y.get() != NULL)
+ bResult = true;
+ else if (x.get() != NULL && y.get() != NULL)
+ bResult = x->getId() < y->getId();
+
+ return bResult;
+}
+
+/**
+ class OOXMLPropertySetImpl
+*/
+
+OOXMLPropertySetImpl::OOXMLPropertySetImpl()
+: msType("OOXMLPropertySetImpl")
+{
+}
+
+OOXMLPropertySetImpl::~OOXMLPropertySetImpl()
+{
+}
+
+void OOXMLPropertySetImpl::resolve(Properties & rHandler)
+{
+ OOXMLProperties_t::iterator aIt = begin();
+ while (aIt != end())
+ {
+ OOXMLProperty::Pointer_t pProp = *aIt;
+
+ if (pProp.get() != NULL)
+ pProp->resolve(rHandler);
+#ifdef DEBUG_RESOLVE
+ else
+ {
+ debug_logger->startElement("error");
+ debug_logger->chars("zero-property");
+ debug_logger->endElement("error");
+ }
+#endif
+
+ aIt++;
+ }
+}
+
+OOXMLPropertySetImpl::OOXMLProperties_t::iterator OOXMLPropertySetImpl::begin()
+{
+ return mProperties.begin();
+}
+
+OOXMLPropertySetImpl::OOXMLProperties_t::iterator OOXMLPropertySetImpl::end()
+{
+ return mProperties.end();
+}
+
+OOXMLPropertySetImpl::OOXMLProperties_t::const_iterator
+OOXMLPropertySetImpl::begin() const
+{
+ return mProperties.begin();
+}
+
+OOXMLPropertySetImpl::OOXMLProperties_t::const_iterator
+OOXMLPropertySetImpl::end() const
+{
+ return mProperties.end();
+}
+
+string OOXMLPropertySetImpl::getType() const
+{
+ return msType;
+}
+
+void OOXMLPropertySetImpl::add(OOXMLProperty::Pointer_t pProperty)
+{
+ if (pProperty.get() != NULL && pProperty->getId() != 0x0)
+ {
+ mProperties.push_back(pProperty);
+ }
+#ifdef DEBUG_PROPERTIES
+ else
+ {
+ debug_logger->element("warning.property_not_added");
+ }
+#endif
+}
+
+void OOXMLPropertySetImpl::add(OOXMLPropertySet::Pointer_t pPropertySet)
+{
+ if (pPropertySet.get() != NULL)
+ {
+ OOXMLPropertySetImpl * pSet =
+ dynamic_cast<OOXMLPropertySetImpl *>(pPropertySet.get());
+
+ if (pSet != NULL)
+ {
+ mProperties.resize(mProperties.size() + pSet->mProperties.size());
+ for (OOXMLProperties_t::iterator aIt = pSet->mProperties.begin();
+ aIt != pSet->mProperties.end(); aIt++)
+ add(*aIt);
+ }
+ }
+}
+
+OOXMLPropertySet * OOXMLPropertySetImpl::clone() const
+{
+ return new OOXMLPropertySetImpl(*this);
+}
+
+void OOXMLPropertySetImpl::setType(const string & rsType)
+{
+ msType = rsType;
+}
+
+string OOXMLPropertySetImpl::toString()
+{
+ string sResult = "[";
+ char sBuffer[256];
+ snprintf(sBuffer, sizeof(sBuffer), "%p", this);
+ sResult += sBuffer;
+ sResult += ":";
+
+ OOXMLProperties_t::iterator aItBegin = begin();
+ OOXMLProperties_t::iterator aItEnd = end();
+
+ for (OOXMLProperties_t::iterator aIt = aItBegin; aIt != aItEnd; aIt++)
+ {
+ if (aIt != aItBegin)
+ sResult += ", ";
+
+ if ((*aIt).get() != NULL)
+ sResult += (*aIt)->toString();
+ else
+ sResult += "0x0";
+ }
+
+ sResult += "]";
+
+ return sResult;
+}
+
+/*
+ class OOXMLPropertySetValue
+*/
+
+OOXMLPropertySetValue::OOXMLPropertySetValue
+(OOXMLPropertySet::Pointer_t pPropertySet)
+: mpPropertySet(pPropertySet)
+{
+}
+
+OOXMLPropertySetValue::~OOXMLPropertySetValue()
+{
+}
+
+writerfilter::Reference<Properties>::Pointer_t OOXMLPropertySetValue::getProperties()
+{
+ return writerfilter::Reference<Properties>::Pointer_t
+ (mpPropertySet->clone());
+}
+
+string OOXMLPropertySetValue::toString() const
+{
+ char sBuffer[256];
+
+ snprintf(sBuffer, sizeof(sBuffer), "t:%p, m:%p", this, mpPropertySet.get());
+
+ return "OOXMLPropertySetValue(" + string(sBuffer) + ")";
+}
+
+OOXMLValue * OOXMLPropertySetValue::clone() const
+{
+ return new OOXMLPropertySetValue(*this);
+}
+
+/*
+ class OOXMLIntegerValue
+*/
+
+OOXMLIntegerValue::OOXMLIntegerValue(sal_Int32 nValue)
+: mnValue(nValue)
+{
+}
+
+OOXMLIntegerValue::OOXMLIntegerValue(const rtl::OUString & rValue)
+: mnValue(0)
+{
+ mnValue = rValue.toInt32();
+}
+
+OOXMLIntegerValue::~OOXMLIntegerValue()
+{
+}
+
+int OOXMLIntegerValue::getInt() const
+{
+ return mnValue;
+}
+
+uno::Any OOXMLIntegerValue::getAny() const
+{
+ uno::Any aResult(mnValue);
+
+ return aResult;
+}
+
+OOXMLValue * OOXMLIntegerValue::clone() const
+{
+ return new OOXMLIntegerValue(*this);
+}
+
+string OOXMLIntegerValue::toString() const
+{
+ char buffer[256];
+ snprintf(buffer, sizeof(buffer), "%" SAL_PRIdINT32, mnValue);
+
+ return buffer;
+}
+
+/*
+ class OOXMLHexValue
+*/
+
+OOXMLHexValue::OOXMLHexValue(sal_uInt32 nValue)
+: mnValue(nValue)
+{
+}
+
+OOXMLHexValue::OOXMLHexValue(const rtl::OUString & rValue)
+{
+ mnValue = static_cast<sal_uInt32>(rValue.toInt32(16));
+}
+
+OOXMLHexValue::~OOXMLHexValue()
+{
+}
+
+int OOXMLHexValue::getInt() const
+{
+ return mnValue;
+}
+
+OOXMLValue * OOXMLHexValue::clone() const
+{
+ return new OOXMLHexValue(*this);
+}
+
+string OOXMLHexValue::toString() const
+{
+ char buffer[256];
+ snprintf(buffer, sizeof(buffer), "0x%" SAL_PRIxUINT32, mnValue);
+
+ return buffer;
+}
+
+/*
+ class OOXMLShapeValue
+ */
+
+
+OOXMLShapeValue::OOXMLShapeValue(uno::Reference<XShape> rShape)
+: mrShape(rShape)
+{
+}
+
+OOXMLShapeValue::~OOXMLShapeValue()
+{
+}
+
+uno::Any OOXMLShapeValue::getAny() const
+{
+ return uno::Any(mrShape);
+}
+
+string OOXMLShapeValue::toString() const
+{
+ return "Shape";
+}
+
+OOXMLValue * OOXMLShapeValue::clone() const
+{
+ return new OOXMLShapeValue(mrShape);
+}
+
+/*
+ class OOXMLTableImpl
+ */
+
+OOXMLTableImpl::OOXMLTableImpl()
+{
+}
+
+OOXMLTableImpl::~OOXMLTableImpl()
+{
+}
+
+void OOXMLTableImpl::resolve(Table & rTable)
+{
+#ifdef DEBUG_PROTOCOL
+ Table::Pointer_t pTable(new TableProtocol(&rTable, debug_logger));
+#else
+ Table * pTable = &rTable;
+#endif
+
+ int nPos = 0;
+
+ PropertySets_t::iterator it = mPropertySets.begin();
+ PropertySets_t::iterator itEnd = mPropertySets.end();
+
+ while (it != itEnd)
+ {
+ writerfilter::Reference<Properties>::Pointer_t pProperties
+ ((*it)->getProperties());
+
+ if (pProperties.get() != NULL)
+ pTable->entry(nPos, pProperties);
+
+ ++nPos;
+ it++;
+ }
+}
+
+void OOXMLTableImpl::add(ValuePointer_t pPropertySet)
+{
+ if (pPropertySet.get() != NULL)
+ mPropertySets.push_back(pPropertySet);
+}
+
+string OOXMLTableImpl::getType() const
+{
+ return "OOXMLTableImpl";
+}
+
+OOXMLTable * OOXMLTableImpl::clone() const
+{
+ return new OOXMLTableImpl(*this);
+}
+
+/*
+ class: OOXMLPropertySetEntryToString
+*/
+
+OOXMLPropertySetEntryToString::OOXMLPropertySetEntryToString(Id nId)
+: mnId(nId)
+{
+}
+
+OOXMLPropertySetEntryToString::~OOXMLPropertySetEntryToString()
+{
+}
+
+void OOXMLPropertySetEntryToString::sprm(Sprm & /*rSprm*/)
+{
+}
+
+void OOXMLPropertySetEntryToString::attribute(Id nId, Value & rValue)
+{
+ if (nId == mnId)
+ mStr = rValue.getString();
+}
+
+const ::rtl::OUString & OOXMLPropertySetEntryToString::getString() const
+{
+ return mStr;
+}
+
+OOXMLPropertySetEntryToInteger::OOXMLPropertySetEntryToInteger(Id nId)
+: mnId(nId)
+{
+}
+
+OOXMLPropertySetEntryToInteger::~OOXMLPropertySetEntryToInteger()
+{
+}
+
+void OOXMLPropertySetEntryToInteger::sprm(Sprm & /*rSprm*/)
+{
+}
+
+void OOXMLPropertySetEntryToInteger::attribute(Id nId, Value & rValue)
+{
+ if (nId == mnId)
+ mnValue = rValue.getInt();
+}
+
+int OOXMLPropertySetEntryToInteger::getValue() const
+{
+ return mnValue;
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx b/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx
new file mode 100644
index 000000000000..a04fc5f5d1af
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx
@@ -0,0 +1,289 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_OOXML_PROPERTY_SET_IMPL_HXX
+#define INCLUDED_OOXML_PROPERTY_SET_IMPL_HXX
+
+#include <vector>
+#include "OOXMLPropertySet.hxx"
+#include "OOXMLBinaryObjectReference.hxx"
+
+namespace com {
+namespace sun {
+namespace star {
+namespace drawing {
+class XShape;
+}}}}
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::std;
+using ::com::sun::star::drawing::XShape;
+
+class OOXMLValue : public Value
+{
+public:
+ typedef boost::shared_ptr<OOXMLValue> Pointer_t;
+ OOXMLValue();
+ virtual ~OOXMLValue();
+
+ virtual int getInt() const;
+ virtual bool getBool() const;
+ virtual ::rtl::OUString getString() const;
+ virtual uno::Any getAny() const;
+ virtual writerfilter::Reference<Properties>::Pointer_t getProperties();
+ virtual writerfilter::Reference<Stream>::Pointer_t getStream();
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary();
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLPropertyImpl : public OOXMLProperty
+{
+public:
+ enum Type_t { SPRM, ATTRIBUTE };
+private:
+ Id mId;
+ mutable OOXMLValue::Pointer_t mpValue;
+ Type_t meType;
+
+public:
+ typedef boost::shared_ptr<OOXMLProperty> Pointer_t;
+
+ OOXMLPropertyImpl(Id id, OOXMLValue::Pointer_t pValue, Type_t eType);
+ OOXMLPropertyImpl(const OOXMLPropertyImpl & rSprm);
+ virtual ~OOXMLPropertyImpl();
+
+ virtual sal_uInt32 getId() const;
+ virtual Value::Pointer_t getValue();
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary();
+ virtual writerfilter::Reference<Stream>::Pointer_t getStream();
+ virtual writerfilter::Reference<Properties>::Pointer_t getProps();
+ virtual string getName() const;
+ virtual Kind getKind();
+ virtual string toString() const;
+ virtual Sprm * clone();
+ virtual void resolve(Properties & rProperties);
+};
+
+class OOXMLBinaryValue : public OOXMLValue
+{
+protected:
+ mutable OOXMLBinaryObjectReference::Pointer_t mpBinaryObj;
+public:
+ explicit OOXMLBinaryValue(OOXMLBinaryObjectReference::Pointer_t pBinaryObj);
+ virtual ~OOXMLBinaryValue();
+
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary();
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLBooleanValue : public OOXMLValue
+{
+protected:
+ bool mbValue;
+public:
+ explicit OOXMLBooleanValue(bool bValue);
+ explicit OOXMLBooleanValue(const rtl::OUString & rValue);
+ virtual ~OOXMLBooleanValue();
+
+ virtual int getInt() const;
+ virtual bool getBool() const;
+ virtual uno::Any getAny() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLStringValue : public OOXMLValue
+{
+protected:
+ rtl::OUString mStr;
+public:
+ explicit OOXMLStringValue(const rtl::OUString & rStr);
+ virtual ~OOXMLStringValue();
+
+ virtual uno::Any getAny() const;
+ virtual rtl::OUString getString() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLInputStreamValue : public OOXMLValue
+{
+protected:
+ uno::Reference<io::XInputStream> mxInputStream;
+
+public:
+ explicit OOXMLInputStreamValue(uno::Reference<io::XInputStream> xInputStream);
+ virtual ~OOXMLInputStreamValue();
+
+ virtual uno::Any getAny() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+struct OOXMLPropertySetImplCompare
+{
+ bool operator()(const OOXMLProperty::Pointer_t x,
+ const OOXMLProperty::Pointer_t y) const;
+};
+
+class OOXMLPropertySetImpl : public OOXMLPropertySet
+{
+public:
+ typedef vector<OOXMLProperty::Pointer_t> OOXMLProperties_t;
+private:
+ OOXMLProperties_t mProperties;
+ string msType;
+public:
+ OOXMLPropertySetImpl();
+ virtual ~OOXMLPropertySetImpl();
+
+ virtual void resolve(Properties & rHandler);
+ virtual string getType() const;
+ virtual void add(OOXMLProperty::Pointer_t pProperty);
+ virtual void add(OOXMLPropertySet::Pointer_t pPropertySet);
+ virtual OOXMLPropertySet * clone() const;
+
+ OOXMLProperties_t::iterator begin();
+ OOXMLProperties_t::iterator end();
+ OOXMLProperties_t::const_iterator begin() const;
+ OOXMLProperties_t::const_iterator end() const;
+
+ virtual void setType(const string & rsType);
+
+ virtual string toString();
+};
+
+class OOXMLPropertySetValue : public OOXMLValue
+{
+ OOXMLPropertySet::Pointer_t mpPropertySet;
+public:
+ OOXMLPropertySetValue(OOXMLPropertySet::Pointer_t pPropertySet);
+ virtual ~OOXMLPropertySetValue();
+
+ virtual writerfilter::Reference<Properties>::Pointer_t getProperties();
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLIntegerValue : public OOXMLValue
+{
+protected:
+ sal_Int32 mnValue;
+public:
+ explicit OOXMLIntegerValue(sal_Int32 nValue);
+ explicit OOXMLIntegerValue(const rtl::OUString & rValue);
+ virtual ~OOXMLIntegerValue();
+
+ virtual int getInt() const;
+ virtual uno::Any getAny() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLHexValue : public OOXMLValue
+{
+protected:
+ sal_uInt32 mnValue;
+public:
+ explicit OOXMLHexValue(sal_uInt32 nValue);
+ explicit OOXMLHexValue(const rtl::OUString & rValue);
+ virtual ~OOXMLHexValue();
+
+ virtual int getInt() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLShapeValue : public OOXMLValue
+{
+protected:
+ uno::Reference<XShape> mrShape;
+public:
+ explicit OOXMLShapeValue(uno::Reference<XShape> rShape);
+ virtual ~OOXMLShapeValue();
+
+ virtual uno::Any getAny() const;
+ virtual string toString() const;
+ virtual OOXMLValue * clone() const;
+};
+
+class OOXMLTableImpl : public OOXMLTable
+{
+public:
+ typedef boost::shared_ptr<OOXMLValue> ValuePointer_t;
+private:
+ typedef vector<ValuePointer_t> PropertySets_t;
+ PropertySets_t mPropertySets;
+
+public:
+ OOXMLTableImpl();
+ virtual ~OOXMLTableImpl();
+
+ virtual void resolve(Table & rTable);
+ virtual void add(ValuePointer_t pPropertySet);
+ virtual string getType() const;
+ virtual OOXMLTable * clone() const;
+};
+
+class OOXMLPropertySetEntryToString : public Properties
+{
+ Id mnId;
+ ::rtl::OUString mStr;
+
+public:
+ OOXMLPropertySetEntryToString(Id nId);
+ virtual ~OOXMLPropertySetEntryToString();
+
+ virtual void sprm(Sprm & rSprm);
+ virtual void attribute(Id nId, Value & rValue);
+
+ const ::rtl::OUString & getString() const;
+};
+
+class OOXMLPropertySetEntryToInteger : public Properties
+{
+ Id mnId;
+ int mnValue;
+public:
+ OOXMLPropertySetEntryToInteger(Id nId);
+ virtual ~OOXMLPropertySetEntryToInteger();
+
+ virtual void sprm(Sprm & rSprm);
+ virtual void attribute(Id nId, Value & rValue);
+
+ int getValue() const;
+};
+
+Sprm::Kind SprmKind(sal_uInt32 nSprmCode);
+
+} // namespace ooxml
+} // namespace writerfilter
+
+#endif // INCLUDED_OOXML_PROPERTY_SET_IMPL_HXX
diff --git a/writerfilter/source/ooxml/OOXMLStreamImpl.cxx b/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
new file mode 100644
index 000000000000..8b879f4b0aec
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
@@ -0,0 +1,317 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "OOXMLStreamImpl.hxx"
+#include "OOXMLFastTokenHandler.hxx"
+#include "ooxmlLoggers.hxx"
+#include <iostream>
+
+#ifndef _COM_SUN_STAR_CONTAINER_XHIERARCHICALSTORAGEACCESS_HPP_
+#include <com/sun/star/embed/XHierarchicalStorageAccess.hpp>
+#endif
+
+//#define DEBUG_STREAM
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using namespace ::std;
+
+OOXMLStreamImpl::OOXMLStreamImpl
+(uno::Reference<uno::XComponentContext> xContext,
+ uno::Reference<io::XInputStream> xStorageStream, StreamType_t nType)
+: mxContext(xContext), mxStorageStream(xStorageStream), mnStreamType(nType)
+{
+ mxStorage.set
+ (comphelper::OStorageHelper::GetStorageOfFormatFromInputStream
+ (OFOPXML_STORAGE_FORMAT_STRING, mxStorageStream));
+ mxRelationshipAccess.set(mxStorage, uno::UNO_QUERY_THROW);
+
+ init();
+}
+
+OOXMLStreamImpl::OOXMLStreamImpl
+(OOXMLStreamImpl & rOOXMLStream, StreamType_t nStreamType)
+: mxContext(rOOXMLStream.mxContext),
+ mxStorageStream(rOOXMLStream.mxStorageStream),
+ mxStorage(rOOXMLStream.mxStorage),
+ mnStreamType(nStreamType),
+ msPath(rOOXMLStream.msPath)
+{
+ mxRelationshipAccess.set(rOOXMLStream.mxDocumentStream, uno::UNO_QUERY_THROW);
+
+ init();
+}
+
+OOXMLStreamImpl::OOXMLStreamImpl
+(OOXMLStreamImpl & rOOXMLStream, const rtl::OUString & rId)
+: mxContext(rOOXMLStream.mxContext),
+ mxStorageStream(rOOXMLStream.mxStorageStream),
+ mxStorage(rOOXMLStream.mxStorage),
+ mnStreamType(UNKNOWN),
+ msId(rId),
+ msPath(rOOXMLStream.msPath)
+{
+ mxRelationshipAccess.set(rOOXMLStream.mxDocumentStream, uno::UNO_QUERY_THROW);
+
+ init();
+}
+
+OOXMLStreamImpl::~OOXMLStreamImpl()
+{
+#ifdef DEBUG_STREAM
+ debug_logger->endElement("stream");
+#endif
+}
+
+const ::rtl::OUString & OOXMLStreamImpl::getTarget() const
+{
+ return msTarget;
+}
+
+bool OOXMLStreamImpl::lcl_getTarget(uno::Reference<embed::XRelationshipAccess>
+ xRelationshipAccess,
+ StreamType_t nStreamType,
+ const ::rtl::OUString & rId,
+ ::rtl::OUString & rDocumentTarget)
+{
+ bool bFound = false;
+
+ static rtl::OUString sType(RTL_CONSTASCII_USTRINGPARAM("Type"));
+ static rtl::OUString sId(RTL_CONSTASCII_USTRINGPARAM("Id"));
+ static rtl::OUString sDocumentType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"));
+ static rtl::OUString sStylesType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"));
+ static rtl::OUString sNumberingType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"));
+ static rtl::OUString sFonttableType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"));
+ static rtl::OUString sFootnotesType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes"));
+ static rtl::OUString sEndnotesType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"));
+ static rtl::OUString sCommentsType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"));
+ static rtl::OUString sThemeType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"));
+ static rtl::OUString sSettingsType(RTL_CONSTASCII_USTRINGPARAM("http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"));
+ static rtl::OUString sTarget(RTL_CONSTASCII_USTRINGPARAM("Target"));
+ static rtl::OUString sTargetMode(RTL_CONSTASCII_USTRINGPARAM("TargetMode"));
+ static rtl::OUString sExternal(RTL_CONSTASCII_USTRINGPARAM("External"));
+
+ rtl::OUString sStreamType;
+
+ switch (nStreamType)
+ {
+ case DOCUMENT:
+ sStreamType = sDocumentType;
+ break;
+ case STYLES:
+ sStreamType = sStylesType;
+ break;
+ case NUMBERING:
+ sStreamType = sNumberingType;
+ break;
+ case FONTTABLE:
+ sStreamType = sFonttableType;
+ break;
+ case FOOTNOTES:
+ sStreamType = sFootnotesType;
+ break;
+ case ENDNOTES:
+ sStreamType = sEndnotesType;
+ break;
+ case COMMENTS:
+ sStreamType = sCommentsType;
+ break;
+ case THEME:
+ sStreamType = sThemeType;
+ break;
+ case SETTINGS:
+ sStreamType = sSettingsType;
+ break;
+ default:
+ break;
+ }
+
+ if (xRelationshipAccess.is())
+ {
+ uno::Sequence< uno::Sequence< beans::StringPair > >aSeqs =
+ xRelationshipAccess->getAllRelationships();
+
+ for (sal_Int32 j = 0; j < aSeqs.getLength(); j++)
+ {
+ uno::Sequence< beans::StringPair > aSeq = aSeqs[j];
+
+ bool bExternalTarget = false;
+ ::rtl::OUString sMyTarget;
+ for (sal_Int32 i = 0; i < aSeq.getLength(); i++)
+ {
+ beans::StringPair aPair = aSeq[i];
+
+ if (aPair.First.compareTo(sType) == 0 &&
+ aPair.Second.compareTo(sStreamType) == 0)
+ bFound = true;
+ else if (aPair.First.compareTo(sId) == 0 &&
+ aPair.Second.compareTo(rId) == 0)
+ bFound = true;
+ else if (aPair.First.compareTo(sTarget) == 0)
+ sMyTarget = aPair.Second;
+ else if (aPair.First.compareTo(sTargetMode) == 0 &&
+ aPair.Second.compareTo(sExternal) == 0)
+ bExternalTarget = true;
+
+ }
+
+ if (bFound)
+ {
+ if (bExternalTarget)
+ rDocumentTarget = sMyTarget;
+ else
+ {
+ rDocumentTarget = msPath;
+ rDocumentTarget += sMyTarget;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return bFound;
+}
+
+::rtl::OUString OOXMLStreamImpl::getTargetForId(const ::rtl::OUString & rId)
+{
+ ::rtl::OUString sTarget;
+
+ uno::Reference<embed::XRelationshipAccess> xRelationshipAccess
+ (mxDocumentStream, uno::UNO_QUERY_THROW);
+
+ if (lcl_getTarget(xRelationshipAccess, UNKNOWN, rId, sTarget))
+ return sTarget;
+
+ return ::rtl::OUString();
+}
+
+void OOXMLStreamImpl::init()
+{
+ bool bFound = lcl_getTarget(mxRelationshipAccess,
+ mnStreamType, msId, msTarget);
+#ifdef DEBUG_STREAM
+ debug_logger->startElement("stream");
+ debug_logger->attribute("target", msTarget);
+#endif
+
+ if (bFound)
+ {
+ sal_Int32 nLastIndex = msTarget.lastIndexOf('/');
+ if (nLastIndex >= 0)
+ msPath = msTarget.copy(0, nLastIndex + 1);
+
+ uno::Reference<embed::XHierarchicalStorageAccess>
+ xHierarchicalStorageAccess(mxStorage, uno::UNO_QUERY);
+
+ if (xHierarchicalStorageAccess.is())
+ {
+ uno::Any aAny(xHierarchicalStorageAccess->
+ openStreamElementByHierarchicalName
+ (msTarget, embed::ElementModes::SEEKABLEREAD));
+ aAny >>= mxDocumentStream;
+ }
+ }
+}
+
+uno::Reference<io::XInputStream> OOXMLStreamImpl::getDocumentStream()
+{
+ uno::Reference<io::XInputStream> xResult;
+
+ if (mxDocumentStream.is())
+ xResult = mxDocumentStream->getInputStream();
+
+ return xResult;
+}
+
+uno::Reference<io::XInputStream> OOXMLStreamImpl::getStorageStream()
+{
+ return mxStorageStream;
+}
+
+uno::Reference<xml::sax::XParser> OOXMLStreamImpl::getParser()
+{
+ uno::Reference<lang::XMultiComponentFactory> xFactory =
+ uno::Reference<lang::XMultiComponentFactory>
+ (mxContext->getServiceManager());
+
+ uno::Reference<xml::sax::XParser> xParser
+ (xFactory->createInstanceWithContext
+ ( rtl::OUString::createFromAscii( "com.sun.star.xml.sax.Parser" ),
+ mxContext ),
+ uno::UNO_QUERY );
+
+ return xParser;
+}
+
+uno::Reference<uno::XComponentContext> OOXMLStreamImpl::getContext()
+{
+ return mxContext;
+}
+
+uno::Reference <xml::sax::XFastTokenHandler>
+OOXMLStreamImpl::getFastTokenHandler
+(uno::Reference<uno::XComponentContext> xContext)
+{
+ if (! mxFastTokenHandler.is())
+ mxFastTokenHandler.set(new OOXMLFastTokenHandler(xContext));
+
+ return mxFastTokenHandler;
+}
+
+OOXMLStream::Pointer_t
+OOXMLDocumentFactory::createStream
+(uno::Reference<uno::XComponentContext> xContext,
+ uno::Reference<io::XInputStream> rStream,
+ OOXMLStream::StreamType_t nStreamType)
+{
+ OOXMLStreamImpl * pStream = new OOXMLStreamImpl(xContext, rStream,
+ nStreamType);
+ return OOXMLStream::Pointer_t(pStream);
+}
+
+OOXMLStream::Pointer_t
+OOXMLDocumentFactory::createStream
+(OOXMLStream::Pointer_t pStream, OOXMLStream::StreamType_t nStreamType)
+{
+ return OOXMLStream::Pointer_t
+ (new OOXMLStreamImpl(*dynamic_cast<OOXMLStreamImpl *>(pStream.get()),
+ nStreamType));
+}
+
+OOXMLStream::Pointer_t
+OOXMLDocumentFactory::createStream
+(OOXMLStream::Pointer_t pStream, const rtl::OUString & rId)
+{
+ return OOXMLStream::Pointer_t
+ (new OOXMLStreamImpl(*dynamic_cast<OOXMLStreamImpl *>(pStream.get()),
+ rId));
+}
+
+}}
diff --git a/writerfilter/source/ooxml/OOXMLStreamImpl.hxx b/writerfilter/source/ooxml/OOXMLStreamImpl.hxx
new file mode 100644
index 000000000000..15409fe8ae2a
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLStreamImpl.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_OOXML_STREAM_IMPL_HXX
+#define INCLUDED_OOXML_STREAM_IMPL_HXX
+
+#include <ooxml/OOXMLDocument.hxx>
+#include <comphelper/storagehelper.hxx>
+#include <com/sun/star/embed/XRelationshipAccess.hpp>
+#include <com/sun/star/io/XStream.hpp>
+
+namespace writerfilter {
+namespace ooxml
+{
+
+using namespace com::sun::star;
+
+class OOXMLStreamImpl : public OOXMLStream
+{
+ void init();
+
+ uno::Reference<uno::XComponentContext> mxContext;
+ uno::Reference<io::XInputStream> mxStorageStream;
+ uno::Reference<embed::XStorage> mxStorage;
+ uno::Reference<embed::XRelationshipAccess> mxRelationshipAccess;
+ uno::Reference<io::XStream> mxDocumentStream;
+ uno::Reference<xml::sax::XFastParser> mxFastParser;
+ uno::Reference<xml::sax::XFastTokenHandler> mxFastTokenHandler;
+
+ StreamType_t mnStreamType;
+
+ rtl::OUString msId;
+ rtl::OUString msPath;
+ rtl::OUString msTarget;
+
+ bool lcl_getTarget(uno::Reference<embed::XRelationshipAccess>
+ xRelationshipAccess,
+ StreamType_t nStreamType,
+ const ::rtl::OUString & rId,
+ ::rtl::OUString & rDocumentTarget);
+public:
+ typedef boost::shared_ptr<OOXMLStreamImpl> Pointer_t;
+
+ OOXMLStreamImpl
+ (OOXMLStreamImpl & rStream, StreamType_t nType);
+ OOXMLStreamImpl
+ (uno::Reference<uno::XComponentContext> xContext,
+ uno::Reference<io::XInputStream> xStorageStream,
+ StreamType_t nType);
+ OOXMLStreamImpl(OOXMLStreamImpl & rStream, const rtl::OUString & rId);
+
+ virtual ~OOXMLStreamImpl();
+
+ virtual uno::Reference<xml::sax::XParser> getParser();
+ virtual uno::Reference<xml::sax::XFastParser> getFastParser();
+ virtual uno::Reference<io::XInputStream> getDocumentStream();
+ virtual uno::Reference<io::XInputStream> getStorageStream();
+ virtual uno::Reference<uno::XComponentContext> getContext();
+ virtual ::rtl::OUString getTargetForId(const ::rtl::OUString & rId);
+ virtual const ::rtl::OUString & getTarget() const;
+
+ virtual uno::Reference<xml::sax::XFastTokenHandler>
+ getFastTokenHandler(uno::Reference<uno::XComponentContext> rContext);
+
+ void setInputStream(uno::Reference<io::XInputStream> rxInputStream);
+};
+}}
+#endif // INCLUDED_OOXML_STREAM_IMPL_HXX
diff --git a/writerfilter/source/ooxml/README.efforts b/writerfilter/source/ooxml/README.efforts
new file mode 100644
index 000000000000..03570a80ec5a
--- /dev/null
+++ b/writerfilter/source/ooxml/README.efforts
@@ -0,0 +1,131 @@
+This file describes how the remaining efforts for writerfilter can be
+extracted from the source code.
+
+1. Marking up the efforts in the code.
+
+Efforts are marked up in the code with comments like this:
+
+/* WRITERFILTERSTATUS: done: <percent done>, planned: <effort planned>, spent: <effort spent, yet> */
+
+The comments have to follow a case-label immediately. Consecutive
+case-labels can be marked up, too. In the latter case the efforts are
+counted for the preceeding case-labels as a whole.
+
+2. Extraction process
+
+2.1. Stage 1:
+
+This stage is handled in status.sh. An XML-file is generated that
+contains a top level element <stage1>. <stage1> contains an element
+<analyze> and several <qname> and <status> elements.
+
+2.1.1. Use analyzemodel.xsl to extract necessary data from model.xml.
+
+- Namespaces can be flagged with attribute @todo="ignore" to prevent
+ the namespace being considered.
+
+- For every <element>/<attribute> an entry in an according element in <analyze> is genereated. These elements look like this:
+
+<attribute id="..." resource="..." tokenid="..." qname="..." namespace="..." define="..." name="..."/>
+
+Important for the extraction of efforts: @qname is the identifier used
+in case-labels in .cxx files and thus links the status mark up
+comments with elements/attributes in the model.xml.
+
+2.1.2. Extract status information
+
+The variable SEARCHIN in status.sh determines in what directory the script will search for case labels and status comments. Only .cxx files are searched. Lines like this
+
+case NS_rtf::LN_UNUSED4:
+
+result in elements like this
+
+<qname file="/DomainMapper.cxx" line="216" qname="NS_rtf::LN_UNUSED4"/>.
+
+Lines like this
+
+/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
+
+result in elements like this
+
+<status done="0" planned="0" spent="0"/>
+
+The <qname> and <status> elements are children of the <stage1>
+element. The are inserted in the same order as found in the
+code. Therefore a <status> element corresponds to the group of
+consecutive preceding <qname> elements.
+
+2.2. Stage 2
+
+In this stage analyzestage2.xsl is used on the result of stage 1 to
+group the <qname> and <status> elements from stage 1. For each
+<status> element a <qnames> element is generated that contains the
+<qname> elements that the <status> element refers to, plus the
+<status> element.
+
+2.3. Stage 3
+
+This stage associates the <attribute> and <element> elements in
+model.xml with the extracted data. It uses analyzestage3.xsl on the
+result of stage 2 to do this.
+
+E.g. for given elements from stage 2:
+
+<attribute
+ id="dml-wordprocessingDrawing:CT_Inline:distR"
+ resource="Properties"
+ tokenid="ooxml:CT_Inline_distR"
+ qname="NS_ooxml::LN_CT_Inline_distR"
+ namespace="dml-wordprocessingDrawing"
+ define="CT_Inline"
+ name="distR"/>
+
+and
+
+ <qnames>
+ <qname file="/GraphicImport.cxx" line="1078" qname="NS_ooxml::LN_CT_Inline_distT"/>
+ <qname file="/GraphicImport.cxx" line="1079" qname="NS_ooxml::LN_CT_Inline_distB"/>
+ <qname file="/GraphicImport.cxx" line="1080" qname="NS_ooxml::LN_CT_Inline_distL"/>
+ <qname file="/GraphicImport.cxx" line="1081" qname="NS_ooxml::LN_CT_Inline_distR"/>
+ <status done="0" planned="0.5" spent="0"/>
+ </qnames>
+
+the result of stage 3 will be
+
+ <attribute
+ id="dml-wordprocessingDrawing:CT_Inline:distR"
+ resource="Properties"
+ tokenid="ooxml:CT_Inline_distR"
+ qname="NS_ooxml::LN_CT_Inline_distR"
+ namespace="dml-wordprocessingDrawing"
+ define="CT_Inline" name="distR">
+
+ <file name="/GraphicImport.cxx" line="1081">
+ <status done="0" planned="0.5" spent="0" qname-count="4"/>
+ </file>
+
+ </attribute>
+
+@qname-count is the number of case-labels that the according mark-up comment refers to.
+
+3. Collect efforts
+
+This is done by the script efforts.sh. It uses status.sh to extract the status and determines the efforts in two steps.
+
+3.1. Choose which <attribute>/<element> elements need effort
+
+This stage uses todo.xsl on the result of 2.3.
+
+There are two criteria that imply effort:
+
+- The <attribute>/<element> is not handled in any file.
+
+- The status for the <attribute>/<element> declares that work is
+ planned for it and less than 100 percent of this work is done.
+
+3.2. Generate table of efforts in CSV format
+
+This stage uses effort.xsl on the results of 3.1. and produces the
+table of efforts. If there is no status defined for an
+<attribute>/<element> it is assumed that the planned effort is 0.5
+hours and no work has been done.
diff --git a/writerfilter/source/ooxml/RefAndPointer.hxx b/writerfilter/source/ooxml/RefAndPointer.hxx
new file mode 100644
index 000000000000..c997d302fd33
--- /dev/null
+++ b/writerfilter/source/ooxml/RefAndPointer.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_REF_AND_POINTER_HXX
+#define INCLUDED_REF_AND_POINTER_HXX
+
+#include <iostream>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+
+namespace writerfilter {
+namespace ooxml
+{
+using namespace ::com::sun::star;
+using namespace ::std;
+
+template <class Interface, class ChildClass>
+class RefAndPointer
+{
+ mutable ChildClass * mpHandler;
+ mutable uno::Reference<Interface> mRef;
+
+public:
+ RefAndPointer()
+ : mpHandler(NULL)
+ {
+#ifdef DEBUG_MEMORY
+ clog << "MEMORY:" << mpHandler->getInstanceNumber() << ":RefAndPointer"
+ << endl;
+#endif
+ }
+
+ RefAndPointer(ChildClass * pHandler)
+ : mpHandler(pHandler), mRef(pHandler)
+ {
+#ifdef DEBUG_MEMORY
+ clog << "MEMORY:" << mpHandler->getInstanceNumber() << ":RefAndPointer"
+ << endl;
+#endif
+ }
+
+ RefAndPointer(uno::Reference<Interface> xRef)
+ : mRef(xRef)
+ {
+#if 0
+ uno::Reference<lang::XUnoTunnel> xTunnel( xRef, uno::UNO_QUERY);
+
+ if (xTunnel.is())
+ mpHandler = reinterpret_cast<ChildClass *>(xTunnel->getSomething(ChildClass::getUnoTunnelId()));
+#else
+ mpHandler = dynamic_cast<ChildClass *>(xRef.get());
+#endif
+ if (mpHandler != NULL)
+ clog << "MEMORY:" << mpHandler->getInstanceNumber()
+ << ":RefAndPointer" << endl;
+ }
+
+ virtual ~RefAndPointer()
+ {
+#ifdef DEBUG_MEMORY
+ if (mpHandler != NULL)
+ clog << "MEMORY:" << mpHandler->getInstanceNumber()
+ << ":~RefAndPointer" << endl;
+#endif
+ }
+
+ void set(ChildClass * pHandler)
+ {
+ mpHandler = pHandler;
+ mRef = pHandler;
+ }
+
+ void set(uno::Reference<Interface> xHandler)
+ {
+ mpHandler = dynamic_cast<ChildClass*>(xHandler.get());
+ mRef = xHandler;
+ }
+
+ ChildClass * getPointer() const { return mpHandler; }
+ const uno::Reference<Interface> getRef() const { return mRef; }
+
+ RefAndPointer & operator=
+ (const RefAndPointer & rSrc)
+ {
+ set(rSrc.getHandler());
+
+ return *this;
+ }
+
+ bool is() { return getRef().is(); }
+
+ operator ChildClass* () { return getPointer(); }
+ operator uno::Reference<Interface> () { return getRef(); }
+};
+}}
+#endif // INCLUDED_REF_AND_POINTER_HXX
diff --git a/writerfilter/source/ooxml/analyzemodel.xsl b/writerfilter/source/ooxml/analyzemodel.xsl
new file mode 100644
index 000000000000..d887a9a178a6
--- /dev/null
+++ b/writerfilter/source/ooxml/analyzemodel.xsl
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0">
+
+<xsl:include href="factorytools.xsl"/>
+<xsl:output method="xml"/>
+
+<xsl:template match="/">
+ <analyze>
+ <xsl:for-each select="/model/namespace[not(@todo='ignore')]">
+ <xsl:call-template name="analyzegrammar"/>
+ </xsl:for-each>
+ </analyze>
+</xsl:template>
+
+<xsl:template name="analyzegrammar">
+ <xsl:variable name="nsname" select="@name"/>
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:variable name="defname" select="@name"/>
+ <xsl:for-each select=".//rng:attribute|.//rng:element">
+ <xsl:choose>
+ <xsl:when test="local-name()='element'">
+ <element>
+ <xsl:call-template name="defineattrs">
+ <xsl:with-param name="nsname" select="$nsname"/>
+ <xsl:with-param name="defname" select="$defname"/>
+ </xsl:call-template>
+ </element>
+ </xsl:when>
+ <xsl:when test="local-name()='attribute'">
+ <attribute>
+ <xsl:call-template name="defineattrs">
+ <xsl:with-param name="nsname" select="$nsname"/>
+ <xsl:with-param name="defname" select="$defname"/>
+ </xsl:call-template>
+ </attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="defineattrs">
+ <xsl:param name="nsname"/>
+ <xsl:param name="defname"/>
+
+ <xsl:variable name="localname" select="local-name()"/>
+ <xsl:variable name="name" select="@name"/>
+
+ <xsl:attribute name="id">
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="$defname"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:for-each select="ancestor::namespace/resource[@name=$defname]">
+ <xsl:attribute name="resource"><xsl:value-of select="@resource"/></xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$localname='attribute'">
+ <xsl:for-each select="attribute[@name=$name and @tokenid]">
+ <xsl:attribute name="tokenid"><xsl:value-of select="@tokenid"/></xsl:attribute>
+ <xsl:attribute name="qname">
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="namespace">
+ <xsl:value-of select="$nsname"/>
+ </xsl:attribute>
+ <xsl:attribute name="define">
+ <xsl:value-of select="$defname"/>
+ </xsl:attribute>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="$localname='element'">
+ <xsl:for-each select="element[@name=$name and @tokenid]">
+ <xsl:attribute name="tokenid"><xsl:value-of select="@tokenid"/></xsl:attribute>
+ <xsl:attribute name="qname">
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="namespace">
+ <xsl:value-of select="$nsname"/>
+ </xsl:attribute>
+ <xsl:attribute name="define">
+ <xsl:value-of select="$defname"/>
+ </xsl:attribute>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/analyzestage2.xsl b/writerfilter/source/ooxml/analyzestage2.xsl
new file mode 100644
index 000000000000..9c7dc247b5ab
--- /dev/null
+++ b/writerfilter/source/ooxml/analyzestage2.xsl
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="/">
+ <stage2>
+ <xsl:copy-of select="/stage1/analyze"/>
+ <xsl:for-each select="/stage1/qname">
+ <xsl:if test="not(local-name(preceding-sibling::*[1]) = 'qname')">
+ <qnames>
+ <xsl:call-template name="handleqnames"/>
+ </qnames>
+ </xsl:if>
+ </xsl:for-each>
+ </stage2>
+</xsl:template>
+
+<xsl:template name="handleqnames">
+ <xsl:choose>
+ <xsl:when test="local-name() = 'qname'">
+ <xsl:copy-of select="."/>
+ <xsl:for-each select="following-sibling::*[1]">
+ <xsl:call-template name="handleqnames"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="local-name() = 'nostatus' or local-name() = 'status'">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/analyzestage3.xsl b/writerfilter/source/ooxml/analyzestage3.xsl
new file mode 100644
index 000000000000..103782c1a11a
--- /dev/null
+++ b/writerfilter/source/ooxml/analyzestage3.xsl
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+
+<xsl:key name="qnames" match="/stage2/qnames/qname" use="@qname"/>
+
+<xsl:template match="/">
+ <stage3 xmlns:rng="http://relaxng.org/ns/structure/1.0">
+ <xsl:for-each select="/stage2/analyze">
+ <xsl:for-each select="attribute|element">
+ <xsl:variable name="qname" select="@qname"/>
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:for-each select="key('qnames', @qname)">
+ <file>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@file"/>
+ </xsl:attribute>
+ <xsl:attribute name="line">
+ <xsl:value-of select="@line"/>
+ </xsl:attribute>
+ <xsl:for-each select="ancestor::qnames/status|ancestor::qnames/nostatus">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:attribute name="qname-count">
+ <xsl:value-of select="count(ancestor::qnames/qname)"/>
+ </xsl:attribute>
+ </xsl:copy>
+ </xsl:for-each>
+ </file>
+ </xsl:for-each>
+ </xsl:copy>
+ </xsl:for-each>
+ </xsl:for-each>
+ </stage3>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/attrsprm.xsl b/writerfilter/source/ooxml/attrsprm.xsl
new file mode 100644
index 000000000000..9351b1b874c9
--- /dev/null
+++ b/writerfilter/source/ooxml/attrsprm.xsl
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ exclude-result-prefixes = "xalan"
+ xml:indent="true">
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <xsl:template match="/">
+ <class>
+ <xsl:for-each select="//rng:define[@name='CT_FFData']">
+ <xsl:call-template name="sprm"/>
+ <xsl:call-template name="attribute"/>
+ </xsl:for-each>
+ </class>
+ </xsl:template>
+
+ <xsl:template name="sprminner">
+ <xsl:variable name="defname" select="@name"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:call-template name="sprminner"/>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:element">
+ <xsl:for-each select="rng:ref">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="sprminner"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ <element>
+ <xsl:variable name="elementname" select="@name"/>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:for-each select="rng:ref">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/resource[@name=$refname]">
+ <xsl:attribute name="action">
+ <xsl:choose>
+ <xsl:when test="@resource='Properties'">
+ <xsl:text>resolve</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>set</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:for-each select="ancestor::namespace/resource[@name=$defname]">
+ <xsl:for-each select="element[@name=$elementname]">
+ <xsl:attribute name="id">
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id">
+ <xsl:value-of select="@tokenid"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </element>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="sprm">
+ <sprm>
+ <xsl:call-template name="sprminner"/>
+ </sprm>
+ </xsl:template>
+
+ <xsl:template name="attributeinner">
+ <xsl:param name="parent"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:comment><xsl:value-of select="$newparent"/></xsl:comment>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="attributeinner">
+ <xsl:with-param name="parent" select="$parent"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:element">
+ <xsl:variable name="newparent">
+ <xsl:if test="string-length($parent)">
+ <xsl:value-of select="$parent"/>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="@name"/>
+ </xsl:variable>
+ <xsl:for-each select="rng:ref">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="attributeinner">
+ <xsl:with-param name="parent" select="$newparent"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:variable name="defname" select="@name"/>
+ <xsl:variable name="resource">
+ <xsl:for-each select="ancestor::namespace/resource[@name=$defname]">
+ <xsl:value-of select="@resource"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="$resource='Properties'">
+ <xsl:for-each select=".//rng:attribute">
+ <xsl:variable name="attrname" select="@name"/>
+ <attribute>
+ <xsl:attribute name="name">
+ <xsl:if test="string-length($parent) > 0">
+ <xsl:value-of select="$parent"/>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$attrname"/>
+ </xsl:attribute>
+ <xsl:for-each select="ancestor::namespace/resource[@name=$defname]">
+ <xsl:for-each select="attribute[@name=$attrname]">
+ <xsl:attribute name="id">
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id">
+ <xsl:value-of select="@tokenid"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:for-each>
+ </attribute>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="attribute">
+ <attribute>
+ <xsl:call-template name="attributeinner"/>
+ </attribute>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/checkmodel.xsl b/writerfilter/source/ooxml/checkmodel.xsl
new file mode 100644
index 000000000000..b40544f796cf
--- /dev/null
+++ b/writerfilter/source/ooxml/checkmodel.xsl
@@ -0,0 +1,167 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xml:space="default" xml:indent="true">
+ <xsl:output method="text" />
+
+
+ <xsl:template name="noannotation">
+ <xsl:for-each select="//namespace">
+ <xsl:variable name="nsname" select="@name"/>
+ <xsl:value-of select="./rng:grammar/@ns"/>
+ <xsl:text>&#xa;</xsl:text>
+ <xsl:for-each select=".//rng:define">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:if test="not(ancestor::namespace//resource[@name=$name])">
+ <xsl:text>noannotation: </xsl:text>
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="checkmodel">
+ <xsl:for-each select="//namespace">
+ <xsl:variable name="nsname" select="@name"/>
+ <xsl:for-each select=".//rng:define">
+ <xsl:call-template name="orphanedprops"/>
+ <xsl:variable name="definename" select="@name"/>
+ <xsl:if test="not(ancestor::namespace//resource[@name=$definename])">
+ <xsl:text>no annotation: </xsl:text>
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:if>
+ <xsl:for-each select=".//rng:element">
+ <xsl:variable name="elementname" select="@name"/>
+ <xsl:for-each select="ancestor::namespace//resource[@name=$definename and @resource='Properties']">
+ <xsl:if test="not(.//element[@name=$elementname])">
+ <xsl:text>missing element: </xsl:text>
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$elementname"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="orphanedprops"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:attribute">
+ <xsl:variable name="attributename" select="@name"/>
+ <xsl:for-each select="ancestor::namespace//resource[@name=$definename and @resource='Properties']">
+ <xsl:if test="not(.//attribute[@name=$attributename])">
+ <xsl:text>missing attribute: </xsl:text>
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$attributename"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="orphanedprops"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:key name="defines-with-name" match="rng:define" use="@name"/>
+
+ <xsl:template name="defineforref">
+ <xsl:variable name="grammarid" select="generate-id(ancestor::grammar)"/>
+ <xsl:variable name="defineingrammar" select="key('defines-with-name', @name)[generate-id(ancestor::grammar) = $grammarid]"/>
+ <xsl:choose>
+ <xsl:when test="$defineingrammar">
+ <xsl:value-of select="$defineingrammar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="key('defines-with-name', @name)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="contextresource">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:value-of select="ancestor::namespace//resource[@name=$name]/@resource"/>
+ </xsl:template>
+
+ <xsl:template name="orphanedprops">
+ <xsl:variable name="nsname" select="ancestor::namespace/@name"/>
+ <xsl:for-each select=".//rng:ref[not (ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="defineresource">
+ <xsl:for-each select="ancestor::rng:define">
+ <xsl:call-template name="contextresource"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="definename" select="ancestor::rng:define/@name"/>
+ <xsl:variable name="mydefine">
+ <xsl:copy>
+ <xsl:call-template name="defineforref"/>
+ </xsl:copy>
+ </xsl:variable>
+ <xsl:variable name="myresource">
+ <xsl:call-template name="contextresource"/>
+ </xsl:variable>
+ <xsl:if test="$myresource = 'Properties'">
+ <xsl:choose>
+ <xsl:when test="$defineresource = 'Properties'"/>
+ <xsl:when test="$defineresource = 'Stream'"/>
+ <xsl:otherwise>
+ <xsl:text>orphaned properties: </xsl:text>
+ <xsl:value-of select="$nsname"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$defineresource"/>
+ <xsl:text>)-&gt;</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$myresource"/>
+ <xsl:text>)&#xa;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <out>
+ <xsl:call-template name="checkmodel"/>
+ </out>
+ </xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/dummyannotate.xsl b/writerfilter/source/ooxml/dummyannotate.xsl
new file mode 100644
index 000000000000..0fcc1e0dcbc7
--- /dev/null
+++ b/writerfilter/source/ooxml/dummyannotate.xsl
@@ -0,0 +1,845 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xml:space="default" xml:indent="true">
+ <xsl:output method="xml" />
+
+ <xsl:template match="rng:define" mode="dummydoc">
+<xsl:processing-instruction name="mso-application">progid="Word.Document"</xsl:processing-instruction>
+<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
+ <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
+ <pkg:xmlData>
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
+ <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
+ <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
+ </Relationships>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256">
+ <pkg:xmlData>
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/>
+ <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
+ <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
+ <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
+ <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/>
+ </Relationships>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
+ <pkg:xmlData>
+ <w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
+ <w:body>
+ <xsl:for-each select=".//rng:element">
+ <w:p>
+ <w:pPr/>
+ <w:r>
+ <w:rPr>
+ <xsl:element name="w:{@name}"/>
+ </w:rPr>
+ <xsl:element name="w:t">
+ <xsl:value-of select="@name"/>
+ </xsl:element>
+ </w:r>
+ </w:p>
+ </xsl:for-each>
+ <w:sectPr w:rsidR="00164A8D" w:rsidSect="008B7467">
+ <w:pgSz w:w="11906" w:h="16838"/>
+ <w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/>
+ <w:cols w:space="708"/>
+ <w:docGrid w:linePitch="360"/>
+ </w:sectPr>
+ </w:body>
+ </w:document>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/theme/theme1.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.theme+xml">
+ <pkg:xmlData>
+ <a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">
+ <a:themeElements>
+ <a:clrScheme name="Office">
+ <a:dk1>
+ <a:sysClr val="windowText" lastClr="000000"/>
+ </a:dk1>
+ <a:lt1>
+ <a:sysClr val="window" lastClr="FFFFFF"/>
+ </a:lt1>
+ <a:dk2>
+ <a:srgbClr val="1F497D"/>
+ </a:dk2>
+ <a:lt2>
+ <a:srgbClr val="EEECE1"/>
+ </a:lt2>
+ <a:accent1>
+ <a:srgbClr val="4F81BD"/>
+ </a:accent1>
+ <a:accent2>
+ <a:srgbClr val="C0504D"/>
+ </a:accent2>
+ <a:accent3>
+ <a:srgbClr val="9BBB59"/>
+ </a:accent3>
+ <a:accent4>
+ <a:srgbClr val="8064A2"/>
+ </a:accent4>
+ <a:accent5>
+ <a:srgbClr val="4BACC6"/>
+ </a:accent5>
+ <a:accent6>
+ <a:srgbClr val="F79646"/>
+ </a:accent6>
+ <a:hlink>
+ <a:srgbClr val="0000FF"/>
+ </a:hlink>
+ <a:folHlink>
+ <a:srgbClr val="800080"/>
+ </a:folHlink>
+ </a:clrScheme>
+ <a:fontScheme name="Office">
+ <a:majorFont>
+ <a:latin typeface="Cambria"/>
+ <a:ea typeface=""/>
+ <a:cs typeface=""/>
+ <a:font script="Jpan" typeface="MS ゴシック"/>
+ <a:font script="Hang" typeface="맑은 고딕"/>
+ <a:font script="Hans" typeface="宋体"/>
+ <a:font script="Hant" typeface="新細明體"/>
+ <a:font script="Arab" typeface="Times New Roman"/>
+ <a:font script="Hebr" typeface="Times New Roman"/>
+ <a:font script="Thai" typeface="Angsana New"/>
+ <a:font script="Ethi" typeface="Nyala"/>
+ <a:font script="Beng" typeface="Vrinda"/>
+ <a:font script="Gujr" typeface="Shruti"/>
+ <a:font script="Khmr" typeface="MoolBoran"/>
+ <a:font script="Knda" typeface="Tunga"/>
+ <a:font script="Guru" typeface="Raavi"/>
+ <a:font script="Cans" typeface="Euphemia"/>
+ <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+ <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+ <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+ <a:font script="Thaa" typeface="MV Boli"/>
+ <a:font script="Deva" typeface="Mangal"/>
+ <a:font script="Telu" typeface="Gautami"/>
+ <a:font script="Taml" typeface="Latha"/>
+ <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+ <a:font script="Orya" typeface="Kalinga"/>
+ <a:font script="Mlym" typeface="Kartika"/>
+ <a:font script="Laoo" typeface="DokChampa"/>
+ <a:font script="Sinh" typeface="Iskoola Pota"/>
+ <a:font script="Mong" typeface="Mongolian Baiti"/>
+ <a:font script="Viet" typeface="Times New Roman"/>
+ <a:font script="Uigh" typeface="Microsoft Uighur"/>
+ </a:majorFont>
+ <a:minorFont>
+ <a:latin typeface="Calibri"/>
+ <a:ea typeface=""/>
+ <a:cs typeface=""/>
+ <a:font script="Jpan" typeface="MS 明朝"/>
+ <a:font script="Hang" typeface="맑은 고딕"/>
+ <a:font script="Hans" typeface="宋体"/>
+ <a:font script="Hant" typeface="新細明體"/>
+ <a:font script="Arab" typeface="Arial"/>
+ <a:font script="Hebr" typeface="Arial"/>
+ <a:font script="Thai" typeface="Cordia New"/>
+ <a:font script="Ethi" typeface="Nyala"/>
+ <a:font script="Beng" typeface="Vrinda"/>
+ <a:font script="Gujr" typeface="Shruti"/>
+ <a:font script="Khmr" typeface="DaunPenh"/>
+ <a:font script="Knda" typeface="Tunga"/>
+ <a:font script="Guru" typeface="Raavi"/>
+ <a:font script="Cans" typeface="Euphemia"/>
+ <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+ <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+ <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+ <a:font script="Thaa" typeface="MV Boli"/>
+ <a:font script="Deva" typeface="Mangal"/>
+ <a:font script="Telu" typeface="Gautami"/>
+ <a:font script="Taml" typeface="Latha"/>
+ <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+ <a:font script="Orya" typeface="Kalinga"/>
+ <a:font script="Mlym" typeface="Kartika"/>
+ <a:font script="Laoo" typeface="DokChampa"/>
+ <a:font script="Sinh" typeface="Iskoola Pota"/>
+ <a:font script="Mong" typeface="Mongolian Baiti"/>
+ <a:font script="Viet" typeface="Arial"/>
+ <a:font script="Uigh" typeface="Microsoft Uighur"/>
+ </a:minorFont>
+ </a:fontScheme>
+ <a:fmtScheme name="Office">
+ <a:fillStyleLst>
+ <a:solidFill>
+ <a:schemeClr val="phClr"/>
+ </a:solidFill>
+ <a:gradFill rotWithShape="1">
+ <a:gsLst>
+ <a:gs pos="0">
+ <a:schemeClr val="phClr">
+ <a:tint val="50000"/>
+ <a:satMod val="300000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="35000">
+ <a:schemeClr val="phClr">
+ <a:tint val="37000"/>
+ <a:satMod val="300000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="100000">
+ <a:schemeClr val="phClr">
+ <a:tint val="15000"/>
+ <a:satMod val="350000"/>
+ </a:schemeClr>
+ </a:gs>
+ </a:gsLst>
+ <a:lin ang="16200000" scaled="1"/>
+ </a:gradFill>
+ <a:gradFill rotWithShape="1">
+ <a:gsLst>
+ <a:gs pos="0">
+ <a:schemeClr val="phClr">
+ <a:shade val="51000"/>
+ <a:satMod val="130000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="80000">
+ <a:schemeClr val="phClr">
+ <a:shade val="93000"/>
+ <a:satMod val="130000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="100000">
+ <a:schemeClr val="phClr">
+ <a:shade val="94000"/>
+ <a:satMod val="135000"/>
+ </a:schemeClr>
+ </a:gs>
+ </a:gsLst>
+ <a:lin ang="16200000" scaled="0"/>
+ </a:gradFill>
+ </a:fillStyleLst>
+ <a:lnStyleLst>
+ <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+ <a:solidFill>
+ <a:schemeClr val="phClr">
+ <a:shade val="95000"/>
+ <a:satMod val="105000"/>
+ </a:schemeClr>
+ </a:solidFill>
+ <a:prstDash val="solid"/>
+ </a:ln>
+ <a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+ <a:solidFill>
+ <a:schemeClr val="phClr"/>
+ </a:solidFill>
+ <a:prstDash val="solid"/>
+ </a:ln>
+ <a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+ <a:solidFill>
+ <a:schemeClr val="phClr"/>
+ </a:solidFill>
+ <a:prstDash val="solid"/>
+ </a:ln>
+ </a:lnStyleLst>
+ <a:effectStyleLst>
+ <a:effectStyle>
+ <a:effectLst>
+ <a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+ <a:srgbClr val="000000">
+ <a:alpha val="38000"/>
+ </a:srgbClr>
+ </a:outerShdw>
+ </a:effectLst>
+ </a:effectStyle>
+ <a:effectStyle>
+ <a:effectLst>
+ <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+ <a:srgbClr val="000000">
+ <a:alpha val="35000"/>
+ </a:srgbClr>
+ </a:outerShdw>
+ </a:effectLst>
+ </a:effectStyle>
+ <a:effectStyle>
+ <a:effectLst>
+ <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+ <a:srgbClr val="000000">
+ <a:alpha val="35000"/>
+ </a:srgbClr>
+ </a:outerShdw>
+ </a:effectLst>
+ <a:scene3d>
+ <a:camera prst="orthographicFront">
+ <a:rot lat="0" lon="0" rev="0"/>
+ </a:camera>
+ <a:lightRig rig="threePt" dir="t">
+ <a:rot lat="0" lon="0" rev="1200000"/>
+ </a:lightRig>
+ </a:scene3d>
+ <a:sp3d>
+ <a:bevelT w="63500" h="25400"/>
+ </a:sp3d>
+ </a:effectStyle>
+ </a:effectStyleLst>
+ <a:bgFillStyleLst>
+ <a:solidFill>
+ <a:schemeClr val="phClr"/>
+ </a:solidFill>
+ <a:gradFill rotWithShape="1">
+ <a:gsLst>
+ <a:gs pos="0">
+ <a:schemeClr val="phClr">
+ <a:tint val="40000"/>
+ <a:satMod val="350000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="40000">
+ <a:schemeClr val="phClr">
+ <a:tint val="45000"/>
+ <a:shade val="99000"/>
+ <a:satMod val="350000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="100000">
+ <a:schemeClr val="phClr">
+ <a:shade val="20000"/>
+ <a:satMod val="255000"/>
+ </a:schemeClr>
+ </a:gs>
+ </a:gsLst>
+ <a:path path="circle">
+ <a:fillToRect l="50000" t="-80000" r="50000" b="180000"/>
+ </a:path>
+ </a:gradFill>
+ <a:gradFill rotWithShape="1">
+ <a:gsLst>
+ <a:gs pos="0">
+ <a:schemeClr val="phClr">
+ <a:tint val="80000"/>
+ <a:satMod val="300000"/>
+ </a:schemeClr>
+ </a:gs>
+ <a:gs pos="100000">
+ <a:schemeClr val="phClr">
+ <a:shade val="30000"/>
+ <a:satMod val="200000"/>
+ </a:schemeClr>
+ </a:gs>
+ </a:gsLst>
+ <a:path path="circle">
+ <a:fillToRect l="50000" t="50000" r="50000" b="50000"/>
+ </a:path>
+ </a:gradFill>
+ </a:bgFillStyleLst>
+ </a:fmtScheme>
+ </a:themeElements>
+ <a:objectDefaults/>
+ <a:extraClrSchemeLst/>
+ </a:theme>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/settings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml">
+ <pkg:xmlData>
+ <w:settings xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main">
+ <w:zoom w:percent="100"/>
+ <w:defaultTabStop w:val="708"/>
+ <w:hyphenationZone w:val="425"/>
+ <w:characterSpacingControl w:val="doNotCompress"/>
+ <w:compat/>
+ <w:rsids>
+ <w:rsidRoot w:val="009E60C2"/>
+ <w:rsid w:val="001D264D"/>
+ <w:rsid w:val="008B7467"/>
+ <w:rsid w:val="009E60C2"/>
+ <w:rsid w:val="00E36106"/>
+ </w:rsids>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="--"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr>
+ <w:themeFontLang w:val="de-DE"/>
+ <w:clrSchemeMapping w:bg1="light1" w:t1="dark1" w:bg2="light2" w:t2="dark2" w:accent1="accent1" w:accent2="accent2" w:accent3="accent3" w:accent4="accent4" w:accent5="accent5" w:accent6="accent6" w:hyperlink="hyperlink" w:followedHyperlink="followedHyperlink"/>
+ <w:shapeDefaults>
+ <o:shapedefaults v:ext="edit" spidmax="1026"/>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout>
+ </w:shapeDefaults>
+ <w:decimalSymbol w:val=","/>
+ <w:listSeparator w:val=";"/>
+ </w:settings>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/fontTable.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml">
+ <pkg:xmlData>
+ <w:fonts xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+ <w:font w:name="Calibri">
+ <w:panose1 w:val="020F0502020204030204"/>
+ <w:charset w:val="00"/>
+ <w:family w:val="swiss"/>
+ <w:pitch w:val="variable"/>
+ <w:sig w:usb0="A00002EF" w:usb1="4000207B" w:usb2="00000000" w:usb3="00000000" w:csb0="0000009F" w:csb1="00000000"/>
+ </w:font>
+ <w:font w:name="Times New Roman">
+ <w:panose1 w:val="02020603050405020304"/>
+ <w:charset w:val="00"/>
+ <w:family w:val="roman"/>
+ <w:pitch w:val="variable"/>
+ <w:sig w:usb0="20002A87" w:usb1="80000000" w:usb2="00000008" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/>
+ </w:font>
+ <w:font w:name="Cambria">
+ <w:panose1 w:val="02040503050406030204"/>
+ <w:charset w:val="00"/>
+ <w:family w:val="roman"/>
+ <w:pitch w:val="variable"/>
+ <w:sig w:usb0="A00002EF" w:usb1="4000004B" w:usb2="00000000" w:usb3="00000000" w:csb0="0000009F" w:csb1="00000000"/>
+ </w:font>
+ </w:fonts>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/webSettings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml">
+ <pkg:xmlData>
+ <w:webSettings xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+ <w:optimizeForBrowser/>
+ </w:webSettings>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/docProps/app.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" pkg:padding="256">
+ <pkg:xmlData>
+ <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
+ <Template>Normal.dotm</Template>
+ <TotalTime>0</TotalTime>
+ <Pages>1</Pages>
+ <Words>0</Words>
+ <Characters>4</Characters>
+ <Application>Microsoft Office Word</Application>
+ <DocSecurity>0</DocSecurity>
+ <Lines>1</Lines>
+ <Paragraphs>1</Paragraphs>
+ <ScaleCrop>false</ScaleCrop>
+ <Company>Sun Microsystems GmbH</Company>
+ <LinksUpToDate>false</LinksUpToDate>
+ <CharactersWithSpaces>4</CharactersWithSpaces>
+ <SharedDoc>false</SharedDoc>
+ <HyperlinksChanged>false</HyperlinksChanged>
+ <AppVersion>12.0000</AppVersion>
+ </Properties>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/docProps/core.xml" pkg:contentType="application/vnd.openxmlformats-package.core-properties+xml" pkg:padding="256">
+ <pkg:xmlData>
+ <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <dc:title/>
+ <dc:subject/>
+ <dc:creator>Administrator</dc:creator>
+ <cp:keywords/>
+ <dc:description/>
+ <cp:lastModifiedBy>Administrator</cp:lastModifiedBy>
+ <cp:revision>1</cp:revision>
+ <dcterms:created xsi:type="dcterms:W3CDTF">2007-04-02T14:46:00Z</dcterms:created>
+ <dcterms:modified xsi:type="dcterms:W3CDTF">2007-04-02T14:47:00Z</dcterms:modified>
+ </cp:coreProperties>
+ </pkg:xmlData>
+ </pkg:part>
+ <pkg:part pkg:name="/word/styles.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml">
+ <pkg:xmlData>
+ <w:styles xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+ <w:docDefaults>
+ <w:rPrDefault>
+ <w:rPr>
+ <w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/>
+ <w:sz w:val="22"/>
+ <w:szCs w:val="22"/>
+ <w:lang w:val="de-DE" w:eastAsia="en-US" w:bidi="ar-SA"/>
+ </w:rPr>
+ </w:rPrDefault>
+ <w:pPrDefault>
+ <w:pPr>
+ <w:spacing w:after="200" w:line="276" w:lineRule="auto"/>
+ </w:pPr>
+ </w:pPrDefault>
+ </w:docDefaults>
+ <w:latentStyles w:defLockedState="0" w:defUIPriority="99" w:defSemiHidden="1" w:defUnhideWhenUsed="1" w:defQFormat="0" w:count="267">
+ <w:lsdException w:name="Normal" w:semiHidden="0" w:uiPriority="0" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="heading 1" w:semiHidden="0" w:uiPriority="9" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="heading 2" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 3" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 4" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 5" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 6" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 7" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 8" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="heading 9" w:uiPriority="9" w:qFormat="1"/>
+ <w:lsdException w:name="toc 1" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 2" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 3" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 4" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 5" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 6" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 7" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 8" w:uiPriority="39"/>
+ <w:lsdException w:name="toc 9" w:uiPriority="39"/>
+ <w:lsdException w:name="caption" w:uiPriority="35" w:qFormat="1"/>
+ <w:lsdException w:name="Title" w:semiHidden="0" w:uiPriority="10" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Default Paragraph Font" w:uiPriority="1"/>
+ <w:lsdException w:name="Subtitle" w:semiHidden="0" w:uiPriority="11" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Strong" w:semiHidden="0" w:uiPriority="22" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Emphasis" w:semiHidden="0" w:uiPriority="20" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Table Grid" w:semiHidden="0" w:uiPriority="59" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Placeholder Text" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="No Spacing" w:semiHidden="0" w:uiPriority="1" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Light Shading" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 1" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 1" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 1" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 1" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 1" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 1" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Revision" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="List Paragraph" w:semiHidden="0" w:uiPriority="34" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Quote" w:semiHidden="0" w:uiPriority="29" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Intense Quote" w:semiHidden="0" w:uiPriority="30" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Medium List 2 Accent 1" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 1" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 1" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 1" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 1" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 1" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 1" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 1" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 2" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 2" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 2" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 2" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 2" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 2" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2 Accent 2" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 2" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 2" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 2" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 2" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 2" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 2" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 2" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 3" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 3" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 3" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 3" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 3" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 3" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2 Accent 3" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 3" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 3" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 3" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 3" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 3" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 3" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 3" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 4" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 4" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 4" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 4" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 4" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 4" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2 Accent 4" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 4" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 4" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 4" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 4" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 4" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 4" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 4" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 5" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 5" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 5" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 5" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 5" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 5" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2 Accent 5" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 5" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 5" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 5" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 5" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 5" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 5" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 5" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Shading Accent 6" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light List Accent 6" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Light Grid Accent 6" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 1 Accent 6" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Shading 2 Accent 6" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 1 Accent 6" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium List 2 Accent 6" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 1 Accent 6" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 2 Accent 6" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Medium Grid 3 Accent 6" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Dark List Accent 6" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Shading Accent 6" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful List Accent 6" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Colorful Grid Accent 6" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/>
+ <w:lsdException w:name="Subtle Emphasis" w:semiHidden="0" w:uiPriority="19" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Intense Emphasis" w:semiHidden="0" w:uiPriority="21" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Subtle Reference" w:semiHidden="0" w:uiPriority="31" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Intense Reference" w:semiHidden="0" w:uiPriority="32" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Book Title" w:semiHidden="0" w:uiPriority="33" w:unhideWhenUsed="0" w:qFormat="1"/>
+ <w:lsdException w:name="Bibliography" w:uiPriority="37"/>
+ <w:lsdException w:name="TOC Heading" w:uiPriority="39" w:qFormat="1"/>
+ </w:latentStyles>
+ <w:style w:type="paragraph" w:default="1" w:styleId="Normal">
+ <w:name w:val="Normal"/>
+ <w:qFormat/>
+ <w:rsid w:val="008B7467"/>
+ </w:style>
+ <w:style w:type="character" w:default="1" w:styleId="DefaultParagraphFont">
+ <w:name w:val="Default Paragraph Font"/>
+ <w:uiPriority w:val="1"/>
+ <w:semiHidden/>
+ <w:unhideWhenUsed/>
+ </w:style>
+ <w:style w:type="table" w:default="1" w:styleId="TableNormal">
+ <w:name w:val="Normal Table"/>
+ <w:uiPriority w:val="99"/>
+ <w:semiHidden/>
+ <w:unhideWhenUsed/>
+ <w:qFormat/>
+ <w:tblPr>
+ <w:tblInd w:w="0" w:type="dxa"/>
+ <w:tblCellMar>
+ <w:top w:w="0" w:type="dxa"/>
+ <w:left w:w="108" w:type="dxa"/>
+ <w:bottom w:w="0" w:type="dxa"/>
+ <w:right w:w="108" w:type="dxa"/>
+ </w:tblCellMar>
+ </w:tblPr>
+ </w:style>
+ <w:style w:type="numbering" w:default="1" w:styleId="NoList">
+ <w:name w:val="No List"/>
+ <w:uiPriority w:val="99"/>
+ <w:semiHidden/>
+ <w:unhideWhenUsed/>
+ </w:style>
+ </w:styles>
+ </pkg:xmlData>
+ </pkg:part>
+</pkg:package>
+ </xsl:template>
+
+ <xsl:template match="rng:define" mode="attrvalue">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:element name="resource">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">List</xsl:attribute>
+ <xsl:for-each select=".//rng:value">
+ <xsl:element name="value">
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:Value_</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:value-of select="."/>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="rng:define" mode="resourcesPropertySetValue">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:element name="resource">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">
+ <xsl:text>Properties</xsl:text>
+ </xsl:attribute>
+ <xsl:for-each select=".//rng:element">
+ <xsl:element name="element">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:attribute">
+ <xsl:element name="attribute">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="rng:define" mode="resourcevalues">
+ <xsl:variable name="definename" select="@name"/>
+ <xsl:element name="resource">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">List</xsl:attribute>
+ <xsl:for-each select=".//rng:value">
+ <xsl:element name="value">
+ <xsl:attribute name="name">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:Value_</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:value-of select="."/>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="rng:define" mode="tabledoc" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+ <xsl:for-each select=".//rng:element">
+ <w:tbl>
+ <w:tblPr>
+ <xsl:element name="w:{@name}"/>
+ </w:tblPr>
+ <w:tr>
+ <w:tc>
+ <w:tcPr/>
+ <w:p >
+ <w:pPr>
+ <w:rPr/>
+ </w:pPr>
+ <w:r><w:t><xsl:value-of select="@name"/></w:t></w:r>
+ </w:p>
+ </w:tc>
+ </w:tr>
+ </w:tbl>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:key name="resources" match="resource" use="@resource"/>
+
+ <xsl:template name="resources">
+ <xsl:for-each select="//resource">
+ <xsl:if test="generate-id(.) = generate-id(key('resources', @resource)[1])">
+ <xsl:element name="resource">
+ <xsl:attribute name="resource">
+ <xsl:value-of select="@resource"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="genfastresxsl">
+ <xsl:for-each select="//namespace[not(@name = 'wml')]">
+ <xsl:text>
+sed "s/wml/</xsl:text>
+<xsl:value-of select="@name"/>
+<xsl:text>/" &lt; fastresourcesimpl_wml.xsl &gt; fastresourcesimpl_</xsl:text>
+<xsl:value-of select="@name"/>
+<xsl:text>.xsl</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="genresxsl">
+ <xsl:for-each select="//namespace">
+ <xsl:text>
+sed "s/wml/</xsl:text>
+<xsl:value-of select="@name"/>
+<xsl:text>/;s/_WML_/_</xsl:text>
+<xsl:value-of select="translate(@name, 'abcdefghijklmnopqrstuvwxyz-', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_')"/>
+<xsl:text>_/" &lt; fastresources_.xsl &gt; fastresources_</xsl:text>
+<xsl:value-of select="@name"/>
+<xsl:text>.xsl</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="findpath">
+ <xsl:param name="path"/>
+ <xsl:variable name="name" select="@name"/>
+ <xsl:if test="not(contains($path, concat(@name, ',')))">
+ <xsl:for-each select="ancestor::rng:grammar//rng:ref[@name=$name]">
+ <xsl:for-each select="ancestor::rng:define">
+ <xsl:call-template name="findpath">
+ <xsl:with-param name="path" select="concat($path, @name, ',')"/>
+ </xsl:call-template>
+ <xsl:value-of select="@name"/>
+ <xsl:text> -> </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <out>
+ <xsl:apply-templates select="//rng:define[@name='CT_DocGrid']"
+ mode='resourcesPropertySetValue'/>
+ </out>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/effort.xsl b/writerfilter/source/ooxml/effort.xsl
new file mode 100644
index 000000000000..47f278a63f4f
--- /dev/null
+++ b/writerfilter/source/ooxml/effort.xsl
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0">
+
+<xsl:output method="text"/>
+
+<xsl:template match="/">
+ <xsl:text>Namespace,Define,Name,Done,Planned,qname-count&#xa;</xsl:text>
+ <xsl:for-each select="/todo/attribute|/todo/element">
+ <xsl:for-each select=".//status">
+ <xsl:for-each select="ancestor::attribute|ancestor::element">
+ <xsl:value-of select="@namespace"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@define"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>,</xsl:text>
+ </xsl:for-each>
+ <xsl:value-of select="@done"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@planned"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@qname-count"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:for-each>
+ <xsl:if test="not(.//status)">
+ <xsl:value-of select="@namespace"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@define"/>
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>,0,0.5,1&#xa;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/efforts.sh b/writerfilter/source/ooxml/efforts.sh
new file mode 100755
index 000000000000..f42a30d5b2fd
--- /dev/null
+++ b/writerfilter/source/ooxml/efforts.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+./status.sh | xmllint --format - | xsltproc todo.xsl - | xsltproc effort.xsl -
diff --git a/writerfilter/source/ooxml/factory.xsl b/writerfilter/source/ooxml/factory.xsl
new file mode 100644
index 000000000000..544c150021c8
--- /dev/null
+++ b/writerfilter/source/ooxml/factory.xsl
@@ -0,0 +1,89 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <xsl:template match="/">
+ <xsl:text>
+#include "OOXMLFactory.hxx"</xsl:text>
+ <xsl:call-template name="factoryincludes"/>
+ <xsl:text>
+namespace writerfilter {
+namespace ooxml {
+using namespace ::std;
+using namespace ::com::sun::star;
+
+/// @cond GENERATED
+ </xsl:text>
+ <xsl:call-template name="factoryfornamespace"/>
+ <xsl:text>
+/// @endcond
+}}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/factory_ns.xsl b/writerfilter/source/ooxml/factory_ns.xsl
new file mode 100644
index 000000000000..44b5c824859f
--- /dev/null
+++ b/writerfilter/source/ooxml/factory_ns.xsl
@@ -0,0 +1,161 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+<xsl:template name="factoryactiondecls">
+ <xsl:variable name="ns" select="@name"/>
+ <xsl:for-each select="resource/action">
+ <xsl:sort select="@name"/>
+ <xsl:if test="generate-id(key('actions', @name)[ancestor::namespace/@name=$ns][1]) = generate-id(.)">
+ <xsl:text>
+ void </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>Action(OOXMLFastContextHandler * pHandler</xsl:text>
+ <xsl:if test="@name='characters'">
+ <xsl:text>, const ::rtl::OUString &amp; sText</xsl:text>
+ </xsl:if>
+ <xsl:text>);</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- factorydecl -->
+<xsl:template name="factorydecl">
+ <xsl:variable name="classname">
+ <xsl:call-template name="factoryclassname"/>
+ </xsl:variable>
+ <xsl:text>
+class </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text> : public OOXMLFactory_ns
+{
+public:
+ typedef boost::shared_ptr &lt; OOXMLFactory_ns &gt; Pointer_t;
+
+ static Pointer_t getInstance();
+
+ virtual AttributeToResourceMapPointer createAttributeToResourceMap(Id nId);
+ virtual ListValueMapPointer createListValueMap(Id nId);
+ virtual CreateElementMapPointer createCreateElementMap(Id nId);
+ virtual TokenToIdMapPointer createTokenToIdMap(Id nId);
+ virtual string getDefineName(Id nId) const;</xsl:text>
+ <xsl:call-template name="factoryactiondecls"/>
+ virtual void attributeAction(OOXMLFastContextHandler * pHandler, Token_t nToken, OOXMLValue::Pointer_t pValue);
+ <xsl:text>
+
+ virtual ~</xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>();
+
+protected:
+ static Pointer_t m_pInstance;
+
+ </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>();
+};
+ </xsl:text>
+</xsl:template>
+
+ <xsl:template match="/">
+ <xsl:variable name="ns" select="substring-before(substring-after($file, 'OOXMLFactory_'), '.hxx')"/>
+ <xsl:variable name="incguard">
+ <xsl:text>INCLUDED_OOXML_FACTORY_</xsl:text>
+ <xsl:value-of select="translate($ns, 'abcdefghijklmnopqrstuvwxyz-', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_')"/>
+ <xsl:text>_HXX</xsl:text>
+ </xsl:variable>
+ <xsl:call-template name="licenseheader"/>
+ <xsl:text>
+#ifndef </xsl:text>
+ <xsl:value-of select="$incguard"/>
+ <xsl:text>
+#define </xsl:text>
+ <xsl:value-of select="$incguard"/>
+ <xsl:text>
+#include "OOXMLFactory.hxx"
+#include "OOXMLFactory_generated.hxx"
+#include "OOXMLnamespaceids.hxx"
+#include "resourceids.hxx"
+
+namespace writerfilter {
+namespace ooxml {
+
+/// @cond GENERATED
+ </xsl:text>
+ <xsl:for-each select="/model/namespace[@name=$ns]">
+ <xsl:call-template name="factorydecl"/>
+ </xsl:for-each>
+ <xsl:text>
+/// @endcond
+}}
+#endif //</xsl:text>
+ <xsl:value-of select="$incguard"/>
+ <xsl:text>&#xa;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/factory_values.xsl b/writerfilter/source/ooxml/factory_values.xsl
new file mode 100644
index 000000000000..4960f58e6b67
--- /dev/null
+++ b/writerfilter/source/ooxml/factory_values.xsl
@@ -0,0 +1,100 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <!--
+ Generates constant declarations for attribute values.
+ -->
+ <xsl:template name="valueconstantdecls">
+ <xsl:text>
+extern rtl::OUString
+ </xsl:text>
+ <xsl:call-template name="valuestringname">
+ <xsl:with-param name="string"></xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ <xsl:for-each select="//rng:value[generate-id(key('value-with-content', text())[1]) = generate-id(.)]">
+ <xsl:text>
+extern rtl::OUString </xsl:text>
+ <xsl:call-template name="valuestringname">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:text>
+#ifndef INCLUDED_FACTORY_VALUES</xsl:text>
+#include &lt;rtl/ustring.hxx&gt;
+
+<xsl:call-template name="valueconstantdecls"/>
+<xsl:text>
+#endif // INCLUDED_FACTORY_VALUES&#xa;</xsl:text>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/factoryimpl.xsl b/writerfilter/source/ooxml/factoryimpl.xsl
new file mode 100644
index 000000000000..8eecf4aba813
--- /dev/null
+++ b/writerfilter/source/ooxml/factoryimpl.xsl
@@ -0,0 +1,386 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <xsl:key name="resources-with-kind" match="//resource[kind]" use="kind/@name"/>
+ <xsl:key name="sprms-with-code" match="//resource/element[@tokenid]" use="@tokenid"/>
+
+<xsl:template name="factorycreatecontextfromfactory">
+ <xsl:text>
+uno::Reference&lt; xml::sax::XFastContextHandler &gt; OOXMLFactory::createFastChildContextFromFactory
+(OOXMLFastContextHandler * pHandler, OOXMLFactory_ns::Pointer_t pFactory, Token_t Element)
+{
+ uno::Reference &lt; xml::sax::XFastContextHandler &gt; aResult;
+ Id nDefine = pHandler->getDefine();
+
+ if (pFactory.get() != NULL)
+ {
+ CreateElementMapPointer pMap = pFactory-&gt;getCreateElementMap(nDefine);
+ TokenToIdMapPointer pTokenMap = pFactory-&gt;getTokenToIdMap(nDefine);
+
+ if (pMap.get() != NULL)
+ {
+ Id nId = (*pTokenMap)[Element];
+#ifdef DEBUG_CREATE
+ string sDefine(pFactory->getDefineName(nDefine));
+ string sElement(fastTokenToId(Element));
+ string sQName((*QNameToString::Instance())(nId));
+
+ debug_logger->startElement("createFastChildContextFromFactory");
+ debug_logger->attribute("define", sDefine);
+ debug_logger->attribute("element", sElement);
+ debug_logger->attribute("qname", sQName);
+
+ static char buffer[16];
+ snprintf(buffer, sizeof(buffer), "0x%08" SAL_PRIuUINT32, nId);
+ debug_logger->attribute("idnum", buffer);
+
+ snprintf(buffer, sizeof(buffer), "0x%08" SAL_PRIuUINT32, nDefine);
+ debug_logger->attribute("definenum", buffer);
+#endif
+
+ CreateElement aCreateElement = (*pMap)[Element];
+
+ switch (aCreateElement.m_nResource)
+ {</xsl:text>
+ <xsl:for-each select="/model/namespace/resource">
+ <xsl:if test="generate-id(key('resources', @resource)) = generate-id(.)">
+ <xsl:if test="not(@resource = 'Hex' or
+ @resource = 'Integer' or
+ @resource = 'Boolean' or
+ @resource = 'List' or
+ @resource = 'String')">
+ <xsl:text>
+ case RT_</xsl:text>
+ <xsl:value-of select="@resource"/>
+ <xsl:text>:
+ aResult.set(OOXMLFastHelper&lt;OOXMLFastContextHandler</xsl:text>
+ <xsl:value-of select="@resource"/>
+ <xsl:text>&gt;::createAndSetParentAndDefine(pHandler, Element, nId, aCreateElement.m_nId));
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+ case RT_Any:
+ aResult.set(createFastChildContextFromStart(pHandler, Element));
+ break;
+ default:
+ break;
+ }
+
+#ifdef DEBUG_CREATE
+ debug_logger->endElement("createFastChildContextFromFactory");
+#endif
+ }
+ }
+
+ return aResult;
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factoryfornamespace">
+ <xsl:text>
+OOXMLFactory_ns::Pointer_t OOXMLFactory::getFactoryForNamespace(Id nId)
+{
+ OOXMLFactory_ns::Pointer_t pResult;
+
+ switch (nId &amp; 0xffff0000)
+ {</xsl:text>
+ <xsl:for-each select="/model/namespace">
+ <xsl:text>
+ case </xsl:text>
+ <xsl:call-template name="idfornamespace"/>
+ <xsl:text>:
+ pResult = </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::getInstance();
+ break;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+ default:
+ break;
+ }
+
+ return pResult;
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factorycreatefromstart">
+ <xsl:text>
+uno::Reference&lt; xml::sax::XFastContextHandler &gt; OOXMLFactory::createFastChildContextFromStart
+(OOXMLFastContextHandler * pHandler, Token_t Element)
+{
+#ifdef DEBUG_CREATE
+ debug_logger->startElement("createFastChildContextFromStart");
+#endif
+
+ uno::Reference &lt; xml::sax::XFastContextHandler &gt; aResult;
+ OOXMLFactory_ns::Pointer_t pFactory;
+
+</xsl:text>
+ <xsl:for-each select="/model/namespace">
+ <xsl:text>
+ if (! aResult.is())
+ {
+ pFactory = getFactoryForNamespace(</xsl:text>
+ <xsl:call-template name="idfornamespace"/>
+ <xsl:text>);
+ aResult.set(createFastChildContextFromFactory(pHandler, pFactory, Element));
+ }</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+
+#ifdef DEBUG_CREATE
+ debug_logger->endElement("createFastChildContextFromStart");
+#endif
+ return aResult;
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="fasttokentoid">
+ <xsl:text>
+namespace tokenmap {
+struct token { const char * name; Token_t nToken; };
+class Perfect_Hash
+{
+private:
+ static inline unsigned int hash (const char *str, unsigned int len);
+public:
+ static struct token *in_word_set (const char *str, unsigned int len);
+};
+}
+
+string fastTokenToId(sal_uInt32 nToken)
+{
+ </xsl:text>
+ <xsl:text>
+ string sResult;
+
+ switch (nToken &amp; 0xffff0000)
+ {</xsl:text>
+ <xsl:for-each select="//namespace-alias">
+ <xsl:text>
+ case NS_</xsl:text>
+ <xsl:value-of select="@alias"/>
+ <xsl:text>:
+ sResult += "</xsl:text>
+ <xsl:value-of select="@alias"/>
+ <xsl:text>:";
+ break;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+ }
+
+ switch (nToken &amp; 0xffff)
+ {</xsl:text>
+ <xsl:for-each select=".//rng:element[@localname]|.//rng:attribute[@localname]">
+ <xsl:variable name="localname" select="@localname"/>
+ <xsl:if test="generate-id(.) = generate-id(key('same-token-name', $localname)[1])">
+ <xsl:text>
+ case </xsl:text>
+ <xsl:call-template name="fastlocalname"/>
+ <xsl:text>:
+ sResult += "</xsl:text>
+ <xsl:value-of select="$localname"/>
+ <xsl:text>";
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+<xsl:text>
+ }
+
+ return sResult;
+}
+ </xsl:text>
+</xsl:template>
+
+ <!--
+ Generates case labels for mapping from token ids to a single kind
+ of sprm.
+
+ @param kind the sprm kind for which to generate the case labels
+ -->
+
+ <xsl:template name="sprmkindcase">
+ <xsl:param name="kind"/>
+ <xsl:for-each select="key('resources-with-kind', $kind)/element">
+ <xsl:if test="generate-id(.) = generate-id(key('sprms-with-code', @tokenid))">
+ <xsl:text>
+ case </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>: //</xsl:text>
+ <xsl:value-of select="ancestor::resource/@name"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!--
+ Generates SprmKind.
+ -->
+ <xsl:template name="sprmkind">
+ <xsl:text>
+Sprm::Kind SprmKind(sal_uInt32 nSprmCode)
+{
+ Sprm::Kind nResult = Sprm::UNKNOWN;
+
+ switch (nSprmCode)
+ {</xsl:text>
+ <xsl:call-template name="sprmkindcase">
+ <xsl:with-param name="kind">paragraph</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+ nResult = Sprm::PARAGRAPH;
+ break;</xsl:text>
+ <xsl:call-template name="sprmkindcase">
+ <xsl:with-param name="kind">character</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+ nResult = Sprm::CHARACTER;
+ break;</xsl:text>
+ <xsl:call-template name="sprmkindcase">
+ <xsl:with-param name="kind">table</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>
+ nResult = Sprm::TABLE;
+ break;</xsl:text>
+ <xsl:text>
+ default:
+ break;
+ }
+
+ return nResult;
+}</xsl:text>
+ </xsl:template>
+
+<xsl:template name="getfastparser">
+<xsl:text>
+uno::Reference &lt; xml::sax::XFastParser &gt; OOXMLStreamImpl::getFastParser()
+{
+ if (! mxFastParser.is())
+ {
+ uno::Reference &lt; lang::XMultiComponentFactory &gt; xFactory =
+ uno::Reference &lt; lang::XMultiComponentFactory &gt;
+ (mxContext->getServiceManager());
+
+ mxFastParser.set(xFactory->createInstanceWithContext
+ ( ::rtl::OUString::createFromAscii
+ ( "com.sun.star.xml.sax.FastParser" ),
+ mxContext ), uno::UNO_QUERY_THROW);
+</xsl:text>
+<xsl:for-each select="//namespace-alias">
+ <xsl:text>
+ mxFastParser->registerNamespace(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>")), </xsl:text>
+ <xsl:call-template name="namespaceid"/>
+ <xsl:text>);</xsl:text>
+</xsl:for-each>
+<xsl:text>
+ }
+
+ return mxFastParser;
+}
+</xsl:text>
+</xsl:template>
+
+ <xsl:template match="/">
+ <xsl:text>
+#include "OOXMLFactory.hxx"
+#include "OOXMLFastHelper.hxx"
+#include "OOXMLStreamImpl.hxx"
+#include "doctok/sprmids.hxx"
+#include "doctok/resourceids.hxx"
+</xsl:text>
+ <xsl:call-template name="factoryincludes"/>
+ <xsl:text>
+namespace writerfilter {
+namespace ooxml {
+
+/// @cond GENERATED
+ </xsl:text>
+ <xsl:call-template name="factorycreatecontextfromfactory"/>
+ <xsl:call-template name="factoryfornamespace"/>
+ <xsl:call-template name="factorycreatefromstart"/>
+ <xsl:call-template name="fasttokentoid"/>
+ <xsl:call-template name="sprmkind"/>
+ <xsl:call-template name="getfastparser"/>
+ <xsl:text>
+/// @endcond
+}}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/factoryimpl_ns.xsl b/writerfilter/source/ooxml/factoryimpl_ns.xsl
new file mode 100644
index 000000000000..533c3d16ae23
--- /dev/null
+++ b/writerfilter/source/ooxml/factoryimpl_ns.xsl
@@ -0,0 +1,833 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+<xsl:template name="factorymutex">
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>_Mutex</xsl:text>
+</xsl:template>
+
+<xsl:template name="factorymutexdecl">
+ <xsl:variable name="classname">
+ <xsl:call-template name="factoryclassname"/>
+ </xsl:variable>
+ <xsl:text>
+typedef rtl::Static &lt; osl::Mutex, </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text> &gt; </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>_Mutex;
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factoryconstructor">
+ <xsl:variable name="classname">
+ <xsl:call-template name="factoryclassname"/>
+ </xsl:variable>
+ <xsl:text>
+</xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>()
+{
+ // multi-thread-safe mutex for all platforms
+
+ osl::MutexGuard aGuard(</xsl:text>
+ <xsl:call-template name="factorymutex"/>
+ <xsl:text>::get());
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factorydestructor">
+ <xsl:variable name="classname">
+ <xsl:call-template name="factoryclassname"/>
+ </xsl:variable>
+ <xsl:text>
+</xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>::~</xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>()
+{
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factorygetinstance">
+ <xsl:variable name="classname">
+ <xsl:call-template name="factoryclassname"/>
+ </xsl:variable>
+ <xsl:text>
+OOXMLFactory_ns::Pointer_t </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>::m_pInstance;
+
+OOXMLFactory_ns::Pointer_t </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>::getInstance()
+{
+ if (m_pInstance.get() == NULL)
+ m_pInstance.reset(new </xsl:text>
+ <xsl:value-of select="$classname"/>
+ <xsl:text>());
+
+ return m_pInstance;
+}
+</xsl:text>
+</xsl:template>
+
+<!--
+
+creates code block in OOXMLFactory_<namespace>::createAttributeToResourceMap
+for a rng:define
+
+ -->
+<xsl:template name="factoryattributetoresourcemapinner">
+ <xsl:variable name="defname" select="@name"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factoryattributetoresourcemapinner"/>
+ </xsl:for-each>
+ </xsl:for-each>
+
+ <xsl:for-each select=".//rng:attribute">
+ <xsl:if test="position()=1">
+ <xsl:text>
+ // </xsl:text>
+ <xsl:value-of select="$defname"/>
+ </xsl:if>
+ <xsl:variable name="mynsid" select="generate-id(ancestor::namespace)"/>
+ <xsl:variable name="resource">
+ <xsl:for-each select="rng:ref">
+ <xsl:for-each select="key('context-resource', @name)[generate-id(ancestor::namespace) = $mynsid]">
+ <xsl:value-of select="@resource"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:text">
+ <xsl:text>String</xsl:text>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:data[@type='base64Binary']">
+ <xsl:text>String</xsl:text>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="refdefine1">
+ <xsl:for-each select="rng:ref">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:for-each select="ancestor::rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="idfordefine"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="refdefine">
+ <xsl:choose>
+ <xsl:when test="string-length($refdefine1) > 0">
+ <xsl:value-of select="$refdefine1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($resource) > 0">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ <xsl:text>] = AttributeInfo(RT_</xsl:text>
+ <xsl:value-of select="$resource"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$refdefine"/>
+ <xsl:text>);</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>
+ // empty resource: </xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:for-each>
+</xsl:template>
+
+<!-- factoryattributetoresourcemap -->
+<xsl:template name="factoryattributetoresourcemap">
+ <xsl:text>
+AttributeToResourceMapPointer </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::createAttributeToResourceMap(Id nId)
+{
+ AttributeToResourceMapPointer pMap(new AttributeToResourceMap());
+
+ switch (nId)
+ {</xsl:text>
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:variable name="inner">
+ <xsl:call-template name="factoryattributetoresourcemapinner"/>
+ </xsl:variable>
+ <xsl:if test="string-length($inner) > 0">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:value-of select="$inner"/>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ default:
+ break;
+ }
+
+ return pMap;
+}
+</xsl:template>
+
+<!-- factorylistvaluemap -->
+<xsl:template name="factorylistvaluemap">
+ <xsl:text>
+ListValueMapPointer </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::createListValueMap(Id nId)
+{
+ ListValueMapPointer pMap(new ListValueMap());
+
+ switch (nId)
+ {</xsl:text>
+ <xsl:for-each select="resource[@resource='List']">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:for-each select="value">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="valuestringname">
+ <xsl:with-param name="string" select="text()"/>
+ </xsl:call-template>
+ <xsl:text>] = </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+ default:
+ break;
+ }
+
+ return pMap;
+}</xsl:text>
+</xsl:template>
+
+<!-- factoryelementtoresorucemapinner -->
+<xsl:template name="factorycreateelementmapinner">
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="block">
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factorycreateelementmapinner"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="block1">
+ <xsl:choose>
+ <xsl:when test="string-length($block) = 0">
+ <xsl:for-each select="ancestor::model/namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factorycreateelementmapinner"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$block"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="string-length($block1) > 0">
+ <xsl:text>
+ /* ref: </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>*/</xsl:text>
+ <xsl:value-of select="$block1"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:for-each select=".//rng:element">
+ <xsl:variable name="resource">
+ <xsl:for-each select="rng:ref">
+ <xsl:call-template name="contextresource"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="string-length($resource) > 0">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ <xsl:text>] = CreateElement(RT_</xsl:text>
+ <xsl:value-of select="$resource"/>
+ <xsl:text>, </xsl:text>
+ <xsl:for-each select="rng:ref">
+ <xsl:call-template name="idforref"/>
+ </xsl:for-each>
+ <xsl:text>);</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="factorycreateelementmapfromstart">
+ <xsl:for-each select="start">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="block">
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factorycreateelementmapinner">
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:text>
+ /* start: </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>*/</xsl:text>
+ <xsl:if test="string-length($block) > 0">
+ <xsl:value-of select="$block"/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- factoryelementtoresourcemap -->
+<xsl:template name="factorycreateelementmap">
+ <xsl:text>
+CreateElementMapPointer </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::createCreateElementMap(Id nId)
+{
+ CreateElementMapPointer pMap(new CreateElementMap());
+
+ switch (nId)
+ {</xsl:text>
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:variable name="inner">
+ <xsl:call-template name="factorycreateelementmapinner"/>
+ </xsl:variable>
+ <xsl:if test="string-length($inner) > 0">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:value-of select="$inner"/>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+ default:</xsl:text>
+ <xsl:call-template name="factorycreateelementmapfromstart"/>
+ <xsl:text>
+ break;
+ }
+
+ return pMap;
+}</xsl:text>
+</xsl:template>
+
+ <!--
+ Chooses the action for the current <action> element.
+ -->
+ <xsl:template name="factorychooseaction">
+ <xsl:if test="@tokenid">
+ <xsl:text>
+ if (sal::static_int_cast&lt;Id&gt;(pHandler-&gt;getId()) == </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>)
+ {</xsl:text>
+ </xsl:if>
+ <xsl:for-each select="./cond">
+ <xsl:text>
+ {
+ OOXMLPropertySetEntryToInteger aHandler(</xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>);
+ dynamic_cast&lt;OOXMLFastContextHandlerStream*&gt;(pHandler)-&gt;getPropertySetAttrs()-&gt;resolve(aHandler);
+
+ if (sal::static_int_cast&lt;Id&gt;(aHandler.getValue()) == </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@value"/>
+ </xsl:call-template>
+ <xsl:text>)
+ {</xsl:text>
+ </xsl:for-each>
+ <xsl:choose>
+ <xsl:when test="@action='handleXNotes' or
+ @action='handleHdrFtr' or
+ @action='handleComment' or
+ @action='handlePicture' or
+ @action='handleBreak' or
+ @action='handleOLE'">
+ <xsl:text>
+ dynamic_cast&lt;OOXMLFastContextHandlerProperties*&gt;(pHandler)-&gt;</xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='propagateCharacterPropertiesAsSet'">
+ <xsl:text>
+ pHandler-&gt;propagateCharacterPropertiesAsSet(</xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@sendtokenid"/>
+ </xsl:call-template>
+ <xsl:text>);</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='startCell' or @action='endCell'">
+ <xsl:text>
+ dynamic_cast&lt;OOXMLFastContextHandlerTextTableCell*&gt;(pHandler)-&gt;</xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='startRow' or @action='endRow'">
+ <xsl:text>
+ dynamic_cast&lt;OOXMLFastContextHandlerTextTableRow*&gt;(pHandler)-&gt;</xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='sendProperty' or @action='handleHyperlink'">
+ <xsl:text>
+ dynamic_cast&lt;OOXMLFastContextHandlerStream*&gt;(pHandler)-&gt;</xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='fieldstart'">
+ <xsl:text>
+ pHandler-&gt;startField();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='fieldsep'">
+ <xsl:text>
+ pHandler-&gt;fieldSeparator();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='fieldend'">
+ <xsl:text>
+ pHandler-&gt;endField();</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='printproperty'">
+ <xsl:text>
+ dynamic_cast&lt;OOXMLFastContextHandlerStream*&gt;(pHandler)-&gt;sendProperty(</xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@sendtokenid"/>
+ </xsl:call-template>
+ <xsl:text>);</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='sendPropertiesWithId'">
+ <xsl:text>
+ pHandler-&gt;sendPropertiesWithId(</xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@sendtokenid"/>
+ </xsl:call-template>
+ <xsl:text>);</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='text'">
+ pHandler-&gt;text(sText);
+ </xsl:when>
+ <xsl:when test="@action='newProperty'">
+ <xsl:text>
+ OOXMLFastHelper&lt;OOXMLIntegerValue&gt;::newProperty(pHandler, </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("</xsl:text>
+ <xsl:value-of select="@value"/>
+ <xsl:text>")));</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='mark'">
+ <xsl:text>
+ OOXMLFastHelper&lt;OOXMLIntegerValue&gt;::mark(pHandler, </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@sendtokenid"/>
+ </xsl:call-template>
+ <xsl:text>, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("</xsl:text>
+ <xsl:value-of select="@value"/>
+ <xsl:text>")));</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='tokenproperty'">
+ <xsl:text>
+ OOXMLFastHelper&lt;OOXMLIntegerValue&gt;::newProperty(pHandler, </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id">ooxml:token</xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>, pHandler-&gt;getToken());</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>
+ pHandler-&gt;</xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>();</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="./cond">
+ <xsl:text>
+ }
+ }</xsl:text>
+ </xsl:for-each>
+ <xsl:if test="@tokenid">
+ <xsl:text>
+ }</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+<!-- factoryaction -->
+<xsl:template name="factoryaction">
+ <xsl:param name="action"/>
+ <xsl:text>
+void </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$action"/>
+ <xsl:text>Action(OOXMLFastContextHandler * pHandler</xsl:text>
+ <xsl:if test="$action='characters'">
+ <xsl:text>, const ::rtl::OUString &amp; sText</xsl:text>
+ </xsl:if>
+ <xsl:text>)
+{
+ switch (pHandler->getDefine())
+ {</xsl:text>
+ <xsl:for-each select="resource[action/@name=$action]">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:for-each select="action[@name=$action]">
+ <xsl:call-template name="factorychooseaction"/>
+ </xsl:for-each>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+ default:
+ break;
+ }
+}
+</xsl:text>
+</xsl:template>
+
+<!-- factoryactions -->
+<xsl:template name="factoryactions">
+ <xsl:variable name="ns" select="@name"/>
+ <xsl:for-each select="resource/action">
+ <xsl:sort select="@name"/>
+ <xsl:if test="generate-id(key('actions', @name)[ancestor::namespace/@name=$ns][1]) = generate-id(.)">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:for-each select="ancestor::namespace">
+ <xsl:call-template name="factoryaction">
+ <xsl:with-param name="action" select="$name"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="factorygetdefinename">
+ <xsl:text>
+string </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::getDefineName(Id nId) const
+{
+ static IdToStringMapPointer pMap;
+
+ if (pMap.get() == NULL)
+ {
+ pMap = IdToStringMapPointer(new IdToStringMap());
+
+</xsl:text>
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="idfordefine"/>
+ <xsl:text>] = "</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>";</xsl:text>
+ </xsl:for-each>
+ }
+
+ return (*pMap)[nId];
+}
+
+</xsl:template>
+
+<xsl:template name="factorytokentoidmapinner">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:for-each select=".//rng:ref[not(ancestor::rng:element or ancestor::rng:attribute)]">
+ <xsl:variable name="refname" select="@name"/>
+ <xsl:variable name="refblock1">
+ <xsl:for-each
+ select="ancestor::rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($refblock1) = 0">
+ <xsl:for-each select="ancestor::model/namespace/rng:grammar/rng:define[@name=$refname]">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$refblock1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:variable name="body">
+ <xsl:for-each select="ancestor::namespace/resource[@name=$name]">
+ <xsl:for-each select="element[@tokenid]|attribute[@tokenid]">
+ <xsl:text>
+ (*pMap)[</xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ <xsl:text>] = </xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="@tokenid"/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="string-length($body) > 0">
+ <xsl:text>
+ // </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:value-of select="$body"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="factorytokentoidmap">
+ <xsl:text>
+TokenToIdMapPointer </xsl:text>
+ <xsl:call-template name="factoryclassname"/>
+ <xsl:text>::createTokenToIdMap(Id nId)
+{
+ TokenToIdMapPointer pMap(new TokenToIdMap());
+
+ switch (nId)
+ {</xsl:text>
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:variable name="inner">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:variable>
+ <xsl:if test="string-length($inner) > 0">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:value-of select="$inner"/>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+ default:</xsl:text>
+ <xsl:for-each select="start">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:text>
+ // </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="factorytokentoidmapinner"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:text>
+ break;
+ }
+
+ return pMap;
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="factoryattributeactiondefineinner">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="block">
+ <xsl:for-each select="ancestor::namespace/resource[@name=$name]">
+ <xsl:for-each select="attribute[@action]">
+ <xsl:text>
+ case </xsl:text>
+ <xsl:call-template name="fasttoken"/>
+ <xsl:text>:
+ pHandler-></xsl:text>
+ <xsl:value-of select="@action"/>
+ <xsl:text>(pValue);
+ break;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:if test="string-length($block) > 0">
+ <xsl:variable name="handlertype">
+ <xsl:text>OOXMLFastContextHandler</xsl:text>
+ <xsl:for-each select="ancestor::namespace/resource[@name=$name]">
+ <xsl:value-of select="@resource"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:text>
+ {
+ </xsl:text>
+ <xsl:value-of select="$handlertype"/>
+ <xsl:text> * pHandler = dynamic_cast&lt;</xsl:text>
+ <xsl:value-of select="$handlertype"/>
+ <xsl:text> * &gt;(_pHandler);
+
+ switch(nToken)
+ {</xsl:text>
+ <xsl:value-of select="$block"/>
+ <xsl:text>
+ default:
+ break;
+ }
+ }</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="factoryattributeactioninner">
+ <xsl:for-each select="rng:grammar/rng:define">
+ <xsl:variable name="inner">
+ <xsl:call-template name="factoryattributeactiondefineinner"/>
+ </xsl:variable>
+ <xsl:if test="string-length($inner) > 0">
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="caselabeldefine"/>
+ <xsl:value-of select="$inner"/>
+ <xsl:text>
+ break;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="factoryattributeaction">
+ <xsl:variable name="inner">
+ <xsl:call-template name="factoryattributeactioninner"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($inner) > 0">
+ <xsl:text>
+void </xsl:text>
+<xsl:call-template name="factoryclassname"/>
+<xsl:text>::attributeAction(OOXMLFastContextHandler * _pHandler, Token_t nToken, OOXMLValue::Pointer_t pValue)
+{
+ switch(_pHandler->getDefine())
+ {</xsl:text>
+ <xsl:value-of select="$inner"/>
+ <xsl:text>
+ default:
+ break;
+ }
+}
+</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>
+void </xsl:text>
+<xsl:call-template name="factoryclassname"/>
+<xsl:text>::attributeAction(OOXMLFastContextHandler *, Token_t, OOXMLValue::Pointer_t)
+{
+}
+</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+ <xsl:template match="/">
+ <xsl:variable name="ns" select="substring-before(substring-after($file, 'OOXMLFactory_'), '.cxx')"/>
+ <xsl:text>
+#include "doctok/sprmids.hxx"
+#include "doctok/resourceids.hxx"
+#include "ooxml/resourceids.hxx"
+#include "OOXMLFactory_values.hxx"
+#include "OOXMLFactory_</xsl:text>
+ <xsl:value-of select="$ns"/>
+ <xsl:text>.hxx"
+#include "OOXMLFastHelper.hxx"
+
+namespace writerfilter {
+namespace ooxml {
+
+/// @cond GENERATED
+ </xsl:text>
+ <xsl:for-each select="/model/namespace[@name=$ns]">
+ <xsl:call-template name="factorymutexdecl"/>
+ <xsl:call-template name="factoryconstructor"/>
+ <xsl:call-template name="factorydestructor"/>
+ <xsl:call-template name="factorygetinstance"/>
+ <xsl:call-template name="factoryattributetoresourcemap"/>
+ <xsl:call-template name="factorylistvaluemap"/>
+ <xsl:call-template name="factorycreateelementmap"/>
+ <xsl:call-template name="factoryactions"/>
+ <xsl:call-template name="factorygetdefinename"/>
+ <xsl:call-template name="factorytokentoidmap"/>
+ <xsl:call-template name="factoryattributeaction"/>
+ </xsl:for-each>
+ <xsl:text>
+/// @endcond
+}}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/factoryimpl_values.xsl b/writerfilter/source/ooxml/factoryimpl_values.xsl
new file mode 100644
index 000000000000..465923d41769
--- /dev/null
+++ b/writerfilter/source/ooxml/factoryimpl_values.xsl
@@ -0,0 +1,98 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <!--
+ Generates constant definitions for attribute values.
+ -->
+ <xsl:template name="valueconstants">
+ <xsl:text>
+rtl::OUString </xsl:text>
+<xsl:call-template name="valuestringname">
+ <xsl:with-param name="string"></xsl:with-param>
+</xsl:call-template>
+<xsl:text>(RTL_CONSTASCII_USTRINGPARAM(""));</xsl:text>
+<xsl:for-each select="//rng:value[generate-id(key('value-with-content', text())[1]) = generate-id(.)]">
+ <xsl:text>
+rtl::OUString </xsl:text>
+<xsl:call-template name="valuestringname">
+ <xsl:with-param name="string" select="."/>
+</xsl:call-template>
+<xsl:text>(RTL_CONSTASCII_USTRINGPARAM("</xsl:text>
+<xsl:value-of select="."/>
+<xsl:text>"));</xsl:text>
+</xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:text>
+#include "OOXMLFactory_values.hxx"</xsl:text>
+<xsl:call-template name="valueconstants"/>
+<xsl:text>&#xa;</xsl:text>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/factoryinc.xsl b/writerfilter/source/ooxml/factoryinc.xsl
new file mode 100644
index 000000000000..aa54a5c297ca
--- /dev/null
+++ b/writerfilter/source/ooxml/factoryinc.xsl
@@ -0,0 +1,112 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2008 by Sun Microsystems, Inc.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ $RCSfile: fastresources_wml.xsl,v $
+
+ $Revision: 1.3 $
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <xsl:template name="factorynamespaceiddecls">
+ <xsl:for-each select="/model/namespace">
+ <xsl:sort select="@name"/>
+ <xsl:text>
+extern const Id </xsl:text>
+<xsl:call-template name="idfornamespace"/>
+<xsl:text>;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="factorynamespaceidimpls">
+ <xsl:for-each select="/model/namespace">
+ <xsl:sort select="@name"/>
+ <xsl:text>
+const Id </xsl:text>
+<xsl:call-template name="idfornamespace"/>
+<xsl:text> = </xsl:text>
+<xsl:value-of select="position()"/>
+<xsl:text> &lt;&lt; 16;</xsl:text>
+ </xsl:for-each>
+</xsl:template>
+
+ <xsl:template match="/">
+ <xsl:text>
+#ifndef OOXML_FACTORY_GENERATED_HXX
+#define OOXML_FACTORY_GENERATED_HXX
+
+namespace writerfilter {
+namespace ooxml {
+
+/// @cond GENERATED
+ </xsl:text>
+ <xsl:call-template name="factorynamespaceidimpls"/>
+ <xsl:call-template name="factorydefineidimpls"/>
+ <xsl:text>
+/// @endcond
+}}
+
+#endif // OOXML_FACTORY_GENERATED_HXX
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/factorytools.xsl b/writerfilter/source/ooxml/factorytools.xsl
new file mode 100644
index 000000000000..a7b0af5f9dea
--- /dev/null
+++ b/writerfilter/source/ooxml/factorytools.xsl
@@ -0,0 +1,345 @@
+<!--
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ *
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:UML = 'org.omg.xmi.namespace.UML'
+ xmlns:common="http://exslt.org/common"
+ exclude-result-prefixes = "xalan"
+ xml:space="default">
+
+<!--
+ KEYS
+-->
+<xsl:key name="context-resource"
+ match="resource" use="@name"/>
+
+<xsl:key name="tokenids" match="@tokenid|@sendtokenid" use="."/>
+
+<xsl:key name="actions" match="/model/namespace/resource/action"
+ use="@name"/>
+
+<xsl:key name="definename" match="//rng:define" use="@name"/>
+
+<xsl:key name="resources" match="/model/namespace/resource" use="@resource"/>
+
+<xsl:key name="value-with-content" match="//rng:value"
+ use="text()"/>
+
+<xsl:key name="same-token-name" match="rng:element|rng:attribute" use="@localname"/>
+
+<!-- license header -->
+<xsl:template name="licenseheader">
+ <xsl:text>
+/*
+
+ THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT!
+
+*/
+&#xa;</xsl:text>
+</xsl:template>
+
+<!--
+IDENTIFIERs
+-->
+
+<!--
+
+generates token identifer for a namespace
+
+NN_<namespace/@name>
+
+-->
+<xsl:template name="fastnamespace">
+ <xsl:if test="string-length(@prefix) > 0">
+ <xsl:text>NS_</xsl:text>
+ <xsl:value-of select="@prefix"/>
+ </xsl:if>
+</xsl:template>
+
+<!--
+
+generates local part of token identifier for a rng:define
+
+OOXML_<rng:define/@localname>
+
+-->
+<xsl:template name="fastlocalname">
+ <xsl:text>OOXML_</xsl:text>
+ <xsl:value-of select="@localname"/>
+</xsl:template>
+
+<!--
+
+generates identifier for a token
+
+-->
+<xsl:template name="fasttoken">
+ <xsl:variable name="ns">
+ <xsl:call-template name="fastnamespace"/>
+ </xsl:variable>
+ <xsl:if test="string-length($ns) > 0">
+ <xsl:value-of select="$ns"/>
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="fastlocalname"/>
+</xsl:template>
+
+<!-- generates identifier for a namespace
+
+NN_<namespace/@name>
+
+-->
+<xsl:template name="idfornamespace">
+ <xsl:text>NN_</xsl:text>
+ <xsl:value-of select="translate(@name, '-', '_')"/>
+</xsl:template>
+
+<!-- generates local part of identier for rng:define
+
+DEFINE_<rng:define/@name>
+
+-->
+<xsl:template name="localidfordefine">
+ <xsl:text>DEFINE_</xsl:text>
+ <xsl:value-of select="@name"/>
+</xsl:template>
+
+<!-- generates id for a rng:define
+
+NN_<namespace/@name> | DEFINE_<rng:define/@name>
+
+-->
+<xsl:template name="idfordefine">
+ <xsl:for-each select="ancestor::namespace">
+ <xsl:call-template name="idfornamespace"/>
+ </xsl:for-each>
+ <xsl:text>|</xsl:text>
+ <xsl:call-template name="localidfordefine"/>
+</xsl:template>
+
+<!--
+
+creates case label for a rng:define:
+
+case NN_<namesapce/@name> | DEFINE_<rng:define/@name>:
+
+-->
+<xsl:template name="caselabeldefine">
+ <xsl:text>case </xsl:text>
+ <xsl:call-template name="idfordefine"/>
+ <xsl:text>:</xsl:text>
+</xsl:template>
+
+<!--
+ Generates name for a value string.
+
+ Value strings are possible values for attributes in OOXML.
+
+ @param string the string as present in the according <rng:value>
+-->
+<xsl:template name="valuestringname">
+ <xsl:param name="string"/>
+ <xsl:text>OOXMLValueString_</xsl:text>
+ <xsl:value-of select="translate($string, '-+ ,', 'mp__')"/>
+</xsl:template>
+
+<!--
+ Generates qname for id.
+
+ @param id the id to generate qname for
+
+ If id is of format <prefix>:<localname> the result is
+
+ NS_<prefix>::LN_<localname>
+
+ If id does not contain ":" the result is just id.
+-->
+<xsl:template name='idtoqname'>
+ <xsl:param name='id'/>
+ <xsl:choose>
+ <xsl:when test="contains($id, ':')">
+ <xsl:text>NS_</xsl:text>
+ <xsl:value-of select='substring-before($id, ":")'/>
+ <xsl:text>::LN_</xsl:text>
+ <xsl:value-of select='substring-after($id, ":")'/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!--
+ Returns the identifier for a namespace.
+
+NS_<namespace/@alias>
+
+-->
+<xsl:template name="namespaceid">
+ <xsl:text>NS_</xsl:text>
+ <xsl:value-of select="@alias"/>
+</xsl:template>
+
+<!--
+ Returns the value of the @resource attribute of the <resource>
+ node according to the current <define>.
+-->
+<xsl:template name="contextresource">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="nsid" select="generate-id(ancestor::namespace)"/>
+ <xsl:variable name="resourcesamens">
+ <xsl:for-each select="key('context-resource', @name)">
+ <xsl:if test="generate-id(ancestor::namespace) = $nsid">
+ <xsl:value-of select="@resource"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$name='BUILT_IN_ANY_TYPE'">
+ <xsl:text>Any</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($resourcesamens) = 0">
+ <xsl:for-each select="key('context-resource', @name)[1]">
+ <xsl:value-of select="@resource"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$resourcesamens"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="idforref">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:variable name="result1">
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="idfordefine"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$name='BUILT_IN_ANY_TYPE'">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($result1) = 0">
+ <xsl:for-each select="(ancestor::model/namespace/rng:grammar/rng:define[@name=$name])[1]">
+ <xsl:call-template name="idfordefine"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- factoryclassname -->
+<xsl:template name="factoryclassname">
+ <xsl:text>OOXMLFactory_</xsl:text>
+ <xsl:value-of select="translate(@name, '-', '_')"/>
+</xsl:template>
+
+<xsl:template name="factoryincludes">
+ <xsl:for-each select="/model/namespace">
+ <xsl:text>
+#include "OOXMLFactory_</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>.hxx"</xsl:text>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="factorydefineiddecls">
+ <xsl:for-each select="//rng:define">
+ <xsl:sort select="@name"/>
+ <xsl:if test="generate-id(key('definename', @name)[1]) = generate-id(.)">
+ <xsl:text>
+extern const Id </xsl:text>
+ <xsl:call-template name="localidfordefine"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="factorydefineidimpls">
+ <xsl:for-each select="//rng:define">
+ <xsl:sort select="@name"/>
+ <xsl:if test="generate-id(key('definename', @name)[1]) = generate-id(.)">
+ <xsl:text>
+const Id </xsl:text>
+ <xsl:call-template name="localidfordefine"/>
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="position()"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="resources">
+ <xsl:for-each select="/model/namespace/resource">
+ <xsl:if test="generate-id(key('resources', @resource)[1])=generate-id(.)">
+ <xsl:text>RT_</xsl:text>
+ <xsl:value-of select="@resource"/>
+ <xsl:text>,&#xa;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/fasttokens.xsl b/writerfilter/source/ooxml/fasttokens.xsl
new file mode 100644
index 000000000000..4014df0eec91
--- /dev/null
+++ b/writerfilter/source/ooxml/fasttokens.xsl
@@ -0,0 +1,113 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <xsl:template name="fasttokens">
+ <xsl:text>
+typedef sal_Int32 Token_t;
+ </xsl:text>
+ <xsl:for-each select="/model/fasttoken">
+ <xsl:text>
+const Token_t OOXML_</xsl:text>
+<xsl:value-of select="translate(., '-', '_')"/>
+<xsl:text> = </xsl:text>
+<xsl:value-of select="position() - 1"/>
+<xsl:text>;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>
+const Token_t OOXML_FAST_TOKENS_END =</xsl:text>
+<xsl:value-of select="count(/model/fasttoken)"/>
+<xsl:text>;&#xa;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <out xml:space="preserve">
+ <xsl:call-template name="licenseheader"/>
+ <xsl:text>
+#ifndef INCLUDED_OOXML_FAST_TOKENS_HXX
+#define INCLUDED_OOXML_FAST_TOKENS_HXX
+
+#include &lt;map&gt;
+#include &lt;vector&gt;
+#include &lt;boost/shared_ptr.hpp&gt;
+#include &lt;string&gt;
+
+#include &lt;resourcemodel/WW8ResourceModel.hxx&gt;
+
+namespace writerfilter {
+namespace ooxml {
+using namespace ::std;
+using namespace ::com::sun::star;
+</xsl:text>
+<xsl:call-template name="fasttokens"/>
+<xsl:text>
+string fastTokenToId(sal_uInt32 nToken);
+
+static const sal_uInt32 F_Attribute = 1U &lt;&lt; 31;
+
+}}
+#endif //INCLUDED_OOXML_FAST_TOKENS_HXX&#xa;</xsl:text></out></xsl:template>
+
+ <xsl:template match="*"/>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/gperffasttokenhandler.xsl b/writerfilter/source/ooxml/gperffasttokenhandler.xsl
new file mode 100644
index 000000000000..d14db0486b5d
--- /dev/null
+++ b/writerfilter/source/ooxml/gperffasttokenhandler.xsl
@@ -0,0 +1,96 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:UML = 'org.omg.xmi.namespace.UML'
+ exclude-result-prefixes = "xalan"
+ xml:space="default">
+ <xsl:output method="text" />
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <!--
+ Generates input for gperf to genreate hash map for OOXMLFastTokenHandler
+ -->
+ <xsl:template name="gperfinputfasttokenhandler">
+ <xsl:text>
+%{
+#include "OOXMLFastTokens.hxx"
+
+namespace writerfilter { namespace ooxml { namespace tokenmap {
+%}
+struct token { const char * name; Token_t nToken; };
+%%</xsl:text>
+ <xsl:for-each select=".//rng:element|.//rng:attribute">
+ <xsl:if test="generate-id(.) = generate-id(key('same-token-name', @localname)[1])">
+ <xsl:text>&#xa;</xsl:text>
+ <xsl:value-of select="@localname"/>
+ <xsl:text>, </xsl:text>
+ <xsl:call-template name="fastlocalname"/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+%%&#xa;</xsl:text>
+}}}&#xa;</xsl:template>
+
+ <xsl:template match="/">
+ <xsl:call-template name="gperfinputfasttokenhandler"/>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/makefile.mk b/writerfilter/source/ooxml/makefile.mk
new file mode 100644
index 000000000000..c6a40b4cc5d1
--- /dev/null
+++ b/writerfilter/source/ooxml/makefile.mk
@@ -0,0 +1,256 @@
+#************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+# ***********************************************************************/
+
+PRJ=..$/..
+PRJNAME=writerfilter
+TARGET=ooxml
+#LIBTARGET=NO
+#USE_DEFFILE=TRUE
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/inc$/writerfilter.mk
+
+#CFLAGS+=-DISOLATION_AWARE_ENABLED -DWIN32_LEAN_AND_MEAN -DXML_UNICODE -D_NTSDK -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0501
+#CFLAGS+=-wd4710 -wd4711 -wd4514 -wd4619 -wd4217 -wd4820
+
+NAMESPACES= \
+ wml \
+ dml-stylesheet \
+ dml-styleDefaults \
+ dml-shape3DLighting \
+ dml-shape3DScene \
+ dml-shape3DStyles \
+ dml-shape3DCamera \
+ dml-baseStylesheet \
+ dml-textCharacter \
+ dml-shapeEffects \
+ dml-shapeLineProperties \
+ dml-shapeProperties \
+ dml-baseTypes \
+ dml-documentProperties \
+ dml-graphicalObject \
+ dml-shapeGeometry \
+ dml-wordprocessingDrawing \
+ sml-customXmlMappings \
+ shared-math \
+ shared-relationshipReference \
+ dml-chartDrawing \
+ vml-main \
+ vml-officeDrawing \
+ vml-wordprocessingDrawing
+
+# --- Files --------------------------------------------------------
+
+SLOFACTORIESNAMESPACES= \
+ $(SLO)$/OOXMLFactory_{$(NAMESPACES)}.obj
+
+SLOFILES= \
+ $(SLOFACTORIESNAMESPACES) \
+ $(SLOFASTNAMESPACES) \
+ $(SLO)$/OOXMLFactory_generated.obj \
+ $(SLO)$/OOXMLFactory.obj \
+ $(SLO)$/OOXMLBinaryObjectReference.obj\
+ $(SLO)$/OOXMLFactory_values.obj \
+ $(SLO)$/OOXMLPropertySetImpl.obj \
+ $(SLO)$/OOXMLParserState.obj \
+ $(SLO)$/Handler.obj \
+ $(SLO)$/OOXMLDocumentImpl.obj \
+ $(SLO)$/OOXMLStreamImpl.obj \
+ $(SLO)$/OOXMLFastDocumentHandler.obj \
+ $(SLO)$/OOXMLFastContextHandler.obj \
+ $(SLO)$/OOXMLFastTokenHandler.obj
+
+SHL1TARGET=$(TARGET)
+
+.IF "$(GUI)"=="UNX" || "$(GUI)"=="MAC"
+RESOURCEMODELLIB=-lresourcemodel
+.ELIF "$(GUI)"=="OS2"
+RESOURCEMODELLIB=$(LB)$/iresourcemodel.lib
+.ELIF "$(GUI)"=="WNT"
+.IF "$(COM)"=="GCC"
+RESOURCEMODELLIB=-lresourcemodel
+.ELSE
+RESOURCEMODELLIB=$(LB)$/iresourcemodel.lib
+.ENDIF
+.ENDIF
+
+SHL1STDLIBS=$(SALLIB)\
+ $(CPPULIB)\
+ $(CPPUHELPERLIB) \
+ $(COMPHELPERLIB) \
+ $(RESOURCEMODELLIB)
+SHL1IMPLIB=i$(SHL1TARGET)
+SHL1USE_EXPORTS=name
+
+SHL1OBJS=$(SLOFILES)
+
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+DEFLIB1NAME=$(TARGET)
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.PHONY : test
+
+test:
+ echo $(SLOFILES)
+
+OOXMLCXXOUTDIR=$(MISC)
+OOXMLHXXOUTDIR=$(INCCOM)/ooxml
+OOXMLHXXOUTDIRCREATED=$(OOXMLHXXOUTDIR)/created
+
+OOXMLFACTORYCXXS=$(OOXMLCXXOUTDIR)$/OOXMLFactory_{$(NAMESPACES)}.cxx
+OOXMLFACTORYHXXS=$(OOXMLHXXOUTDIR)$/OOXMLFactory_{$(NAMESPACES)}.hxx
+
+OOXMLMODEL=model.xml
+OOXMLPREPROCESSXSL=modelpreprocess.xsl
+OOXMLFACTORYTOOLSXSL=factorytools.xsl
+OOXMLRESORUCETOKENSXSL=resourcestokens.xsl
+OOXMLFASTTOKENSXSL=fasttokens.xsl
+OOXMLRESOURCESIMPLXSL=resourcesimpl.xsl
+OOXMLNAMESPACEIDSXSL=namespaceids.xsl
+OOXMLFACTORYVALUESXSL=factory_values.xsl
+OOXMLFACTORYVALUESIMPLXSL=factoryimpl_values.xsl
+OOXMLRESOURCEIDSXSL=resourceids.xsl
+OOXMLGPERFFASTTOKENXSL=gperffasttokenhandler.xsl
+
+OOXMLRESOURCEIDSHXX=$(OOXMLHXXOUTDIR)$/resourceids.hxx
+
+TOKENXML=$(OOXMLCXXOUTDIR)$/token.xml
+TOKENXMLTMP=$(OOXMLCXXOUTDIR)$/token.tmp
+
+OOXMLFACTORYGENERATEDHXX=$(OOXMLHXXOUTDIR)$/OOXMLFactory_generated.hxx
+OOXMLFACTORYGENERATEDCXX=$(OOXMLCXXOUTDIR)$/OOXMLFactory_generated.cxx
+OOXMLFASTTOKENSHXX=$(OOXMLHXXOUTDIR)$/OOXMLFastTokens.hxx
+OOXMLNAMESPACEIDSHXX=$(OOXMLHXXOUTDIR)$/OOXMLnamespaceids.hxx
+OOXMLFACTORYVALUESHXX=$(OOXMLCXXOUTDIR)$/OOXMLFactory_values.hxx
+OOXMLFACTORYVALUESCXX=$(OOXMLCXXOUTDIR)$/OOXMLFactory_values.cxx
+GPERFFASTTOKENHXX=$(OOXMLHXXOUTDIR)$/gperffasttoken.hxx
+MODELPROCESSED=$(MISC)$/model_preprocessed.xml
+
+OOXMLGENHEADERS= \
+ $(OOXMLFACTORYGENERATEDHXX) \
+ $(OOXMLFACTORYHXXS) \
+ $(OOXMLFASTTOKENSHXX) \
+ $(OOXMLFACTORYVALUESHXX) \
+ $(GPERFFASTTOKENHXX) \
+ $(OOXMLRESOURCEIDSHXX) \
+ $(OOXMLNAMESPACEIDSHXX)
+
+GENERATEDFILES= \
+ $(OOXMLGENHEADERS) \
+ $(OOXMLFACTORYGENERATEDCXX) \
+ $(OOXMLFACTORYCXXS) \
+ $(OOXMLFACTORYVALUESCXX) \
+ $(TOKENXMLTMP) \
+ $(TOKENXML)
+
+$(TOKENXMLTMP): $(SOLARVER)$/$(INPATH)$/inc$(UPDMINOREXT)$/oox$/token.txt
+ @$(TYPE) $(SOLARVER)$/$(INPATH)$/inc$(UPDMINOREXT)$/oox$/token.txt | $(SED) "s#\(.*\)#<fasttoken>\1</fasttoken>#" > $@
+
+$(TOKENXML): tokenxmlheader $(TOKENXMLTMP) tokenxmlfooter
+ @$(TYPE) tokenxmlheader $(TOKENXMLTMP) tokenxmlfooter > $@
+
+$(OOXMLHXXOUTDIRCREATED):
+ $(MKDIRHIER) $(OOXMLHXXOUTDIR)
+ @$(TOUCH) $@
+
+$(OOXMLGENHEADERS): $(OOXMLHXXOUTDIRCREATED)
+
+$(OOXMLFASTTOKENSHXX): $(OOXMLFASTTOKENSXSL) $(TOKENXML)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLFASTTOKENSXSL) $(TOKENXML) > $@
+
+$(OOXMLFACTORYGENERATEDHXX): factoryinc.xsl
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $< $(MODELPROCESSED) > $@
+
+$(OOXMLFACTORYGENERATEDCXX): factoryimpl.xsl
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $< $(MODELPROCESSED) > $@
+
+$(OOXMLFACTORYGENERATEDCXX): $(MODELPROCESSED)
+
+$(OOXMLFACTORYGENERATEDHXX): $(MODELPROCESSED)
+
+$(OOXMLFACTORYCXXS): $(MODELPROCESSED)
+
+$(OOXMLFACTORYHXXS): $(MODELPROCESSED)
+
+$(OOXMLCXXOUTDIR)$/OOXMLFactory%.cxx: factoryimpl_ns.xsl
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) --stringparam file $@ $< $(MODELPROCESSED) > $@
+
+$(OOXMLHXXOUTDIR)$/OOXMLFactory%.hxx: factory_ns.xsl
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) --stringparam file $@ $< $(MODELPROCESSED) > $@
+
+$(OOXMLFACTORYVALUESHXX): $(OOXMLFACTORYVALUESXSL) $(MODELPROCESSED)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLFACTORYVALUESXSL) $(MODELPROCESSED) > $@
+
+$(OOXMLFACTORYVALUESCXX): $(OOXMLFACTORYVALUESIMPLXSL) $(MODELPROCESSED)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLFACTORYVALUESIMPLXSL) $(MODELPROCESSED) > $@
+
+$(OOXMLRESOURCEIDSHXX): $(OOXMLHXXOUTDIRCREATED) $(OOXMLRESOURCEIDSXSL) \
+ $(MODELPROCESSED)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLRESOURCEIDSXSL) $(MODELPROCESSED) > $@
+
+$(OOXMLNAMESPACEIDSHXX): $(OOXMLHXXOUTDIRCREATED) $(OOXMLNAMESPACEIDSXSL) \
+ $(MODELPROCESSED)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLNAMESPACEIDSXSL) $(MODELPROCESSED) > $@
+
+$(GPERFFASTTOKENHXX): $(OOXMLGPERFFASTTOKENXSL) $(MODELPROCESSED)
+ @echo "Making: " $(@:f)
+ $(COMMAND_ECHO)$(XSLTPROC) $(OOXMLGPERFFASTTOKENXSL) $(MODELPROCESSED) | tr -d '\r' | gperf -I -t -E -S1 -c -G -LC++ > $@
+
+$(SLOFACTORIESNAMESPACES): $(OOXMLFACTORYSCXXS) $(OOXMLGENHEADERS)
+
+$(GENERATEDFILES): $(OOXMLFACTORYTOOLSXSL)
+
+$(SLOFILES): $(OOXMLGENHEADERS)
+
+$(SLO)/OOXMLFactory_values.obj: $(OOXMLFACTORYVALUESCXX) $(OOXMLFACTORYVALUESHXX)
+
+$(SLO)$/OOXMLFactory_generated.obj: $(OOXMLFACTORYGENERATEDCXX) $(OOXMLGENHEADERS)
+
+.PHONY: genclean genmake genheaders
+
+genclean:
+ rm -f $(GENERATEDFILES)
+
+genmake: $(GENERATEDFILES)
+
+genheaders: $(GENHEADERS)
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
new file mode 100644
index 000000000000..b7046a495bd8
--- /dev/null
+++ b/writerfilter/source/ooxml/model.xml
@@ -0,0 +1,23466 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<model xmlns:rng="http://relaxng.org/ns/structure/1.0">
+ <namespace-alias name="http://www.w3.org/XML/1998/namespace" alias="xml" id="XML"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/officeDocument/2006/relationships" alias="relationships" id="RELATIONSHIPS"/>
+ <namespace-alias name="urn:schemas-microsoft-com:office:office" alias="office" id="OFFICE"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" alias="theme" id="THEME"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" alias="wordprocessingDrawing" id="DOC_DRAWINGML"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/drawingml/2006/main" alias="drawingml" id="DRAWINGML"/>
+ <namespace-alias name="urn:schemas-microsoft-com:vml" alias="vml" id="VML"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/drawingml/2006/picture" alias="picture" id="PICTURE"/>
+ <namespace-alias name="urn:schemas-microsoft-com:office:word" alias="vml_wordprocessingDrawing" id="VML_DOC"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/wordprocessingml/2006/main" alias="wordprocessingml" id="DOC"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/officeDocument/2006/math" alias="math" id="MATH"/>
+ <namespace-alias name="http://schemas.openxmlformats.org/schemaLibrary/2006/main" alias="schemaLibrary" id="SML"/>
+ <namespace-alias name="http://sprm" alias="sprm" id="SPRM"/>
+ <token tokenid="ooxml:shape"/>
+ <token tokenid="ooxml:token"/>
+ <token tokenid="ooxml:inputstream"/>
+ <token tokenid="ooxml:trackchange"/>
+ <token tokenid="ooxml:object"/>
+ <token tokenid="ooxml:tblStart"/>
+ <token tokenid="ooxml:ffdata"/>
+ <namespace name="dml-stylesheet" url="http://schemas.openxmlformats.org/drawingml/2006/main" file="dml-stylesheet.rng">
+ <start name="theme"/>
+ <start name="themeOverride"/>
+ <start name="themeManager"/>
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseStylesheet.rng"/>
+ <include href="dml-styleDefaults.rng"/>
+ <!-- start = theme | themeOverride | themeManager -->
+ <define name="CT_EmptyElement">
+ <empty/>
+ </define>
+ <define name="CT_ColorMapping">
+ <optional>
+ <element name="extLst">
+ <ref name="CT_OfficeArtExtensionList"/>
+ </element>
+ </optional>
+ <attribute name="bg1">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Background 1</xs:documentation>
+ </attribute>
+ <attribute name="tx1">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Text 1</xs:documentation>
+ </attribute>
+ <attribute name="bg2">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Background 2</xs:documentation>
+ </attribute>
+ <attribute name="tx2">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Text 2</xs:documentation>
+ </attribute>
+ <attribute name="accent1">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 1</xs:documentation>
+ </attribute>
+ <attribute name="accent2">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 2</xs:documentation>
+ </attribute>
+ <attribute name="accent3">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 3</xs:documentation>
+ </attribute>
+ <attribute name="accent4">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 4</xs:documentation>
+ </attribute>
+ <attribute name="accent5">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 5</xs:documentation>
+ </attribute>
+ <attribute name="accent6">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Accent 6</xs:documentation>
+ </attribute>
+ <attribute name="hlink">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Hyperlink</xs:documentation>
+ </attribute>
+ <attribute name="folHlink">
+ <ref name="ST_ColorSchemeIndex"/>
+ <xs:documentation>Followed Hyperlink</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ColorMappingOverride">
+ <choice>
+ <element name="masterClrMapping">
+ <ref name="CT_EmptyElement"/>
+ </element>
+ <element name="overrideClrMapping">
+ <ref name="CT_ColorMapping"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_ColorSchemeAndMapping">
+ <element name="clrScheme">
+ <ref name="CT_ColorScheme"/>
+ </element>
+ <optional>
+ <element name="clrMap">
+ <ref name="CT_ColorMapping"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_ColorSchemeList">
+ <zeroOrMore>
+ <element name="extraClrScheme">
+ <ref name="CT_ColorSchemeAndMapping"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_OfficeStyleSheet">
+ <group>
+ <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">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </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">
+ <ref name="CT_BaseStyles"/>
+ </element>
+ <element name="clrMap">
+ <ref name="CT_ColorMapping"/>
+ </element>
+ </define>
+ <define name="theme">
+ <element name="theme">
+ <ref name="CT_OfficeStyleSheet"/>
+ </element>
+ </define>
+ <define name="themeOverride">
+ <element name="themeOverride">
+ <ref name="CT_BaseStylesOverride"/>
+ </element>
+ </define>
+ <define name="themeManager">
+ <element name="themeManager">
+ <ref name="CT_EmptyElement"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="CT_OfficeStyleSheet" resource="Table" tokenid="ooxml:THEMETABLE"/>
+ <resource name="theme" resource="Stream">
+ <element name="theme" tokenid="ooxml:THEMETABLE"/>
+ </resource>
+ <resource name="themeOverride" resource="Stream"/>
+ <resource name="themeManager" resource="Stream"/>
+ </namespace>
+ <namespace name="dml-styleDefaults" file="dml-styleDefaults">
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shapeProperties.rng"/>
+ <include href="dml-shapeStyle.rng"/>
+ <include href="dml-text.rng"/>
+ <define name="CT_DefaultShapeDefinition">
+ <element name="spPr">
+ <ref name="CT_ShapeProperties"/>
+ </element>
+ <element name="bodyPr">
+ <ref name="CT_TextBodyProperties"/>
+ </element>
+ <element name="lstStyle">
+ <ref name="CT_TextListStyle"/>
+ </element>
+ <optional>
+ <element name="style">
+ <ref name="CT_ShapeStyle"/>
+ </element>
+ </optional>
+ <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>
+ <namespace name="dml-shape3DLighting" file="dml-shape3DLighting.rng">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <define name="ST_LightRigDirection">
+ <list>
+ <xs:documentation>Light Rig Direction</xs:documentation>
+ <choice>
+ <!-- Top Left -->
+ <value>tl</value>
+ <!-- Top -->
+ <value>t</value>
+ <!-- Top Right -->
+ <value>tr</value>
+ <!-- Left -->
+ <value>l</value>
+ <!-- Right -->
+ <value>r</value>
+ <!-- Bottom Left -->
+ <value>bl</value>
+ <!-- Bottom -->
+ <value>b</value>
+ <!-- Bottom Right -->
+ <value>br</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_LightRigType">
+ <list>
+ <xs:documentation>Light Rig Type</xs:documentation>
+ <choice>
+ <!-- Legacy Flat 1 -->
+ <value>legacyFlat1</value>
+ <!-- Legacy Flat 2 -->
+ <value>legacyFlat2</value>
+ <!-- Legacy Flat 3 -->
+ <value>legacyFlat3</value>
+ <!-- Legacy Flat 4 -->
+ <value>legacyFlat4</value>
+ <!-- Legacy Normal 1 -->
+ <value>legacyNormal1</value>
+ <!-- Legacy Normal 2 -->
+ <value>legacyNormal2</value>
+ <!-- Legacy Normal 3 -->
+ <value>legacyNormal3</value>
+ <!-- Legacy Normal 4 -->
+ <value>legacyNormal4</value>
+ <!-- Legacy Harsh 1 -->
+ <value>legacyHarsh1</value>
+ <!-- Legacy Harsh 2 -->
+ <value>legacyHarsh2</value>
+ <!-- Legacy Harsh 3 -->
+ <value>legacyHarsh3</value>
+ <!-- Legacy Harsh 4 -->
+ <value>legacyHarsh4</value>
+ <!-- Three Point -->
+ <value>threePt</value>
+ <!-- Light Rig Enum ( Balanced ) -->
+ <value>balanced</value>
+ <!-- Soft -->
+ <value>soft</value>
+ <!-- Harsh -->
+ <value>harsh</value>
+ <!-- Flood -->
+ <value>flood</value>
+ <!-- Contrasting -->
+ <value>contrasting</value>
+ <!-- Morning -->
+ <value>morning</value>
+ <!-- Sunrise -->
+ <value>sunrise</value>
+ <!-- Sunset -->
+ <value>sunset</value>
+ <!-- Chilly -->
+ <value>chilly</value>
+ <!-- Freezing -->
+ <value>freezing</value>
+ <!-- Flat -->
+ <value>flat</value>
+ <!-- Two Point -->
+ <value>twoPt</value>
+ <!-- Glow -->
+ <value>glow</value>
+ <!-- Bright Room -->
+ <value>brightRoom</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_LightRig">
+ <optional>
+ <element name="rot">
+ <ref name="CT_SphereCoords"/>
+ </element>
+ </optional>
+ <attribute name="rig">
+ <ref name="ST_LightRigType"/>
+ <xs:documentation>Rig Preset</xs:documentation>
+ </attribute>
+ <attribute name="dir">
+ <ref name="ST_LightRigDirection"/>
+ <xs:documentation>Direction</xs:documentation>
+ </attribute>
+ </define>
+ </grammar>
+ <resource name="ST_LightRigDirection" resource="List" generated="yes">
+ <value name="tl" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_tl">tl</value>
+ <value name="t" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_t">t</value>
+ <value name="tr" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_tr">tr</value>
+ <value name="l" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_l">l</value>
+ <value name="r" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_r">r</value>
+ <value name="bl" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_bl">bl</value>
+ <value name="b" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_b">b</value>
+ <value name="br" tokenid="ooxml:Value_drawingml_ST_LightRigDirection_br">br</value>
+ </resource>
+ <resource name="ST_LightRigType" resource="List" generated="yes">
+ <value name="legacyFlat1" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyFlat1">legacyFlat1</value>
+ <value name="legacyFlat2" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyFlat2">legacyFlat2</value>
+ <value name="legacyFlat3" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyFlat3">legacyFlat3</value>
+ <value name="legacyFlat4" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyFlat4">legacyFlat4</value>
+ <value name="legacyNormal1" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyNormal1">legacyNormal1</value>
+ <value name="legacyNormal2" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyNormal2">legacyNormal2</value>
+ <value name="legacyNormal3" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyNormal3">legacyNormal3</value>
+ <value name="legacyNormal4" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyNormal4">legacyNormal4</value>
+ <value name="legacyHarsh1" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyHarsh1">legacyHarsh1</value>
+ <value name="legacyHarsh2" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyHarsh2">legacyHarsh2</value>
+ <value name="legacyHarsh3" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyHarsh3">legacyHarsh3</value>
+ <value name="legacyHarsh4" tokenid="ooxml:Value_drawingml_ST_LightRigType_legacyHarsh4">legacyHarsh4</value>
+ <value name="threePt" tokenid="ooxml:Value_drawingml_ST_LightRigType_threePt">threePt</value>
+ <value name="balanced" tokenid="ooxml:Value_drawingml_ST_LightRigType_balanced">balanced</value>
+ <value name="soft" tokenid="ooxml:Value_drawingml_ST_LightRigType_soft">soft</value>
+ <value name="harsh" tokenid="ooxml:Value_drawingml_ST_LightRigType_harsh">harsh</value>
+ <value name="flood" tokenid="ooxml:Value_drawingml_ST_LightRigType_flood">flood</value>
+ <value name="contrasting" tokenid="ooxml:Value_drawingml_ST_LightRigType_contrasting">contrasting</value>
+ <value name="morning" tokenid="ooxml:Value_drawingml_ST_LightRigType_morning">morning</value>
+ <value name="sunrise" tokenid="ooxml:Value_drawingml_ST_LightRigType_sunrise">sunrise</value>
+ <value name="sunset" tokenid="ooxml:Value_drawingml_ST_LightRigType_sunset">sunset</value>
+ <value name="chilly" tokenid="ooxml:Value_drawingml_ST_LightRigType_chilly">chilly</value>
+ <value name="freezing" tokenid="ooxml:Value_drawingml_ST_LightRigType_freezing">freezing</value>
+ <value name="flat" tokenid="ooxml:Value_drawingml_ST_LightRigType_flat">flat</value>
+ <value name="twoPt" tokenid="ooxml:Value_drawingml_ST_LightRigType_twoPt">twoPt</value>
+ <value name="glow" tokenid="ooxml:Value_drawingml_ST_LightRigType_glow">glow</value>
+ <value name="brightRoom" tokenid="ooxml:Value_drawingml_ST_LightRigType_brightRoom">brightRoom</value>
+ </resource>
+ </namespace>
+ <namespace name="dml-shape3DScene" file="dml-shape3DScene.rng">
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shape3DCamera.rng"/>
+ <include href="dml-shape3DLighting.rng"/>
+ <include href="dml-shape3DScenePlane.rng"/>
+ <define name="CT_Scene3D">
+ <element name="camera">
+ <ref name="CT_Camera"/>
+ </element>
+ <element name="lightRig">
+ <ref name="CT_LightRig"/>
+ </element>
+ <optional>
+ <element name="backdrop">
+ <ref name="CT_Backdrop"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="extLst">
+ <ref name="CT_OfficeArtExtensionList"/>
+ </element>
+ </optional>
+ </define>
+ </grammar>
+ </namespace>
+ <namespace name="dml-shape3DStyles" file="dml-shape3DStyles.rng">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shapeGeometry.rng"/>
+ <define name="ST_BevelPresetType">
+ <list>
+ <xs:documentation>Bevel Presets</xs:documentation>
+ <choice>
+ <!-- Relaxed Inset -->
+ <value>relaxedInset</value>
+ <!-- Circle -->
+ <value>circle</value>
+ <!-- Slope -->
+ <value>slope</value>
+ <!-- Cross -->
+ <value>cross</value>
+ <!-- Angle -->
+ <value>angle</value>
+ <!-- Soft Round -->
+ <value>softRound</value>
+ <!-- Convex -->
+ <value>convex</value>
+ <!-- Cool Slant -->
+ <value>coolSlant</value>
+ <!-- Divot -->
+ <value>divot</value>
+ <!-- Riblet -->
+ <value>riblet</value>
+ <!-- Hard Edge -->
+ <value>hardEdge</value>
+ <!-- Art Deco -->
+ <value>artDeco</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Bevel">
+ <optional>
+ <attribute name="w">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="h">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Height</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="prst">
+ <ref name="ST_BevelPresetType"/>
+ <xs:documentation>Preset Bevel</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_PresetMaterialType">
+ <list>
+ <xs:documentation>Preset Material Type</xs:documentation>
+ <choice>
+ <!-- Legacy Matte -->
+ <value>legacyMatte</value>
+ <!-- Legacy Plastic -->
+ <value>legacyPlastic</value>
+ <!-- Legacy Metal -->
+ <value>legacyMetal</value>
+ <!-- Legacy Wireframe -->
+ <value>legacyWireframe</value>
+ <!-- Matte -->
+ <value>matte</value>
+ <!-- Plastic -->
+ <value>plastic</value>
+ <!-- Metal -->
+ <value>metal</value>
+ <!-- Warm Matte -->
+ <value>warmMatte</value>
+ <!-- Translucent Powder -->
+ <value>translucentPowder</value>
+ <!-- Powder -->
+ <value>powder</value>
+ <!-- Dark Edge -->
+ <value>dkEdge</value>
+ <!-- Soft Edge -->
+ <value>softEdge</value>
+ <!-- Clear -->
+ <value>clear</value>
+ <!-- Flat -->
+ <value>flat</value>
+ <!-- Soft Metal -->
+ <value>softmetal</value>
+ </choice>
+ </list>
+ </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"/>
+ <xs:documentation>Shape Depth</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="extrusionH">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Extrusion Height</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contourW">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Contour Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="prstMaterial">
+ <ref name="ST_PresetMaterialType"/>
+ <xs:documentation>Preset Material Type</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_FlatText">
+ <optional>
+ <attribute name="z">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Z Coordinate</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_Text3D">
+ <choice>
+ <element name="sp3d">
+ <ref name="CT_Shape3D"/>
+ </element>
+ <element name="flatTx">
+ <ref name="CT_FlatText"/>
+ </element>
+ </choice>
+ </define>
+ </grammar>
+ <resource name="ST_BevelPresetType" resource="List" generated="yes">
+ <value name="relaxedInset" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_relaxedInset">relaxedInset</value>
+ <value name="circle" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_circle">circle</value>
+ <value name="slope" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_slope">slope</value>
+ <value name="cross" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_cross">cross</value>
+ <value name="angle" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_angle">angle</value>
+ <value name="softRound" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_softRound">softRound</value>
+ <value name="convex" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_convex">convex</value>
+ <value name="coolSlant" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_coolSlant">coolSlant</value>
+ <value name="divot" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_divot">divot</value>
+ <value name="riblet" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_riblet">riblet</value>
+ <value name="hardEdge" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_hardEdge">hardEdge</value>
+ <value name="artDeco" tokenid="ooxml:Value_drawingml_ST_BevelPresetType_artDeco">artDeco</value>
+ </resource>
+ <resource name="ST_PresetMaterialType" resource="List" generated="yes">
+ <value name="legacyMatte" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_legacyMatte">legacyMatte</value>
+ <value name="legacyPlastic" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_legacyPlastic">legacyPlastic</value>
+ <value name="legacyMetal" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_legacyMetal">legacyMetal</value>
+ <value name="legacyWireframe" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_legacyWireframe">legacyWireframe</value>
+ <value name="matte" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_matte">matte</value>
+ <value name="plastic" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_plastic">plastic</value>
+ <value name="metal" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_metal">metal</value>
+ <value name="warmMatte" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_warmMatte">warmMatte</value>
+ <value name="translucentPowder" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_translucentPowder">translucentPowder</value>
+ <value name="powder" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_powder">powder</value>
+ <value name="dkEdge" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_dkEdge">dkEdge</value>
+ <value name="softEdge" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_softEdge">softEdge</value>
+ <value name="clear" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_clear">clear</value>
+ <value name="flat" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_flat">flat</value>
+ <value name="softmetal" tokenid="ooxml:Value_drawingml_ST_PresetMaterialType_softmetal">softmetal</value>
+ </resource>
+ </namespace>
+ <namespace name="dml-shape3DCamera" file="dml-shape3DCamera.rng">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <define name="ST_PresetCameraType">
+ <list>
+ <xs:documentation>Preset Camera Type</xs:documentation>
+ <choice>
+ <!-- Legacy Oblique Top Left -->
+ <value>legacyObliqueTopLeft</value>
+ <!-- Legacy Oblique Top -->
+ <value>legacyObliqueTop</value>
+ <!-- Legacy Oblique Top Right -->
+ <value>legacyObliqueTopRight</value>
+ <!-- Legacy Oblique Left -->
+ <value>legacyObliqueLeft</value>
+ <!-- Legacy Oblique Front -->
+ <value>legacyObliqueFront</value>
+ <!-- Legacy Oblique Right -->
+ <value>legacyObliqueRight</value>
+ <!-- Legacy Oblique Bottom Left -->
+ <value>legacyObliqueBottomLeft</value>
+ <!-- Legacy Oblique Bottom -->
+ <value>legacyObliqueBottom</value>
+ <!-- Legacy Oblique Bottom Right -->
+ <value>legacyObliqueBottomRight</value>
+ <!-- Legacy Perspective Top Left -->
+ <value>legacyPerspectiveTopLeft</value>
+ <!-- Legacy Perspective Top -->
+ <value>legacyPerspectiveTop</value>
+ <!-- Legacy Perspective Top Right -->
+ <value>legacyPerspectiveTopRight</value>
+ <!-- Legacy Perspective Left -->
+ <value>legacyPerspectiveLeft</value>
+ <!-- Legacy Perspective Front -->
+ <value>legacyPerspectiveFront</value>
+ <!-- Legacy Perspective Right -->
+ <value>legacyPerspectiveRight</value>
+ <!-- Legacy Perspective Bottom Left -->
+ <value>legacyPerspectiveBottomLeft</value>
+ <!-- Legacy Perspective Bottom -->
+ <value>legacyPerspectiveBottom</value>
+ <!-- Legacy Perspective Bottom Right -->
+ <value>legacyPerspectiveBottomRight</value>
+ <!-- Orthographic Front -->
+ <value>orthographicFront</value>
+ <!-- Isometric Top Up -->
+ <value>isometricTopUp</value>
+ <!-- Isometric Top Down -->
+ <value>isometricTopDown</value>
+ <!-- Isometric Bottom Up -->
+ <value>isometricBottomUp</value>
+ <!-- Isometric Bottom Down -->
+ <value>isometricBottomDown</value>
+ <!-- Isometric Left Up -->
+ <value>isometricLeftUp</value>
+ <!-- Isometric Left Down -->
+ <value>isometricLeftDown</value>
+ <!-- Isometric Right Up -->
+ <value>isometricRightUp</value>
+ <!-- Isometric Right Down -->
+ <value>isometricRightDown</value>
+ <!-- Isometric Off Axis 1 Left -->
+ <value>isometricOffAxis1Left</value>
+ <!-- Isometric Off Axis 1 Right -->
+ <value>isometricOffAxis1Right</value>
+ <!-- Isometric Off Axis 1 Top -->
+ <value>isometricOffAxis1Top</value>
+ <!-- Isometric Off Axis 2 Left -->
+ <value>isometricOffAxis2Left</value>
+ <!-- Isometric Off Axis 2 Right -->
+ <value>isometricOffAxis2Right</value>
+ <!-- Isometric Off Axis 2 Top -->
+ <value>isometricOffAxis2Top</value>
+ <!-- Isometric Off Axis 3 Left -->
+ <value>isometricOffAxis3Left</value>
+ <!-- Isometric Off Axis 3 Right -->
+ <value>isometricOffAxis3Right</value>
+ <!-- Isometric Off Axis 3 Bottom -->
+ <value>isometricOffAxis3Bottom</value>
+ <!-- Isometric Off Axis 4 Left -->
+ <value>isometricOffAxis4Left</value>
+ <!-- Isometric Off Axis 4 Right -->
+ <value>isometricOffAxis4Right</value>
+ <!-- Isometric Off Axis 4 Bottom -->
+ <value>isometricOffAxis4Bottom</value>
+ <!-- Oblique Top Left -->
+ <value>obliqueTopLeft</value>
+ <!-- Oblique Top -->
+ <value>obliqueTop</value>
+ <!-- Oblique Top Right -->
+ <value>obliqueTopRight</value>
+ <!-- Oblique Left -->
+ <value>obliqueLeft</value>
+ <!-- Oblique Right -->
+ <value>obliqueRight</value>
+ <!-- Oblique Bottom Left -->
+ <value>obliqueBottomLeft</value>
+ <!-- Oblique Bottom -->
+ <value>obliqueBottom</value>
+ <!-- Oblique Bottom Right -->
+ <value>obliqueBottomRight</value>
+ <!-- Perspective Front -->
+ <value>perspectiveFront</value>
+ <!-- Perspective Left -->
+ <value>perspectiveLeft</value>
+ <!-- Perspective Right -->
+ <value>perspectiveRight</value>
+ <!-- Orthographic Above -->
+ <value>perspectiveAbove</value>
+ <!-- Perspective Below -->
+ <value>perspectiveBelow</value>
+ <!-- Perspective Above Left Facing -->
+ <value>perspectiveAboveLeftFacing</value>
+ <!-- Perspective Above Right Facing -->
+ <value>perspectiveAboveRightFacing</value>
+ <!-- Perspective Contrasting Left Facing -->
+ <value>perspectiveContrastingLeftFacing</value>
+ <!-- Perspective Contrasting Right Facing -->
+ <value>perspectiveContrastingRightFacing</value>
+ <!-- Perspective Heroic Left Facing -->
+ <value>perspectiveHeroicLeftFacing</value>
+ <!-- Perspective Heroic Right Facing -->
+ <value>perspectiveHeroicRightFacing</value>
+ <!-- Perspective Heroic Extreme Left Facing -->
+ <value>perspectiveHeroicExtremeLeftFacing</value>
+ <!-- Perspective Heroic Extreme Right Facing -->
+ <value>perspectiveHeroicExtremeRightFacing</value>
+ <!-- Perspective Relaxed -->
+ <value>perspectiveRelaxed</value>
+ <!-- Perspective Relaxed Moderately -->
+ <value>perspectiveRelaxedModerately</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_FOVAngle">
+ <empty/>
+ </define>
+ <define name="CT_Camera">
+ <optional>
+ <element name="rot">
+ <ref name="CT_SphereCoords"/>
+ </element>
+ </optional>
+ <attribute name="prst">
+ <ref name="ST_PresetCameraType"/>
+ <xs:documentation>Preset Camera Type</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="fov">
+ <ref name="ST_FOVAngle"/>
+ <xs:documentation>Field of View</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zoom">
+ <ref name="ST_PositivePercentage"/>
+ <xs:documentation>Zoom</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ </grammar>
+ <resource name="ST_PresetCameraType" resource="List" generated="yes">
+ <value name="legacyObliqueTopLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueTopLeft">legacyObliqueTopLeft</value>
+ <value name="legacyObliqueTop" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueTop">legacyObliqueTop</value>
+ <value name="legacyObliqueTopRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueTopRight">legacyObliqueTopRight</value>
+ <value name="legacyObliqueLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueLeft">legacyObliqueLeft</value>
+ <value name="legacyObliqueFront" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueFront">legacyObliqueFront</value>
+ <value name="legacyObliqueRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueRight">legacyObliqueRight</value>
+ <value name="legacyObliqueBottomLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueBottomLeft">legacyObliqueBottomLeft</value>
+ <value name="legacyObliqueBottom" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueBottom">legacyObliqueBottom</value>
+ <value name="legacyObliqueBottomRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyObliqueBottomRight">legacyObliqueBottomRight</value>
+ <value name="legacyPerspectiveTopLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveTopLeft">legacyPerspectiveTopLeft</value>
+ <value name="legacyPerspectiveTop" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveTop">legacyPerspectiveTop</value>
+ <value name="legacyPerspectiveTopRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveTopRight">legacyPerspectiveTopRight</value>
+ <value name="legacyPerspectiveLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveLeft">legacyPerspectiveLeft</value>
+ <value name="legacyPerspectiveFront" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveFront">legacyPerspectiveFront</value>
+ <value name="legacyPerspectiveRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveRight">legacyPerspectiveRight</value>
+ <value name="legacyPerspectiveBottomLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveBottomLeft">legacyPerspectiveBottomLeft</value>
+ <value name="legacyPerspectiveBottom" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveBottom">legacyPerspectiveBottom</value>
+ <value name="legacyPerspectiveBottomRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_legacyPerspectiveBottomRight">legacyPerspectiveBottomRight</value>
+ <value name="orthographicFront" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_orthographicFront">orthographicFront</value>
+ <value name="isometricTopUp" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricTopUp">isometricTopUp</value>
+ <value name="isometricTopDown" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricTopDown">isometricTopDown</value>
+ <value name="isometricBottomUp" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricBottomUp">isometricBottomUp</value>
+ <value name="isometricBottomDown" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricBottomDown">isometricBottomDown</value>
+ <value name="isometricLeftUp" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricLeftUp">isometricLeftUp</value>
+ <value name="isometricLeftDown" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricLeftDown">isometricLeftDown</value>
+ <value name="isometricRightUp" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricRightUp">isometricRightUp</value>
+ <value name="isometricRightDown" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricRightDown">isometricRightDown</value>
+ <value name="isometricOffAxis1Left" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis1Left">isometricOffAxis1Left</value>
+ <value name="isometricOffAxis1Right" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis1Right">isometricOffAxis1Right</value>
+ <value name="isometricOffAxis1Top" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis1Top">isometricOffAxis1Top</value>
+ <value name="isometricOffAxis2Left" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis2Left">isometricOffAxis2Left</value>
+ <value name="isometricOffAxis2Right" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis2Right">isometricOffAxis2Right</value>
+ <value name="isometricOffAxis2Top" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis2Top">isometricOffAxis2Top</value>
+ <value name="isometricOffAxis3Left" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis3Left">isometricOffAxis3Left</value>
+ <value name="isometricOffAxis3Right" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis3Right">isometricOffAxis3Right</value>
+ <value name="isometricOffAxis3Bottom" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis3Bottom">isometricOffAxis3Bottom</value>
+ <value name="isometricOffAxis4Left" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis4Left">isometricOffAxis4Left</value>
+ <value name="isometricOffAxis4Right" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis4Right">isometricOffAxis4Right</value>
+ <value name="isometricOffAxis4Bottom" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_isometricOffAxis4Bottom">isometricOffAxis4Bottom</value>
+ <value name="obliqueTopLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueTopLeft">obliqueTopLeft</value>
+ <value name="obliqueTop" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueTop">obliqueTop</value>
+ <value name="obliqueTopRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueTopRight">obliqueTopRight</value>
+ <value name="obliqueLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueLeft">obliqueLeft</value>
+ <value name="obliqueRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueRight">obliqueRight</value>
+ <value name="obliqueBottomLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueBottomLeft">obliqueBottomLeft</value>
+ <value name="obliqueBottom" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueBottom">obliqueBottom</value>
+ <value name="obliqueBottomRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_obliqueBottomRight">obliqueBottomRight</value>
+ <value name="perspectiveFront" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveFront">perspectiveFront</value>
+ <value name="perspectiveLeft" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveLeft">perspectiveLeft</value>
+ <value name="perspectiveRight" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveRight">perspectiveRight</value>
+ <value name="perspectiveAbove" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveAbove">perspectiveAbove</value>
+ <value name="perspectiveBelow" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveBelow">perspectiveBelow</value>
+ <value name="perspectiveAboveLeftFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveAboveLeftFacing">perspectiveAboveLeftFacing</value>
+ <value name="perspectiveAboveRightFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveAboveRightFacing">perspectiveAboveRightFacing</value>
+ <value name="perspectiveContrastingLeftFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveContrastingLeftFacing">perspectiveContrastingLeftFacing</value>
+ <value name="perspectiveContrastingRightFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveContrastingRightFacing">perspectiveContrastingRightFacing</value>
+ <value name="perspectiveHeroicLeftFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveHeroicLeftFacing">perspectiveHeroicLeftFacing</value>
+ <value name="perspectiveHeroicRightFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveHeroicRightFacing">perspectiveHeroicRightFacing</value>
+ <value name="perspectiveHeroicExtremeLeftFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveHeroicExtremeLeftFacing">perspectiveHeroicExtremeLeftFacing</value>
+ <value name="perspectiveHeroicExtremeRightFacing" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveHeroicExtremeRightFacing">perspectiveHeroicExtremeRightFacing</value>
+ <value name="perspectiveRelaxed" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveRelaxed">perspectiveRelaxed</value>
+ <value name="perspectiveRelaxedModerately" tokenid="ooxml:Value_drawingml_ST_PresetCameraType_perspectiveRelaxedModerately">perspectiveRelaxedModerately</value>
+ </resource>
+ </namespace>
+ <namespace name="dml-baseStylesheet" file="dml-baseStylesheet.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <define name="ST_StyleMatrixColumnIndex">
+ <data type="unsignedInt">
+ <xs:documentation>Style Matrix Column Index</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_FontCollectionIndex">
+ <list>
+ <xs:documentation>Font Collection Index</xs:documentation>
+ <choice>
+ <!-- Major Font -->
+ <value>major</value>
+ <!-- Minor Font -->
+ <value>minor</value>
+ <!-- None -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ColorSchemeIndex">
+ <list>
+ <xs:documentation>Theme Color Reference</xs:documentation>
+ <choice>
+ <!-- Dark 1 -->
+ <value>dk1</value>
+ <!-- Light 1 -->
+ <value>lt1</value>
+ <!-- Dark 2 -->
+ <value>dk2</value>
+ <!-- Light 2 -->
+ <value>lt2</value>
+ <!-- Accent 1 -->
+ <value>accent1</value>
+ <!-- Accent 2 -->
+ <value>accent2</value>
+ <!-- Accent 3 -->
+ <value>accent3</value>
+ <!-- Accent 4 -->
+ <value>accent4</value>
+ <!-- Accent 5 -->
+ <value>accent5</value>
+ <!-- Accent 6 -->
+ <value>accent6</value>
+ <!-- Hyperlink -->
+ <value>hlink</value>
+ <!-- Followed Hyperlink -->
+ <value>folHlink</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_ColorScheme">
+ <group>
+ <element name="dk1">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="lt1">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="dk2">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="lt2">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent1">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent2">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent3">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent4">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent5">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="accent6">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="hlink">
+ <ref name="CT_Color"/>
+ </element>
+ <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">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomColor">
+ <ref name="EG_ColorChoice"/>
+ <optional>
+ <attribute name="name">
+ <data type="string">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_SupplementalFont">
+ <attribute name="script">
+ <data type="string">
+ <xs:documentation>Script</xs:documentation>
+ </data>
+ <xs:documentation>Script</xs:documentation>
+ </attribute>
+ <attribute name="typeface">
+ <ref name="ST_TextTypeface"/>
+ <xs:documentation>Typeface</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomColorList">
+ <zeroOrMore>
+ <element name="custClr">
+ <ref name="CT_CustomColor"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_FontCollection">
+ <element name="latin">
+ <ref name="CT_TextFont"/>
+ </element>
+ <element name="ea">
+ <ref name="CT_TextFont"/>
+ </element>
+ <element name="cs">
+ <ref name="CT_TextFont"/>
+ </element>
+ <zeroOrMore>
+ <element name="font">
+ <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>
+ <element name="majorFont">
+ <ref name="CT_FontCollection"/>
+ </element>
+ <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">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FillStyleList">
+ <oneOrMore>
+ <ref name="EG_FillProperties"/>
+ </oneOrMore>
+ </define>
+ <define name="CT_LineStyleList">
+ <oneOrMore>
+ <element name="ln">
+ <ref name="CT_LineProperties"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_EffectStyleList">
+ <oneOrMore>
+ <element name="effectStyle">
+ <ref name="CT_EffectStyleItem"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_BackgroundFillStyleList">
+ <oneOrMore>
+ <ref name="EG_FillProperties"/>
+ </oneOrMore>
+ </define>
+ <define name="CT_StyleMatrix">
+ <group>
+ <element name="fillStyleLst">
+ <ref name="CT_FillStyleList"/>
+ </element>
+ <element name="lnStyleLst">
+ <ref name="CT_LineStyleList"/>
+ </element>
+ <element name="effectStyleLst">
+ <ref name="CT_EffectStyleList"/>
+ </element>
+ <element name="bgFillStyleLst">
+ <ref name="CT_BackgroundFillStyleList"/>
+ </element>
+ </group>
+ <optional>
+ <attribute name="name">
+ <data type="string">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_BaseStyles">
+ <element name="clrScheme">
+ <ref name="CT_ColorScheme"/>
+ </element>
+ <element name="fontScheme">
+ <ref name="CT_FontScheme"/>
+ </element>
+ <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" generated="yes"/>
+ <resource name="ST_FontCollectionIndex" resource="List" generated="yes">
+ <value name="major" tokenid="ooxml:Value_drawingml_ST_FontCollectionIndex_major">major</value>
+ <value name="minor" tokenid="ooxml:Value_drawingml_ST_FontCollectionIndex_minor">minor</value>
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_FontCollectionIndex_none">none</value>
+ </resource>
+ <resource name="ST_ColorSchemeIndex" resource="List" generated="yes">
+ <value name="dk1" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_dk1">dk1</value>
+ <value name="lt1" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_lt1">lt1</value>
+ <value name="dk2" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_dk2">dk2</value>
+ <value name="lt2" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_lt2">lt2</value>
+ <value name="accent1" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent1">accent1</value>
+ <value name="accent2" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent2">accent2</value>
+ <value name="accent3" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent3">accent3</value>
+ <value name="accent4" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent4">accent4</value>
+ <value name="accent5" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent5">accent5</value>
+ <value name="accent6" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_accent6">accent6</value>
+ <value name="hlink" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_hlink">hlink</value>
+ <value name="folHlink" tokenid="ooxml:Value_drawingml_ST_ColorSchemeIndex_folHlink">folHlink</value>
+ </resource>
+ <resource name="CT_ColorScheme" resource="Properties">
+ <element name="dk1" tokenid="ooxml:CT_ColorScheme_dk1"/>
+ <element name="lt1" tokenid="ooxml:CT_ColorScheme_lt1"/>
+ <element name="dk2" tokenid="ooxml:CT_ColorScheme_dk2"/>
+ <element name="lt2" tokenid="ooxml:CT_ColorScheme_lt2"/>
+ <element name="accent1" tokenid="ooxml:CT_ColorScheme_accent1"/>
+ <element name="accent2" tokenid="ooxml:CT_ColorScheme_accent2"/>
+ <element name="accent3" tokenid="ooxml:CT_ColorScheme_accent3"/>
+ <element name="accent4" tokenid="ooxml:CT_ColorScheme_accent4"/>
+ <element name="accent5" tokenid="ooxml:CT_ColorScheme_accent5"/>
+ <element name="accent6" tokenid="ooxml:CT_ColorScheme_accent6"/>
+ <element name="hlink" tokenid="ooxml:CT_ColorScheme_hlink"/>
+ <element name="folHlink" tokenid="ooxml:CT_ColorScheme_folHlink"/>
+ <element name="extLst" tokenid="ooxml:CT_ColorScheme_extLst"/>
+ <attribute name="name" tokenid="ooxml:CT_ColorScheme_name"/>
+ </resource>
+ <resource name="CT_SupplementalFont" resource="Properties">
+ <attribute name="script" tokenid="ooxml:CT_SupplementalFont_script"/>
+ <attribute name="typeface" tokenid="ooxml:CT_SupplementalFont_typeface"/>
+ </resource>
+ <resource name="CT_FontCollection" resource="Properties">
+ <element name="latin" tokenid="ooxml:CT_FontCollection_latin"/>
+ <element name="ea" tokenid="ooxml:CT_FontCollection_ea"/>
+ <element name="cs" tokenid="ooxml:CT_FontCollection_cs"/>
+ <element name="font" tokenid="ooxml:CT_FontCollection_font"/>
+ <element name="extLst" tokenid="ooxml:CT_FontCollection_extLst"/>
+ </resource>
+ <resource name="CT_FontScheme" resource="Properties">
+ <element name="majorFont" tokenid="ooxml:CT_FontScheme_majorFont"/>
+ <element name="minorFont" tokenid="ooxml:CT_FontScheme_minorFont"/>
+ <element name="extLst" tokenid="ooxml:CT_FontScheme_extLst"/>
+ <attribute name="name" tokenid="ooxml:CT_FontScheme_name"/>
+ </resource>
+ <resource name="CT_FillStyleList" resource="Properties"/>
+ <resource name="CT_LineStyleList" resource="Properties">
+ <element name="ln" tokenid="ooxml:CT_LineStyleList_ln"/>
+ </resource>
+ <resource name="CT_EffectStyleList" resource="Properties">
+ <element name="effectStyle" tokenid="ooxml:CT_EffectStyleList_effectStyle"/>
+ </resource>
+ <resource name="CT_BackgroundFillStyleList" resource="Properties"/>
+ <resource name="CT_StyleMatrix" resource="Properties">
+ <element name="fillStyleLst" tokenid="ooxml:CT_StyleMatrix_fillStyleLst"/>
+ <element name="lnStyleLst" tokenid="ooxml:CT_StyleMatrix_lnStyleLst"/>
+ <element name="effectStyleLst" tokenid="ooxml:CT_StyleMatrix_effectStyleLst"/>
+ <element name="bgFillStyleLst" tokenid="ooxml:CT_StyleMatrix_bgFillStyleLst"/>
+ <attribute name="name" tokenid="ooxml:CT_StyleMatrix_name"/>
+ </resource>
+ <resource name="CT_BaseStyles" resource="Properties">
+ <element name="clrScheme" tokenid="ooxml:CT_BaseStyles_clrScheme"/>
+ <element name="fontScheme" tokenid="ooxml:CT_BaseStyles_fontScheme"/>
+ <element name="fmtScheme" tokenid="ooxml:CT_BaseStyles_fmtScheme"/>
+ <element name="extLst" tokenid="ooxml:CT_BaseStyles_extLst"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-textCharacter" file="dml-textCharacter.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <include href="dml-shapeEffects.rng"/>
+ <include href="dml-shapeLineProperties.rng"/>
+ <define name="ST_TextPoint">
+ <data type="int">
+ <xs:documentation>Text Point</xs:documentation>
+ <param name="minInclusive">-400000</param>
+ <param name="maxInclusive">400000</param>
+ </data>
+ </define>
+ <define name="ST_TextNonNegativePoint">
+ <data type="int">
+ <xs:documentation>Text Non-Negative Point</xs:documentation>
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">400000</param>
+ </data>
+ </define>
+ <define name="ST_TextFontSize">
+ <data type="int">
+ <xs:documentation>Text Font Size</xs:documentation>
+ <param name="minInclusive">100</param>
+ <param name="maxInclusive">400000</param>
+ </data>
+ </define>
+ <define name="ST_Panose">
+ <data type="hexBinary">
+ <xs:documentation>Panose Type</xs:documentation>
+ <param name="length">10</param>
+ </data>
+ </define>
+ <define name="ST_TextTypeface">
+ <data type="string">
+ <xs:documentation>Text Typeface</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_TextFont">
+ <attribute name="typeface">
+ <ref name="ST_TextTypeface"/>
+ <xs:documentation>Text Typeface</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="panose">
+ <ref name="ST_Panose"/>
+ <xs:documentation>Panose Setting</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pitchFamily">
+ <data type="byte">
+ <xs:documentation>Similar Font Family</xs:documentation>
+ </data>
+ <xs:documentation>Similar Font Family</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charset">
+ <data type="byte">
+ <xs:documentation>Similar Character Set</xs:documentation>
+ </data>
+ <xs:documentation>Similar Character Set</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_TextLanguageID">
+ <data type="string">
+ <xs:documentation>Language ID</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_TextUnderlineType">
+ <list>
+ <xs:documentation>Text Underline Types</xs:documentation>
+ <choice>
+ <!-- Text Underline Enum ( None ) -->
+ <value>none</value>
+ <!-- Text Underline Enum ( Words ) -->
+ <value>words</value>
+ <!-- Text Underline Enum ( Single ) -->
+ <value>sng</value>
+ <!-- Text Underline Enum ( Double ) -->
+ <value>dbl</value>
+ <!-- Text Underline Enum ( Heavy ) -->
+ <value>heavy</value>
+ <!-- Text Underline Enum ( Dotted ) -->
+ <value>dotted</value>
+ <!-- Text Underline Enum ( Heavy Dotted ) -->
+ <value>dottedHeavy</value>
+ <!-- Text Underline Enum ( Dashed ) -->
+ <value>dash</value>
+ <!-- Text Underline Enum ( Heavy Dashed ) -->
+ <value>dashHeavy</value>
+ <!-- Text Underline Enum ( Long Dashed ) -->
+ <value>dashLong</value>
+ <!-- Text Underline Enum ( Heavy Long Dashed ) -->
+ <value>dashLongHeavy</value>
+ <!-- Text Underline Enum ( Dot Dash ) -->
+ <value>dotDash</value>
+ <!-- Text Underline Enum ( Heavy Dot Dash ) -->
+ <value>dotDashHeavy</value>
+ <!-- Text Underline Enum ( Dot Dot Dash ) -->
+ <value>dotDotDash</value>
+ <!-- Text Underline Enum ( Heavy Dot Dot Dash ) -->
+ <value>dotDotDashHeavy</value>
+ <!-- Text Underline Enum ( Wavy ) -->
+ <value>wavy</value>
+ <!-- Text Underline Enum ( Heavy Wavy ) -->
+ <value>wavyHeavy</value>
+ <!-- Text Underline Enum ( Double Wavy ) -->
+ <value>wavyDbl</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TextUnderlineLineFollowText">
+ <empty/>
+ </define>
+ <define name="CT_TextUnderlineFillFollowText">
+ <empty/>
+ </define>
+ <define name="CT_TextUnderlineFillGroupWrapper">
+ <ref name="EG_FillProperties"/>
+ </define>
+ <define name="EG_TextUnderlineLine">
+ <choice>
+ <element name="uLnTx">
+ <ref name="CT_TextUnderlineLineFollowText"/>
+ </element>
+ <optional>
+ <element name="uLn">
+ <ref name="CT_LineProperties"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+ <define name="EG_TextUnderlineFill">
+ <choice>
+ <element name="uFillTx">
+ <ref name="CT_TextUnderlineFillFollowText"/>
+ </element>
+ <element name="uFill">
+ <ref name="CT_TextUnderlineFillGroupWrapper"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_TextStrikeType">
+ <list>
+ <xs:documentation>Text Strike Type</xs:documentation>
+ <choice>
+ <!-- Text Strike Enum ( No Strike ) -->
+ <value>noStrike</value>
+ <!-- Text Strike Enum ( Single Strike ) -->
+ <value>sngStrike</value>
+ <!-- Text Strike Enum ( Double Strike ) -->
+ <value>dblStrike</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TextCapsType">
+ <list>
+ <xs:documentation>Text Cap Types</xs:documentation>
+ <choice>
+ <!-- Text Caps Enum ( None ) -->
+ <value>none</value>
+ <!-- Text Caps Enum ( Small ) -->
+ <value>small</value>
+ <!-- Text Caps Enum ( All ) -->
+ <value>all</value>
+ </choice>
+ </list>
+ </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">
+ <xs:documentation>Kumimoji</xs:documentation>
+ </data>
+ <xs:documentation>Kumimoji</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lang">
+ <ref name="ST_TextLanguageID"/>
+ <xs:documentation>Language ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="altLang">
+ <ref name="ST_TextLanguageID"/>
+ <xs:documentation>Alternative Language</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sz">
+ <ref name="ST_TextFontSize"/>
+ <xs:documentation>Font Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="b">
+ <data type="boolean">
+ <xs:documentation>Bold</xs:documentation>
+ </data>
+ <xs:documentation>Bold</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="i">
+ <data type="boolean">
+ <xs:documentation>Italics</xs:documentation>
+ </data>
+ <xs:documentation>Italics</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="u">
+ <ref name="ST_TextUnderlineType"/>
+ <xs:documentation>Underline</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strike">
+ <ref name="ST_TextStrikeType"/>
+ <xs:documentation>Strikethrough</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kern">
+ <ref name="ST_TextNonNegativePoint"/>
+ <xs:documentation>Kerning</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cap">
+ <ref name="ST_TextCapsType"/>
+ <xs:documentation>Capitalization</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spc">
+ <ref name="ST_TextPoint"/>
+ <xs:documentation>Spacing</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="normalizeH">
+ <data type="boolean">
+ <xs:documentation>Normalize Heights</xs:documentation>
+ </data>
+ <xs:documentation>Normalize Heights</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseline">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Baseline</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noProof">
+ <data type="boolean">
+ <xs:documentation>No Proofing</xs:documentation>
+ </data>
+ <xs:documentation>No Proofing</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dirty">
+ <data type="boolean">
+ <xs:documentation>Dirty</xs:documentation>
+ </data>
+ <xs:documentation>Dirty</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="err">
+ <data type="boolean">
+ <xs:documentation>Spelling Error</xs:documentation>
+ </data>
+ <xs:documentation>Spelling Error</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="smtClean">
+ <data type="boolean">
+ <xs:documentation>SmartTag Clean</xs:documentation>
+ </data>
+ <xs:documentation>SmartTag Clean</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="smtId">
+ <data type="unsignedInt">
+ <xs:documentation>SmartTag ID</xs:documentation>
+ </data>
+ <xs:documentation>SmartTag ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bmk">
+ <data type="string">
+ <xs:documentation>Bookmark Link Target</xs:documentation>
+ </data>
+ <xs:documentation>Bookmark Link Target</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ </grammar>
+ <resource name="ST_TextPoint" resource="Integer" generated="yes"/>
+ <resource name="ST_TextNonNegativePoint" resource="Integer" generated="yes"/>
+ <resource name="ST_TextFontSize" resource="Integer" generated="yes"/>
+ <resource name="ST_Panose" resource="Hex" generated="yes"/>
+ <resource name="ST_TextTypeface" resource="String" generated="yes"/>
+ <resource name="CT_TextFont" resource="Properties">
+ <attribute name="typeface" tokenid="ooxml:CT_TextFont_typeface"/>
+ <attribute name="panose" tokenid="ooxml:CT_TextFont_panose"/>
+ <attribute name="pitchFamily" tokenid="ooxml:CT_TextFont_pitchFamily"/>
+ <attribute name="charset" tokenid="ooxml:CT_TextFont_charset"/>
+ </resource>
+ <resource name="ST_TextLanguageID" resource="String" generated="yes"/>
+ <resource name="ST_TextUnderlineType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_none">none</value>
+ <value name="words" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_words">words</value>
+ <value name="sng" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_sng">sng</value>
+ <value name="dbl" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dbl">dbl</value>
+ <value name="heavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_heavy">heavy</value>
+ <value name="dotted" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dotted">dotted</value>
+ <value name="dottedHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dottedHeavy">dottedHeavy</value>
+ <value name="dash" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dash">dash</value>
+ <value name="dashHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dashHeavy">dashHeavy</value>
+ <value name="dashLong" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dashLong">dashLong</value>
+ <value name="dashLongHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dashLongHeavy">dashLongHeavy</value>
+ <value name="dotDash" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dotDash">dotDash</value>
+ <value name="dotDashHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dotDashHeavy">dotDashHeavy</value>
+ <value name="dotDotDash" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dotDotDash">dotDotDash</value>
+ <value name="dotDotDashHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_dotDotDashHeavy">dotDotDashHeavy</value>
+ <value name="wavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_wavy">wavy</value>
+ <value name="wavyHeavy" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_wavyHeavy">wavyHeavy</value>
+ <value name="wavyDbl" tokenid="ooxml:Value_drawingml_ST_TextUnderlineType_wavyDbl">wavyDbl</value>
+ </resource>
+ <resource name="ST_TextStrikeType" resource="List" generated="yes">
+ <value name="noStrike" tokenid="ooxml:Value_drawingml_ST_TextStrikeType_noStrike">noStrike</value>
+ <value name="sngStrike" tokenid="ooxml:Value_drawingml_ST_TextStrikeType_sngStrike">sngStrike</value>
+ <value name="dblStrike" tokenid="ooxml:Value_drawingml_ST_TextStrikeType_dblStrike">dblStrike</value>
+ </resource>
+ <resource name="ST_TextCapsType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_TextCapsType_none">none</value>
+ <value name="small" tokenid="ooxml:Value_drawingml_ST_TextCapsType_small">small</value>
+ <value name="all" tokenid="ooxml:Value_drawingml_ST_TextCapsType_all">all</value>
+ </resource>
+ </namespace>
+ <namespace name="dml-shapeEffects" file="dml-shapeEffects.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <!-- start = blip -->
+ <define name="CT_AlphaBiLevelEffect">
+ <attribute name="thresh">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Threshold</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_AlphaCeilingEffect">
+ <empty/>
+ </define>
+ <define name="CT_AlphaFloorEffect">
+ <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"/>
+ <xs:documentation>Amount</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_AlphaOutsetEffect">
+ <optional>
+ <attribute name="rad">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Radius</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_AlphaReplaceEffect">
+ <attribute name="a">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Alpha</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_BiLevelEffect">
+ <attribute name="thresh">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Threshold</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_BlurEffect">
+ <optional>
+ <attribute name="rad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Radius</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="grow">
+ <data type="boolean">
+ <xs:documentation>Grow Bounds</xs:documentation>
+ </data>
+ <xs:documentation>Grow Bounds</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_ColorChangeEffect">
+ <group>
+ <element name="clrFrom">
+ <ref name="CT_Color"/>
+ </element>
+ <element name="clrTo">
+ <ref name="CT_Color"/>
+ </element>
+ </group>
+ <optional>
+ <attribute name="useA">
+ <data type="boolean">
+ <xs:documentation>Consider Alpha Values</xs:documentation>
+ </data>
+ <xs:documentation>Consider Alpha Values</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_ColorReplaceEffect">
+ <ref name="EG_ColorChoice"/>
+ </define>
+ <define name="CT_DuotoneEffect">
+ <oneOrMore>
+ <ref name="EG_ColorChoice"/>
+ </oneOrMore>
+ </define>
+ <define name="CT_GlowEffect">
+ <ref name="EG_ColorChoice"/>
+ <optional>
+ <attribute name="rad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Radius</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_GrayscaleEffect">
+ <empty/>
+ </define>
+ <define name="CT_HSLEffect">
+ <optional>
+ <attribute name="hue">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Hue</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sat">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Saturation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lum">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Luminance</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_InnerShadowEffect">
+ <ref name="EG_ColorChoice"/>
+ <optional>
+ <attribute name="blurRad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Blur Radius</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dist">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Distance</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Direction</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_LuminanceEffect">
+ <optional>
+ <attribute name="bright">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Brightness</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contrast">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Contrast</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_OuterShadowEffect">
+ <ref name="EG_ColorChoice"/>
+ <optional>
+ <attribute name="blurRad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Blur Radius</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dist">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Shadow Offset Distance</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Shadow Direction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Horizontal Scaling Factor</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sy">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Vertical Scaling Factor</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kx">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Horizontal Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ky">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Vertical Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="algn">
+ <ref name="ST_RectAlignment"/>
+ <xs:documentation>Shadow Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotWithShape">
+ <data type="boolean">
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </data>
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_PresetShadowVal">
+ <list>
+ <xs:documentation>Preset Shadow Type</xs:documentation>
+ <choice>
+ <!-- Top Left Drop Shadow -->
+ <value>shdw1</value>
+ <!-- Top Right Drop Shadow -->
+ <value>shdw2</value>
+ <!-- Back Left Perspective Shadow -->
+ <value>shdw3</value>
+ <!-- Back Right Perspective Shadow -->
+ <value>shdw4</value>
+ <!-- Bottom Left Drop Shadow -->
+ <value>shdw5</value>
+ <!-- Bottom Right Drop Shadow -->
+ <value>shdw6</value>
+ <!-- Front Left Perspective Shadow -->
+ <value>shdw7</value>
+ <!-- Front Right Perspective Shadow -->
+ <value>shdw8</value>
+ <!-- Top Left Small Drop Shadow -->
+ <value>shdw9</value>
+ <!-- Top Left Large Drop Shadow -->
+ <value>shdw10</value>
+ <!-- Back Left Long Perspective Shadow -->
+ <value>shdw11</value>
+ <!-- Back Right Long Perspective Shadow -->
+ <value>shdw12</value>
+ <!-- Top Left Double Drop Shadow -->
+ <value>shdw13</value>
+ <!-- Bottom Right Small Drop Shadow -->
+ <value>shdw14</value>
+ <!-- Front Left Long Perspective Shadow -->
+ <value>shdw15</value>
+ <!-- Front Right LongPerspective Shadow -->
+ <value>shdw16</value>
+ <!-- 3D Outer Box Shadow -->
+ <value>shdw17</value>
+ <!-- 3D Inner Box Shadow -->
+ <value>shdw18</value>
+ <!-- Back Center Perspective Shadow -->
+ <value>shdw19</value>
+ <!-- Front Bottom Shadow -->
+ <value>shdw20</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PresetShadowEffect">
+ <ref name="EG_ColorChoice"/>
+ <attribute name="prst">
+ <ref name="ST_PresetShadowVal"/>
+ <xs:documentation>Preset Shadow</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="dist">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Distance</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Direction</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_ReflectionEffect">
+ <optional>
+ <attribute name="blurRad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Blur Radius</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stA">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Start Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stPos">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Start Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endA">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>End Alpha</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endPos">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>End Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dist">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Distance</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Direction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fadeDir">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Fade Direction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Horizontal Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sy">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Vertical Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kx">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Horizontal Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ky">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Vertical Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="algn">
+ <ref name="ST_RectAlignment"/>
+ <xs:documentation>Shadow Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotWithShape">
+ <data type="boolean">
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </data>
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_RelativeOffsetEffect">
+ <optional>
+ <attribute name="tx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Offset X</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ty">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Offset Y</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_SoftEdgesEffect">
+ <attribute name="rad">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Radius</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TintEffect">
+ <optional>
+ <attribute name="hue">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Hue</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amt">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Amount</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_TransformEffect">
+ <optional>
+ <attribute name="sx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Horizontal Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sy">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Vertical Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kx">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Horizontal Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ky">
+ <ref name="ST_FixedAngle"/>
+ <xs:documentation>Vertical Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Horizontal Shift</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ty">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Vertical Shift</xs:documentation>
+ </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"/>
+ <xs:documentation>Angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scaled">
+ <data type="boolean">
+ <xs:documentation>Scaled</xs:documentation>
+ </data>
+ <xs:documentation>Scaled</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_PathShadeType">
+ <list>
+ <xs:documentation>Path Shade Type</xs:documentation>
+ <choice>
+ <!-- Shape -->
+ <value>shape</value>
+ <!-- Circle -->
+ <value>circle</value>
+ <!-- Rectangle -->
+ <value>rect</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PathShadeProperties">
+ <optional>
+ <element name="fillToRect">
+ <ref name="CT_RelativeRect"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="path">
+ <ref name="ST_PathShadeType"/>
+ <xs:documentation>Gradient Fill Path</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_ShadeProperties">
+ <choice>
+ <element name="lin">
+ <ref name="CT_LinearShadeProperties"/>
+ </element>
+ <element name="path">
+ <ref name="CT_PathShadeProperties"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_TileFlipMode">
+ <list>
+ <xs:documentation>Tile Flip Mode</xs:documentation>
+ <choice>
+ <!-- None -->
+ <value>none</value>
+ <!-- Horizontal -->
+ <value>x</value>
+ <!-- Vertical -->
+ <value>y</value>
+ <!-- Horizontal and Vertical -->
+ <value>xy</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_GradientStop">
+ <ref name="EG_ColorChoice"/>
+ <attribute name="pos">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Position</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_GradientStopList">
+ <oneOrMore>
+ <element name="gs">
+ <ref name="CT_GradientStop"/>
+ </element>
+ </oneOrMore>
+ </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"/>
+ <xs:documentation>Tile Flip</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotWithShape">
+ <data type="boolean">
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </data>
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_TileInfoProperties">
+ <optional>
+ <attribute name="tx">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Horizontal Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ty">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Vertical Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sx">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Horizontal Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sy">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Vertical Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flip">
+ <ref name="ST_TileFlipMode"/>
+ <xs:documentation>Tile Flipping</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="algn">
+ <ref name="ST_RectAlignment"/>
+ <xs:documentation>Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_StretchInfoProperties">
+ <optional>
+ <element name="fillRect">
+ <ref name="CT_RelativeRect"/>
+ </element>
+ </optional>
+ </define>
+ <define name="EG_FillModeProperties">
+ <choice>
+ <element name="tile">
+ <ref name="CT_TileInfoProperties"/>
+ </element>
+ <element name="stretch">
+ <ref name="CT_StretchInfoProperties"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_BlipCompression">
+ <list>
+ <xs:documentation>Blip Compression Type</xs:documentation>
+ <choice>
+ <!-- Email Compression -->
+ <value>email</value>
+ <!-- Screen Viewing Compression -->
+ <value>screen</value>
+ <!-- Printing Compression -->
+ <value>print</value>
+ <!-- High Quality Printing Compression -->
+ <value>hqprint</value>
+ <!-- No Compression -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Blip">
+ <group>
+ <zeroOrMore>
+ <choice>
+ <element name="alphaBiLevel">
+ <ref name="CT_AlphaBiLevelEffect"/>
+ </element>
+ <element name="alphaCeiling">
+ <ref name="CT_AlphaCeilingEffect"/>
+ </element>
+ <element name="alphaFloor">
+ <ref name="CT_AlphaFloorEffect"/>
+ </element>
+ <element name="alphaInv">
+ <ref name="CT_AlphaInverseEffect"/>
+ </element>
+ <element name="alphaMod">
+ <ref name="CT_AlphaModulateEffect"/>
+ </element>
+ <element name="alphaModFix">
+ <ref name="CT_AlphaModulateFixedEffect"/>
+ </element>
+ <element name="alphaRepl">
+ <ref name="CT_AlphaReplaceEffect"/>
+ </element>
+ <element name="biLevel">
+ <ref name="CT_BiLevelEffect"/>
+ </element>
+ <element name="blur">
+ <ref name="CT_BlurEffect"/>
+ </element>
+ <element name="clrChange">
+ <ref name="CT_ColorChangeEffect"/>
+ </element>
+ <element name="clrRepl">
+ <ref name="CT_ColorReplaceEffect"/>
+ </element>
+ <element name="duotone">
+ <ref name="CT_DuotoneEffect"/>
+ </element>
+ <element name="fillOverlay">
+ <ref name="CT_FillOverlayEffect"/>
+ </element>
+ <element name="grayscl">
+ <ref name="CT_GrayscaleEffect"/>
+ </element>
+ <element name="hsl">
+ <ref name="CT_HSLEffect"/>
+ </element>
+ <element name="lum">
+ <ref name="CT_LuminanceEffect"/>
+ </element>
+ <element name="tint">
+ <ref name="CT_TintEffect"/>
+ </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"/>
+ <xs:documentation>Compression State</xs:documentation>
+ </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">
+ <xs:documentation>DPI Setting</xs:documentation>
+ </data>
+ <xs:documentation>DPI Setting</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotWithShape">
+ <data type="boolean">
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </data>
+ <xs:documentation>Rotate With Shape</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_PresetPatternVal">
+ <list>
+ <xs:documentation>Preset Pattern Value</xs:documentation>
+ <choice>
+ <!-- 5% -->
+ <value>pct5</value>
+ <!-- 10% -->
+ <value>pct10</value>
+ <!-- 20% -->
+ <value>pct20</value>
+ <!-- 25% -->
+ <value>pct25</value>
+ <!-- 30% -->
+ <value>pct30</value>
+ <!-- 40% -->
+ <value>pct40</value>
+ <!-- 50% -->
+ <value>pct50</value>
+ <!-- 60% -->
+ <value>pct60</value>
+ <!-- 70% -->
+ <value>pct70</value>
+ <!-- 75% -->
+ <value>pct75</value>
+ <!-- 80% -->
+ <value>pct80</value>
+ <!-- 90% -->
+ <value>pct90</value>
+ <!-- Horizontal -->
+ <value>horz</value>
+ <!-- Vertical -->
+ <value>vert</value>
+ <!-- Light Horizontal -->
+ <value>ltHorz</value>
+ <!-- Light Vertical -->
+ <value>ltVert</value>
+ <!-- Dark Horizontal -->
+ <value>dkHorz</value>
+ <!-- Dark Vertical -->
+ <value>dkVert</value>
+ <!-- Narrow Horizontal -->
+ <value>narHorz</value>
+ <!-- Narrow Vertical -->
+ <value>narVert</value>
+ <!-- Dashed Horizontal -->
+ <value>dashHorz</value>
+ <!-- Dashed Vertical -->
+ <value>dashVert</value>
+ <!-- Cross -->
+ <value>cross</value>
+ <!-- Downward Diagonal -->
+ <value>dnDiag</value>
+ <!-- Upward Diagonal -->
+ <value>upDiag</value>
+ <!-- Light Downward Diagonal -->
+ <value>ltDnDiag</value>
+ <!-- Light Upward Diagonal -->
+ <value>ltUpDiag</value>
+ <!-- Dark Downward Diagonal -->
+ <value>dkDnDiag</value>
+ <!-- Dark Upward Diagonal -->
+ <value>dkUpDiag</value>
+ <!-- Wide Downward Diagonal -->
+ <value>wdDnDiag</value>
+ <!-- Wide Upward Diagonal -->
+ <value>wdUpDiag</value>
+ <!-- Dashed Downward Diagonal -->
+ <value>dashDnDiag</value>
+ <!-- Dashed Upward DIagonal -->
+ <value>dashUpDiag</value>
+ <!-- Diagonal Cross -->
+ <value>diagCross</value>
+ <!-- Small Checker Board -->
+ <value>smCheck</value>
+ <!-- Large Checker Board -->
+ <value>lgCheck</value>
+ <!-- Small Grid -->
+ <value>smGrid</value>
+ <!-- Large Grid -->
+ <value>lgGrid</value>
+ <!-- Dotted Grid -->
+ <value>dotGrid</value>
+ <!-- Small Confetti -->
+ <value>smConfetti</value>
+ <!-- Large Confetti -->
+ <value>lgConfetti</value>
+ <!-- Horizontal Brick -->
+ <value>horzBrick</value>
+ <!-- Diagonal Brick -->
+ <value>diagBrick</value>
+ <!-- Solid Diamond -->
+ <value>solidDmnd</value>
+ <!-- Open Diamond -->
+ <value>openDmnd</value>
+ <!-- Dotted Diamond -->
+ <value>dotDmnd</value>
+ <!-- Plaid -->
+ <value>plaid</value>
+ <!-- Sphere -->
+ <value>sphere</value>
+ <!-- Weave -->
+ <value>weave</value>
+ <!-- Divot -->
+ <value>divot</value>
+ <!-- Shingle -->
+ <value>shingle</value>
+ <!-- Wave -->
+ <value>wave</value>
+ <!-- Trellis -->
+ <value>trellis</value>
+ <!-- Zig Zag -->
+ <value>zigZag</value>
+ </choice>
+ </list>
+ </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"/>
+ <xs:documentation>Preset Pattern</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_GroupFillProperties">
+ <empty/>
+ </define>
+ <define name="EG_FillProperties">
+ <choice>
+ <element name="noFill">
+ <ref name="CT_NoFillProperties"/>
+ </element>
+ <element name="solidFill">
+ <ref name="CT_SolidColorFillProperties"/>
+ </element>
+ <element name="gradFill">
+ <ref name="CT_GradientFillProperties"/>
+ </element>
+ <element name="blipFill">
+ <ref name="CT_BlipFillProperties"/>
+ </element>
+ <element name="pattFill">
+ <ref name="CT_PatternFillProperties"/>
+ </element>
+ <element name="grpFill">
+ <ref name="CT_GroupFillProperties"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_FillProperties">
+ <ref name="EG_FillProperties"/>
+ </define>
+ <define name="CT_FillEffect">
+ <ref name="EG_FillProperties"/>
+ </define>
+ <define name="ST_BlendMode">
+ <list>
+ <xs:documentation>Blend Mode</xs:documentation>
+ <choice>
+ <!-- Overlay -->
+ <value>over</value>
+ <!-- Multiply -->
+ <value>mult</value>
+ <!-- Screen -->
+ <value>screen</value>
+ <!-- Darken -->
+ <value>darken</value>
+ <!-- Lighten -->
+ <value>lighten</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FillOverlayEffect">
+ <ref name="EG_FillProperties"/>
+ <attribute name="blend">
+ <ref name="ST_BlendMode"/>
+ <xs:documentation>Blend</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_EffectReference">
+ <attribute name="ref">
+ <data type="token">
+ <xs:documentation>Reference</xs:documentation>
+ </data>
+ <xs:documentation>Reference</xs:documentation>
+ </attribute>
+ </define>
+ <define name="EG_Effect">
+ <choice>
+ <element name="cont">
+ <ref name="CT_EffectContainer"/>
+ </element>
+ <element name="effect">
+ <ref name="CT_EffectReference"/>
+ </element>
+ <element name="alphaBiLevel">
+ <ref name="CT_AlphaBiLevelEffect"/>
+ </element>
+ <element name="alphaCeiling">
+ <ref name="CT_AlphaCeilingEffect"/>
+ </element>
+ <element name="alphaFloor">
+ <ref name="CT_AlphaFloorEffect"/>
+ </element>
+ <element name="alphaInv">
+ <ref name="CT_AlphaInverseEffect"/>
+ </element>
+ <element name="alphaMod">
+ <ref name="CT_AlphaModulateEffect"/>
+ </element>
+ <element name="alphaModFix">
+ <ref name="CT_AlphaModulateFixedEffect"/>
+ </element>
+ <element name="alphaOutset">
+ <ref name="CT_AlphaOutsetEffect"/>
+ </element>
+ <element name="alphaRepl">
+ <ref name="CT_AlphaReplaceEffect"/>
+ </element>
+ <element name="biLevel">
+ <ref name="CT_BiLevelEffect"/>
+ </element>
+ <element name="blend">
+ <ref name="CT_BlendEffect"/>
+ </element>
+ <element name="blur">
+ <ref name="CT_BlurEffect"/>
+ </element>
+ <element name="clrChange">
+ <ref name="CT_ColorChangeEffect"/>
+ </element>
+ <element name="clrRepl">
+ <ref name="CT_ColorReplaceEffect"/>
+ </element>
+ <element name="duotone">
+ <ref name="CT_DuotoneEffect"/>
+ </element>
+ <element name="fill">
+ <ref name="CT_FillEffect"/>
+ </element>
+ <element name="fillOverlay">
+ <ref name="CT_FillOverlayEffect"/>
+ </element>
+ <element name="glow">
+ <ref name="CT_GlowEffect"/>
+ </element>
+ <element name="grayscl">
+ <ref name="CT_GrayscaleEffect"/>
+ </element>
+ <element name="hsl">
+ <ref name="CT_HSLEffect"/>
+ </element>
+ <element name="innerShdw">
+ <ref name="CT_InnerShadowEffect"/>
+ </element>
+ <element name="lum">
+ <ref name="CT_LuminanceEffect"/>
+ </element>
+ <element name="outerShdw">
+ <ref name="CT_OuterShadowEffect"/>
+ </element>
+ <element name="prstShdw">
+ <ref name="CT_PresetShadowEffect"/>
+ </element>
+ <element name="reflection">
+ <ref name="CT_ReflectionEffect"/>
+ </element>
+ <element name="relOff">
+ <ref name="CT_RelativeOffsetEffect"/>
+ </element>
+ <element name="softEdge">
+ <ref name="CT_SoftEdgesEffect"/>
+ </element>
+ <element name="tint">
+ <ref name="CT_TintEffect"/>
+ </element>
+ <element name="xfrm">
+ <ref name="CT_TransformEffect"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_EffectContainerType">
+ <list>
+ <xs:documentation>Effect Container Type</xs:documentation>
+ <choice>
+ <!-- Sibling -->
+ <value>sib</value>
+ <!-- Tree -->
+ <value>tree</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_EffectContainer">
+ <zeroOrMore>
+ <ref name="EG_Effect"/>
+ </zeroOrMore>
+ <optional>
+ <attribute name="type">
+ <ref name="ST_EffectContainerType"/>
+ <xs:documentation>Effect Container Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="name">
+ <data type="token">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_AlphaModulateEffect">
+ <element name="cont">
+ <ref name="CT_EffectContainer"/>
+ </element>
+ </define>
+ <define name="CT_BlendEffect">
+ <element name="cont">
+ <ref name="CT_EffectContainer"/>
+ </element>
+ <attribute name="blend">
+ <ref name="ST_BlendMode"/>
+ <xs:documentation>Blend Mode</xs:documentation>
+ </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>
+ <element name="effectLst">
+ <ref name="CT_EffectList"/>
+ </element>
+ <element name="effectDag">
+ <ref name="CT_EffectContainer"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_EffectProperties">
+ <ref name="EG_EffectProperties"/>
+ </define>
+ <define name="blip">
+ <element name="blip">
+ <ref name="CT_Blip"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="ST_PresetShadowVal" resource="List" generated="yes">
+ <value name="shdw1" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw1">shdw1</value>
+ <value name="shdw2" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw2">shdw2</value>
+ <value name="shdw3" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw3">shdw3</value>
+ <value name="shdw4" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw4">shdw4</value>
+ <value name="shdw5" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw5">shdw5</value>
+ <value name="shdw6" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw6">shdw6</value>
+ <value name="shdw7" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw7">shdw7</value>
+ <value name="shdw8" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw8">shdw8</value>
+ <value name="shdw9" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw9">shdw9</value>
+ <value name="shdw10" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw10">shdw10</value>
+ <value name="shdw11" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw11">shdw11</value>
+ <value name="shdw12" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw12">shdw12</value>
+ <value name="shdw13" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw13">shdw13</value>
+ <value name="shdw14" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw14">shdw14</value>
+ <value name="shdw15" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw15">shdw15</value>
+ <value name="shdw16" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw16">shdw16</value>
+ <value name="shdw17" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw17">shdw17</value>
+ <value name="shdw18" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw18">shdw18</value>
+ <value name="shdw19" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw19">shdw19</value>
+ <value name="shdw20" tokenid="ooxml:Value_drawingml_ST_PresetShadowVal_shdw20">shdw20</value>
+ </resource>
+ <resource name="CT_SolidColorFillProperties" resource="Properties"/>
+ <resource name="ST_PathShadeType" resource="List" generated="yes">
+ <value name="shape" tokenid="ooxml:Value_drawingml_ST_PathShadeType_shape">shape</value>
+ <value name="circle" tokenid="ooxml:Value_drawingml_ST_PathShadeType_circle">circle</value>
+ <value name="rect" tokenid="ooxml:Value_drawingml_ST_PathShadeType_rect">rect</value>
+ </resource>
+ <resource name="ST_TileFlipMode" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_TileFlipMode_none">none</value>
+ <value name="x" tokenid="ooxml:Value_drawingml_ST_TileFlipMode_x">x</value>
+ <value name="y" tokenid="ooxml:Value_drawingml_ST_TileFlipMode_y">y</value>
+ <value name="xy" tokenid="ooxml:Value_drawingml_ST_TileFlipMode_xy">xy</value>
+ </resource>
+ <resource name="CT_GradientStop" resource="Properties">
+ <attribute name="pos" tokenid="ooxml:CT_GradientStop_pos"/>
+ </resource>
+ <resource name="CT_TileInfoProperties" resource="Properties">
+ <attribute name="tx" tokenid="ooxml:CT_TileInfoProperties_tx"/>
+ <attribute name="ty" tokenid="ooxml:CT_TileInfoProperties_ty"/>
+ <attribute name="sx" tokenid="ooxml:CT_TileInfoProperties_sx"/>
+ <attribute name="sy" tokenid="ooxml:CT_TileInfoProperties_sy"/>
+ <attribute name="flip" tokenid="ooxml:CT_TileInfoProperties_flip"/>
+ <attribute name="algn" tokenid="ooxml:CT_TileInfoProperties_algn"/>
+ </resource>
+ <resource name="CT_StretchInfoProperties" resource="Properties">
+ <element name="fillRect" tokenid="ooxml:CT_StretchInfoProperties_fillRect"/>
+ </resource>
+ <resource name="EG_FillModeProperties" resource="Properties">
+ <element name="tile" tokenid="ooxml:EG_FillModeProperties_tile"/>
+ <element name="stretch" tokenid="ooxml:EG_FillModeProperties_stretch"/>
+ </resource>
+ <resource name="ST_BlipCompression" resource="List" generated="yes">
+ <value name="email" tokenid="ooxml:Value_drawingml_ST_BlipCompression_email">email</value>
+ <value name="screen" tokenid="ooxml:Value_drawingml_ST_BlipCompression_screen">screen</value>
+ <value name="print" tokenid="ooxml:Value_drawingml_ST_BlipCompression_print">print</value>
+ <value name="hqprint" tokenid="ooxml:Value_drawingml_ST_BlipCompression_hqprint">hqprint</value>
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_BlipCompression_none">none</value>
+ </resource>
+ <resource name="CT_Blip" resource="Properties">
+ <element name="alphaBiLevel" tokenid="ooxml:CT_Blip_alphaBiLevel"/>
+ <element name="alphaCeiling" tokenid="ooxml:CT_Blip_alphaCeiling"/>
+ <element name="alphaFloor" tokenid="ooxml:CT_Blip_alphaFloor"/>
+ <element name="alphaInv" tokenid="ooxml:CT_Blip_alphaInv"/>
+ <element name="alphaMod" tokenid="ooxml:CT_Blip_alphaMod"/>
+ <element name="alphaModFix" tokenid="ooxml:CT_Blip_alphaModFix"/>
+ <element name="alphaRepl" tokenid="ooxml:CT_Blip_alphaRepl"/>
+ <element name="biLevel" tokenid="ooxml:CT_Blip_biLevel"/>
+ <element name="blur" tokenid="ooxml:CT_Blip_blur"/>
+ <element name="clrChange" tokenid="ooxml:CT_Blip_clrChange"/>
+ <element name="clrRepl" tokenid="ooxml:CT_Blip_clrRepl"/>
+ <element name="duotone" tokenid="ooxml:CT_Blip_duotone"/>
+ <element name="fillOverlay" tokenid="ooxml:CT_Blip_fillOverlay"/>
+ <element name="grayscl" tokenid="ooxml:CT_Blip_grayscl"/>
+ <element name="hsl" tokenid="ooxml:CT_Blip_hsl"/>
+ <element name="lum" tokenid="ooxml:CT_Blip_lum"/>
+ <element name="tint" tokenid="ooxml:CT_Blip_tint"/>
+ <element name="extLst" tokenid="ooxml:CT_Blip_extLst"/>
+ <attribute name="cstate" tokenid="ooxml:CT_Blip_cstate"/>
+ </resource>
+ <resource name="CT_BlipFillProperties" resource="Properties">
+ <element name="blip" tokenid="ooxml:CT_BlipFillProperties_blip"/>
+ <element name="srcRect" tokenid="ooxml:CT_BlipFillProperties_srcRect"/>
+ <attribute name="dpi" tokenid="ooxml:CT_BlipFillProperties_dpi"/>
+ <attribute name="rotWithShape" tokenid="ooxml:CT_BlipFillProperties_rotWithShape"/>
+ </resource>
+ <resource name="ST_PresetPatternVal" resource="List" generated="yes">
+ <value name="pct5" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct5">pct5</value>
+ <value name="pct10" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct10">pct10</value>
+ <value name="pct20" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct20">pct20</value>
+ <value name="pct25" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct25">pct25</value>
+ <value name="pct30" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct30">pct30</value>
+ <value name="pct40" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct40">pct40</value>
+ <value name="pct50" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct50">pct50</value>
+ <value name="pct60" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct60">pct60</value>
+ <value name="pct70" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct70">pct70</value>
+ <value name="pct75" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct75">pct75</value>
+ <value name="pct80" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct80">pct80</value>
+ <value name="pct90" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_pct90">pct90</value>
+ <value name="horz" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_horz">horz</value>
+ <value name="vert" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_vert">vert</value>
+ <value name="ltHorz" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_ltHorz">ltHorz</value>
+ <value name="ltVert" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_ltVert">ltVert</value>
+ <value name="dkHorz" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dkHorz">dkHorz</value>
+ <value name="dkVert" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dkVert">dkVert</value>
+ <value name="narHorz" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_narHorz">narHorz</value>
+ <value name="narVert" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_narVert">narVert</value>
+ <value name="dashHorz" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dashHorz">dashHorz</value>
+ <value name="dashVert" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dashVert">dashVert</value>
+ <value name="cross" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_cross">cross</value>
+ <value name="dnDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dnDiag">dnDiag</value>
+ <value name="upDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_upDiag">upDiag</value>
+ <value name="ltDnDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_ltDnDiag">ltDnDiag</value>
+ <value name="ltUpDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_ltUpDiag">ltUpDiag</value>
+ <value name="dkDnDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dkDnDiag">dkDnDiag</value>
+ <value name="dkUpDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dkUpDiag">dkUpDiag</value>
+ <value name="wdDnDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_wdDnDiag">wdDnDiag</value>
+ <value name="wdUpDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_wdUpDiag">wdUpDiag</value>
+ <value name="dashDnDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dashDnDiag">dashDnDiag</value>
+ <value name="dashUpDiag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dashUpDiag">dashUpDiag</value>
+ <value name="diagCross" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_diagCross">diagCross</value>
+ <value name="smCheck" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_smCheck">smCheck</value>
+ <value name="lgCheck" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_lgCheck">lgCheck</value>
+ <value name="smGrid" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_smGrid">smGrid</value>
+ <value name="lgGrid" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_lgGrid">lgGrid</value>
+ <value name="dotGrid" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dotGrid">dotGrid</value>
+ <value name="smConfetti" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_smConfetti">smConfetti</value>
+ <value name="lgConfetti" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_lgConfetti">lgConfetti</value>
+ <value name="horzBrick" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_horzBrick">horzBrick</value>
+ <value name="diagBrick" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_diagBrick">diagBrick</value>
+ <value name="solidDmnd" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_solidDmnd">solidDmnd</value>
+ <value name="openDmnd" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_openDmnd">openDmnd</value>
+ <value name="dotDmnd" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_dotDmnd">dotDmnd</value>
+ <value name="plaid" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_plaid">plaid</value>
+ <value name="sphere" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_sphere">sphere</value>
+ <value name="weave" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_weave">weave</value>
+ <value name="divot" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_divot">divot</value>
+ <value name="shingle" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_shingle">shingle</value>
+ <value name="wave" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_wave">wave</value>
+ <value name="trellis" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_trellis">trellis</value>
+ <value name="zigZag" tokenid="ooxml:Value_drawingml_ST_PresetPatternVal_zigZag">zigZag</value>
+ </resource>
+ <resource name="ST_BlendMode" resource="List" generated="yes">
+ <value name="over" tokenid="ooxml:Value_drawingml_ST_BlendMode_over">over</value>
+ <value name="mult" tokenid="ooxml:Value_drawingml_ST_BlendMode_mult">mult</value>
+ <value name="screen" tokenid="ooxml:Value_drawingml_ST_BlendMode_screen">screen</value>
+ <value name="darken" tokenid="ooxml:Value_drawingml_ST_BlendMode_darken">darken</value>
+ <value name="lighten" tokenid="ooxml:Value_drawingml_ST_BlendMode_lighten">lighten</value>
+ </resource>
+ <resource name="EG_Effect" resource="Properties">
+ <element name="cont" tokenid="ooxml:EG_Effect_cont"/>
+ <element name="effect" tokenid="ooxml:EG_Effect_effect"/>
+ <element name="alphaBiLevel" tokenid="ooxml:EG_Effect_alphaBiLevel"/>
+ <element name="alphaCeiling" tokenid="ooxml:EG_Effect_alphaCeiling"/>
+ <element name="alphaFloor" tokenid="ooxml:EG_Effect_alphaFloor"/>
+ <element name="alphaInv" tokenid="ooxml:EG_Effect_alphaInv"/>
+ <element name="alphaMod" tokenid="ooxml:EG_Effect_alphaMod"/>
+ <element name="alphaModFix" tokenid="ooxml:EG_Effect_alphaModFix"/>
+ <element name="alphaOutset" tokenid="ooxml:EG_Effect_alphaOutset"/>
+ <element name="alphaRepl" tokenid="ooxml:EG_Effect_alphaRepl"/>
+ <element name="biLevel" tokenid="ooxml:EG_Effect_biLevel"/>
+ <element name="blend" tokenid="ooxml:EG_Effect_blend"/>
+ <element name="blur" tokenid="ooxml:EG_Effect_blur"/>
+ <element name="clrChange" tokenid="ooxml:EG_Effect_clrChange"/>
+ <element name="clrRepl" tokenid="ooxml:EG_Effect_clrRepl"/>
+ <element name="duotone" tokenid="ooxml:EG_Effect_duotone"/>
+ <element name="fill" tokenid="ooxml:EG_Effect_fill"/>
+ <element name="fillOverlay" tokenid="ooxml:EG_Effect_fillOverlay"/>
+ <element name="glow" tokenid="ooxml:EG_Effect_glow"/>
+ <element name="grayscl" tokenid="ooxml:EG_Effect_grayscl"/>
+ <element name="hsl" tokenid="ooxml:EG_Effect_hsl"/>
+ <element name="innerShdw" tokenid="ooxml:EG_Effect_innerShdw"/>
+ <element name="lum" tokenid="ooxml:EG_Effect_lum"/>
+ <element name="outerShdw" tokenid="ooxml:EG_Effect_outerShdw"/>
+ <element name="prstShdw" tokenid="ooxml:EG_Effect_prstShdw"/>
+ <element name="reflection" tokenid="ooxml:EG_Effect_reflection"/>
+ <element name="relOff" tokenid="ooxml:EG_Effect_relOff"/>
+ <element name="softEdge" tokenid="ooxml:EG_Effect_softEdge"/>
+ <element name="tint" tokenid="ooxml:EG_Effect_tint"/>
+ <element name="xfrm" tokenid="ooxml:EG_Effect_xfrm"/>
+ </resource>
+ <resource name="ST_EffectContainerType" resource="List" generated="yes">
+ <value name="sib" tokenid="ooxml:Value_drawingml_ST_EffectContainerType_sib">sib</value>
+ <value name="tree" tokenid="ooxml:Value_drawingml_ST_EffectContainerType_tree">tree</value>
+ </resource>
+ <resource name="CT_EffectContainer" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_EffectContainer_type"/>
+ <attribute name="name" tokenid="ooxml:CT_EffectContainer_name"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-shapeLineProperties" file="dml-shapeLineProperties.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shapeEffects.rng"/>
+ <define name="ST_LineEndType">
+ <list>
+ <xs:documentation>Line End Type</xs:documentation>
+ <choice>
+ <!-- None -->
+ <value>none</value>
+ <!-- Triangle Arrow Head -->
+ <value>triangle</value>
+ <!-- Stealth Arrow -->
+ <value>stealth</value>
+ <!-- Diamond -->
+ <value>diamond</value>
+ <!-- Oval -->
+ <value>oval</value>
+ <!-- Arrow Head -->
+ <value>arrow</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_LineEndWidth">
+ <list>
+ <xs:documentation>Line End Width</xs:documentation>
+ <choice>
+ <!-- Small -->
+ <value>sm</value>
+ <!-- Medium -->
+ <value>med</value>
+ <!-- Large -->
+ <value>lg</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_LineEndLength">
+ <list>
+ <xs:documentation>Line End Length</xs:documentation>
+ <choice>
+ <!-- Small -->
+ <value>sm</value>
+ <!-- Medium -->
+ <value>med</value>
+ <!-- Large -->
+ <value>lg</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_LineEndProperties">
+ <optional>
+ <attribute name="type">
+ <ref name="ST_LineEndType"/>
+ <xs:documentation>Line Head/End Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="w">
+ <ref name="ST_LineEndWidth"/>
+ <xs:documentation>Width of Head/End</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="len">
+ <ref name="ST_LineEndLength"/>
+ <xs:documentation>Length of Head/End</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_LineFillProperties">
+ <choice>
+ <element name="noFill">
+ <ref name="CT_NoFillProperties"/>
+ </element>
+ <element name="solidFill">
+ <ref name="CT_SolidColorFillProperties"/>
+ </element>
+ <element name="gradFill">
+ <ref name="CT_GradientFillProperties"/>
+ </element>
+ <element name="pattFill">
+ <ref name="CT_PatternFillProperties"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_LineJoinBevel">
+ <empty/>
+ </define>
+ <define name="CT_LineJoinRound">
+ <empty/>
+ </define>
+ <define name="CT_LineJoinMiterProperties">
+ <optional>
+ <attribute name="lim">
+ <ref name="ST_PositivePercentage"/>
+ <xs:documentation>Miter Join Limit</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_LineJoinProperties">
+ <choice>
+ <element name="round">
+ <ref name="CT_LineJoinRound"/>
+ </element>
+ <element name="bevel">
+ <ref name="CT_LineJoinBevel"/>
+ </element>
+ <element name="miter">
+ <ref name="CT_LineJoinMiterProperties"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_PresetLineDashVal">
+ <list>
+ <xs:documentation>Preset Line Dash Value</xs:documentation>
+ <choice>
+ <!-- Solid -->
+ <value>solid</value>
+ <!-- Dot -->
+ <value>dot</value>
+ <!-- Dash -->
+ <value>dash</value>
+ <!-- Large Dash -->
+ <value>lgDash</value>
+ <!-- Dash Dot -->
+ <value>dashDot</value>
+ <!-- Large Dash Dot -->
+ <value>lgDashDot</value>
+ <!-- Large Dash Dot Dot -->
+ <value>lgDashDotDot</value>
+ <!-- System Dash -->
+ <value>sysDash</value>
+ <!-- System Dot -->
+ <value>sysDot</value>
+ <!-- System Dash Dot -->
+ <value>sysDashDot</value>
+ <!-- System Dash Dot Dot -->
+ <value>sysDashDotDot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PresetLineDashProperties">
+ <optional>
+ <attribute name="val">
+ <ref name="ST_PresetLineDashVal"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_DashStop">
+ <attribute name="d">
+ <ref name="ST_PositivePercentage"/>
+ <xs:documentation>Dash Length</xs:documentation>
+ </attribute>
+ <attribute name="sp">
+ <ref name="ST_PositivePercentage"/>
+ <xs:documentation>Space Length</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DashStopList">
+ <zeroOrMore>
+ <element name="ds">
+ <ref name="CT_DashStop"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="EG_LineDashProperties">
+ <choice>
+ <element name="prstDash">
+ <ref name="CT_PresetLineDashProperties"/>
+ </element>
+ <element name="custDash">
+ <ref name="CT_DashStopList"/>
+ </element>
+ </choice>
+ </define>
+ <define name="ST_LineCap">
+ <list>
+ <xs:documentation>End Line Cap</xs:documentation>
+ <choice>
+ <!-- Round Line Cap -->
+ <value>rnd</value>
+ <!-- Square Line Cap -->
+ <value>sq</value>
+ <!-- Flat Line Cap -->
+ <value>flat</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_LineWidth">
+ <empty/>
+ </define>
+ <define name="ST_PenAlignment">
+ <list>
+ <xs:documentation>Alignment Type</xs:documentation>
+ <choice>
+ <!-- Center Alignment -->
+ <value>ctr</value>
+ <!-- Inset Alignment -->
+ <value>in</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_CompoundLine">
+ <list>
+ <xs:documentation>Compound Line Type</xs:documentation>
+ <choice>
+ <!-- Single Line -->
+ <value>sng</value>
+ <!-- Double Lines -->
+ <value>dbl</value>
+ <!-- Thick Thin Double Lines -->
+ <value>thickThin</value>
+ <!-- Thin Thick Double Lines -->
+ <value>thinThick</value>
+ <!-- Thin Thick Thin Triple Lines -->
+ <value>tri</value>
+ </choice>
+ </list>
+ </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"/>
+ <xs:documentation>Line Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cap">
+ <ref name="ST_LineCap"/>
+ <xs:documentation>Line Ending Cap Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cmpd">
+ <ref name="ST_CompoundLine"/>
+ <xs:documentation>Compound Line Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="algn">
+ <ref name="ST_PenAlignment"/>
+ <xs:documentation>Stroke Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ </grammar>
+ <resource name="ST_LineEndType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_LineEndType_none">none</value>
+ <value name="triangle" tokenid="ooxml:Value_drawingml_ST_LineEndType_triangle">triangle</value>
+ <value name="stealth" tokenid="ooxml:Value_drawingml_ST_LineEndType_stealth">stealth</value>
+ <value name="diamond" tokenid="ooxml:Value_drawingml_ST_LineEndType_diamond">diamond</value>
+ <value name="oval" tokenid="ooxml:Value_drawingml_ST_LineEndType_oval">oval</value>
+ <value name="arrow" tokenid="ooxml:Value_drawingml_ST_LineEndType_arrow">arrow</value>
+ </resource>
+ <resource name="ST_LineEndWidth" resource="List" generated="yes">
+ <value name="sm" tokenid="ooxml:Value_drawingml_ST_LineEndWidth_sm">sm</value>
+ <value name="med" tokenid="ooxml:Value_drawingml_ST_LineEndWidth_med">med</value>
+ <value name="lg" tokenid="ooxml:Value_drawingml_ST_LineEndWidth_lg">lg</value>
+ </resource>
+ <resource name="ST_LineEndLength" resource="List" generated="yes">
+ <value name="sm" tokenid="ooxml:Value_drawingml_ST_LineEndLength_sm">sm</value>
+ <value name="med" tokenid="ooxml:Value_drawingml_ST_LineEndLength_med">med</value>
+ <value name="lg" tokenid="ooxml:Value_drawingml_ST_LineEndLength_lg">lg</value>
+ </resource>
+ <resource name="CT_LineEndProperties" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_LineEndProperties_type"/>
+ <attribute name="w" tokenid="ooxml:CT_LineEndProperties_w"/>
+ <attribute name="len" tokenid="ooxml:CT_LineEndProperties_len"/>
+ </resource>
+ <resource name="EG_LineFillProperties" resource="Properties">
+ <element name="noFill" tokenid="ooxml:EG_LineFillProperties_noFill"/>
+ <element name="solidFill" tokenid="ooxml:EG_LineFillProperties_solidFill"/>
+ <element name="gradFill" tokenid="ooxml:EG_LineFillProperties_gradFill"/>
+ <element name="pattFill" tokenid="ooxml:EG_LineFillProperties_pattFill"/>
+ </resource>
+ <resource name="ST_PresetLineDashVal" resource="List" generated="yes">
+ <value name="solid" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_solid">solid</value>
+ <value name="dot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_dot">dot</value>
+ <value name="dash" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_dash">dash</value>
+ <value name="lgDash" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_lgDash">lgDash</value>
+ <value name="dashDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_dashDot">dashDot</value>
+ <value name="lgDashDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_lgDashDot">lgDashDot</value>
+ <value name="lgDashDotDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_lgDashDotDot">lgDashDotDot</value>
+ <value name="sysDash" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_sysDash">sysDash</value>
+ <value name="sysDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_sysDot">sysDot</value>
+ <value name="sysDashDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_sysDashDot">sysDashDot</value>
+ <value name="sysDashDotDot" tokenid="ooxml:Value_drawingml_ST_PresetLineDashVal_sysDashDotDot">sysDashDotDot</value>
+ </resource>
+ <resource name="ST_LineCap" resource="List" generated="yes">
+ <value name="rnd" tokenid="ooxml:Value_drawingml_ST_LineCap_rnd">rnd</value>
+ <value name="sq" tokenid="ooxml:Value_drawingml_ST_LineCap_sq">sq</value>
+ <value name="flat" tokenid="ooxml:Value_drawingml_ST_LineCap_flat">flat</value>
+ </resource>
+ <resource name="ST_PenAlignment" resource="List" generated="yes">
+ <value name="ctr" tokenid="ooxml:Value_drawingml_ST_PenAlignment_ctr">ctr</value>
+ <value name="in" tokenid="ooxml:Value_drawingml_ST_PenAlignment_in">in</value>
+ </resource>
+ <resource name="ST_CompoundLine" resource="List" generated="yes">
+ <value name="sng" tokenid="ooxml:Value_drawingml_ST_CompoundLine_sng">sng</value>
+ <value name="dbl" tokenid="ooxml:Value_drawingml_ST_CompoundLine_dbl">dbl</value>
+ <value name="thickThin" tokenid="ooxml:Value_drawingml_ST_CompoundLine_thickThin">thickThin</value>
+ <value name="thinThick" tokenid="ooxml:Value_drawingml_ST_CompoundLine_thinThick">thinThick</value>
+ <value name="tri" tokenid="ooxml:Value_drawingml_ST_CompoundLine_tri">tri</value>
+ </resource>
+ <resource name="CT_LineProperties" resource="Properties">
+ <element name="headEnd" tokenid="ooxml:CT_LineProperties_headEnd"/>
+ <element name="tailEnd" tokenid="ooxml:CT_LineProperties_tailEnd"/>
+ <element name="extLst" tokenid="ooxml:CT_LineProperties_extLst"/>
+ <attribute name="w" tokenid="ooxml:CT_LineProperties_w"/>
+ <attribute name="cap" tokenid="ooxml:CT_LineProperties_cap"/>
+ <attribute name="cmpd" tokenid="ooxml:CT_LineProperties_cmpd"/>
+ <attribute name="algn" tokenid="ooxml:CT_LineProperties_algn"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-shapeProperties" file="dml-shapeProperties.rng" todo="ignore">
+ <grammar xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shape3DStyles.rng"/>
+ <include href="dml-shape3DScene.rng"/>
+ <include href="dml-shapeGeometry.rng"/>
+ <include href="dml-shapeEffects.rng"/>
+ <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"/>
+ <xs:documentation>Black and White Mode</xs:documentation>
+ </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"/>
+ <xs:documentation>Black and White Mode</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ </grammar>
+ <resource name="CT_ShapeProperties" resource="Properties">
+ <element name="xfrm" tokenid="ooxml:CT_ShapeProperties_xfrm"/>
+ <element name="ln" tokenid="ooxml:CT_ShapeProperties_ln"/>
+ <element name="scene3d" tokenid="ooxml:CT_ShapeProperties_scene3d"/>
+ <element name="sp3d" tokenid="ooxml:CT_ShapeProperties_sp3d"/>
+ <element name="extLst" tokenid="ooxml:CT_ShapeProperties_extLst"/>
+ <attribute name="bwMode" tokenid="ooxml:CT_ShapeProperties_bwMode"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-baseTypes" file="dml-baseTypes">
+ <grammar xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="shared-relationshipReference.rng"/>
+ <define name="CT_OfficeArtExtension">
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <attribute name="uri">
+ <data type="token">
+ <xs:documentation>Uniform Resource Identifier</xs:documentation>
+ </data>
+ <xs:documentation>Uniform Resource Identifier</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Coordinate">
+ <data type="long">
+ <xs:documentation>Coordinate</xs:documentation>
+ <param name="minInclusive">-27273042329600</param>
+ <param name="maxInclusive">27273042316900</param>
+ </data>
+ </define>
+ <define name="ST_Coordinate32">
+ <data type="int">
+ <xs:documentation>Coordinate Point</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_PositiveCoordinate">
+ <data type="long">
+ <xs:documentation>Positive Coordinate</xs:documentation>
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">27273042316900</param>
+ </data>
+ </define>
+ <define name="ST_PositiveCoordinate32">
+ <empty/>
+ </define>
+ <define name="ST_Angle">
+ <data type="int">
+ <xs:documentation>Angle</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_Angle">
+ <attribute name="val">
+ <ref name="ST_Angle"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_FixedAngle">
+ <empty/>
+ </define>
+ <define name="ST_PositiveFixedAngle">
+ <empty/>
+ </define>
+ <define name="CT_PositiveFixedAngle">
+ <attribute name="val">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Percentage">
+ <data type="int">
+ <xs:documentation>Percentage</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_Percentage">
+ <attribute name="val">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_PositivePercentage">
+ <empty/>
+ </define>
+ <define name="CT_PositivePercentage">
+ <attribute name="val">
+ <ref name="ST_PositivePercentage"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_FixedPercentage">
+ <empty/>
+ </define>
+ <define name="CT_FixedPercentage">
+ <attribute name="val">
+ <ref name="ST_FixedPercentage"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_PositiveFixedPercentage">
+ <empty/>
+ </define>
+ <define name="CT_PositiveFixedPercentage">
+ <attribute name="val">
+ <ref name="ST_PositiveFixedPercentage"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Ratio">
+ <attribute name="n">
+ <data type="long">
+ <xs:documentation>Numerator</xs:documentation>
+ </data>
+ <xs:documentation>Numerator</xs:documentation>
+ </attribute>
+ <attribute name="d">
+ <data type="long">
+ <xs:documentation>Denominator</xs:documentation>
+ </data>
+ <xs:documentation>Denominator</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Point2D">
+ <attribute name="x">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>X-Axis Coordinate</xs:documentation>
+ </attribute>
+ <attribute name="y">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Y-Axis Coordinate</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_PositiveSize2D">
+ <attribute name="cx">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Extent Length</xs:documentation>
+ </attribute>
+ <attribute name="cy">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Extent Width</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ComplementTransform">
+ <empty/>
+ </define>
+ <define name="CT_InverseTransform">
+ <empty/>
+ </define>
+ <define name="CT_GrayscaleTransform">
+ <empty/>
+ </define>
+ <define name="CT_GammaTransform">
+ <empty/>
+ </define>
+ <define name="CT_InverseGammaTransform">
+ <empty/>
+ </define>
+ <define name="EG_ColorTransform">
+ <choice>
+ <element name="tint">
+ <ref name="CT_PositiveFixedPercentage"/>
+ </element>
+ <element name="shade">
+ <ref name="CT_PositiveFixedPercentage"/>
+ </element>
+ <element name="comp">
+ <ref name="CT_ComplementTransform"/>
+ </element>
+ <element name="inv">
+ <ref name="CT_InverseTransform"/>
+ </element>
+ <element name="gray">
+ <ref name="CT_GrayscaleTransform"/>
+ </element>
+ <element name="alpha">
+ <ref name="CT_PositiveFixedPercentage"/>
+ </element>
+ <element name="alphaOff">
+ <ref name="CT_FixedPercentage"/>
+ </element>
+ <element name="alphaMod">
+ <ref name="CT_PositivePercentage"/>
+ </element>
+ <element name="hue">
+ <ref name="CT_PositiveFixedAngle"/>
+ </element>
+ <element name="hueOff">
+ <ref name="CT_Angle"/>
+ </element>
+ <element name="hueMod">
+ <ref name="CT_PositivePercentage"/>
+ </element>
+ <element name="sat">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="satOff">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="satMod">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="lum">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="lumOff">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="lumMod">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="red">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="redOff">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="redMod">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="green">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="greenOff">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="greenMod">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="blue">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="blueOff">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="blueMod">
+ <ref name="CT_Percentage"/>
+ </element>
+ <element name="gamma">
+ <ref name="CT_GammaTransform"/>
+ </element>
+ <element name="invGamma">
+ <ref name="CT_InverseGammaTransform"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_ScRgbColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="r">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Red</xs:documentation>
+ </attribute>
+ <attribute name="g">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Green</xs:documentation>
+ </attribute>
+ <attribute name="b">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Blue</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_HexBinary3">
+ <data type="hexBinary">
+ <xs:documentation>Hex Binary of Length 3</xs:documentation>
+ <param name="length">3</param>
+ </data>
+ </define>
+ <define name="CT_SRgbColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="val">
+ <ref name="ST_HexBinary3"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_HslColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="hue">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Hue</xs:documentation>
+ </attribute>
+ <attribute name="sat">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Saturation</xs:documentation>
+ </attribute>
+ <attribute name="lum">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Luminance</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_SystemColorVal">
+ <list>
+ <xs:documentation>System Color Value</xs:documentation>
+ <choice>
+ <!-- Scroll Bar System Color -->
+ <value>scrollBar</value>
+ <!-- Background System Color -->
+ <value>background</value>
+ <!-- Active Caption System Color -->
+ <value>activeCaption</value>
+ <!-- Inactive Caption System Color -->
+ <value>inactiveCaption</value>
+ <!-- Menu System Color -->
+ <value>menu</value>
+ <!-- Window System Color -->
+ <value>window</value>
+ <!-- Window Frame System Color -->
+ <value>windowFrame</value>
+ <!-- Menu Text System Color -->
+ <value>menuText</value>
+ <!-- Window Text System Color -->
+ <value>windowText</value>
+ <!-- Caption Text System Color -->
+ <value>captionText</value>
+ <!-- Active Border System Color -->
+ <value>activeBorder</value>
+ <!-- Inactive Border System Color -->
+ <value>inactiveBorder</value>
+ <!-- Application Workspace System Color -->
+ <value>appWorkspace</value>
+ <!-- Highlight System Color -->
+ <value>highlight</value>
+ <!-- Highlight Text System Color -->
+ <value>highlightText</value>
+ <!-- Button Face System Color -->
+ <value>btnFace</value>
+ <!-- Button Shadow System Color -->
+ <value>btnShadow</value>
+ <!-- Gray Text System Color -->
+ <value>grayText</value>
+ <!-- Button Text System Color -->
+ <value>btnText</value>
+ <!-- Inactive Caption Text System Color -->
+ <value>inactiveCaptionText</value>
+ <!-- Button Highlight System Color -->
+ <value>btnHighlight</value>
+ <!-- 3D Dark System Color -->
+ <value>3dDkShadow</value>
+ <!-- 3D Light System Color -->
+ <value>3dLight</value>
+ <!-- Info Text System Color -->
+ <value>infoText</value>
+ <!-- Info Back System Color -->
+ <value>infoBk</value>
+ <!-- Hot Light System Color -->
+ <value>hotLight</value>
+ <!-- Gradient Active Caption System Color -->
+ <value>gradientActiveCaption</value>
+ <!-- Gradient Inactive Caption System Color -->
+ <value>gradientInactiveCaption</value>
+ <!-- Menu Highlight System Color -->
+ <value>menuHighlight</value>
+ <!-- Menu Bar System Color -->
+ <value>menuBar</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_SystemColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="val">
+ <ref name="ST_SystemColorVal"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="lastClr">
+ <ref name="ST_HexBinary3"/>
+ <xs:documentation>Last Color</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_SchemeColorVal">
+ <list>
+ <xs:documentation>Scheme Color</xs:documentation>
+ <choice>
+ <!-- Background Color 1 -->
+ <value>bg1</value>
+ <!-- Text Color 1 -->
+ <value>tx1</value>
+ <!-- Background Color 2 -->
+ <value>bg2</value>
+ <!-- Text Color 2 -->
+ <value>tx2</value>
+ <!-- Accent Color 1 -->
+ <value>accent1</value>
+ <!-- Accent Color 2 -->
+ <value>accent2</value>
+ <!-- Accent Color 3 -->
+ <value>accent3</value>
+ <!-- Accent Color 4 -->
+ <value>accent4</value>
+ <!-- Accent Color 5 -->
+ <value>accent5</value>
+ <!-- Accent Color 6 -->
+ <value>accent6</value>
+ <!-- Hyperlink Color -->
+ <value>hlink</value>
+ <!-- Followed Hyperlink Color -->
+ <value>folHlink</value>
+ <!-- Style Color -->
+ <value>phClr</value>
+ <!-- Dark Color 1 -->
+ <value>dk1</value>
+ <!-- Light Color 1 -->
+ <value>lt1</value>
+ <!-- Dark Color 2 -->
+ <value>dk2</value>
+ <!-- Light Color 2 -->
+ <value>lt2</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_SchemeColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="val">
+ <ref name="ST_SchemeColorVal"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_PresetColorVal">
+ <list>
+ <xs:documentation>Preset Color Value</xs:documentation>
+ <choice>
+ <!-- Alice Blue Preset Color -->
+ <value>aliceBlue</value>
+ <!-- Antique White Preset Color -->
+ <value>antiqueWhite</value>
+ <!-- Aqua Preset Color -->
+ <value>aqua</value>
+ <!-- Aquamarine Preset Color -->
+ <value>aquamarine</value>
+ <!-- Azure Preset Color -->
+ <value>azure</value>
+ <!-- Beige Preset Color -->
+ <value>beige</value>
+ <!-- Bisque Preset Color -->
+ <value>bisque</value>
+ <!-- Black Preset Color -->
+ <value>black</value>
+ <!-- Blanched Almond Preset Color -->
+ <value>blanchedAlmond</value>
+ <!-- Blue Preset Color -->
+ <value>blue</value>
+ <!-- Blue Violet Preset Color -->
+ <value>blueViolet</value>
+ <!-- Brown Preset Color -->
+ <value>brown</value>
+ <!-- Burly Wood Preset Color -->
+ <value>burlyWood</value>
+ <!-- Cadet Blue Preset Color -->
+ <value>cadetBlue</value>
+ <!-- Chartreuse Preset Color -->
+ <value>chartreuse</value>
+ <!-- Chocolate Preset Color -->
+ <value>chocolate</value>
+ <!-- Coral Preset Color -->
+ <value>coral</value>
+ <!-- Cornflower Blue Preset Color -->
+ <value>cornflowerBlue</value>
+ <!-- Cornsilk Preset Color -->
+ <value>cornsilk</value>
+ <!-- Crimson Preset Color -->
+ <value>crimson</value>
+ <!-- Cyan Preset Color -->
+ <value>cyan</value>
+ <!-- Dark Blue Preset Color -->
+ <value>dkBlue</value>
+ <!-- Dark Cyan Preset Color -->
+ <value>dkCyan</value>
+ <!-- Dark Goldenrod Preset Color -->
+ <value>dkGoldenrod</value>
+ <!-- Dark Gray Preset Color -->
+ <value>dkGray</value>
+ <!-- Dark Green Preset Color -->
+ <value>dkGreen</value>
+ <!-- Dark Khaki Preset Color -->
+ <value>dkKhaki</value>
+ <!-- Dark Magenta Preset Color -->
+ <value>dkMagenta</value>
+ <!-- Dark Olive Green Preset Color -->
+ <value>dkOliveGreen</value>
+ <!-- Dark Orange Preset Color -->
+ <value>dkOrange</value>
+ <!-- Dark Orchid Preset Color -->
+ <value>dkOrchid</value>
+ <!-- Dark Red Preset Color -->
+ <value>dkRed</value>
+ <!-- Dark Salmon Preset Color -->
+ <value>dkSalmon</value>
+ <!-- Dark Sea Green Preset Color -->
+ <value>dkSeaGreen</value>
+ <!-- Dark Slate Blue Preset Color -->
+ <value>dkSlateBlue</value>
+ <!-- Dark Slate Gray Preset Color -->
+ <value>dkSlateGray</value>
+ <!-- Dark Turquoise Preset Color -->
+ <value>dkTurquoise</value>
+ <!-- Dark Violet Preset Color -->
+ <value>dkViolet</value>
+ <!-- Deep Pink Preset Color -->
+ <value>deepPink</value>
+ <!-- Deep Sky Blue Preset Color -->
+ <value>deepSkyBlue</value>
+ <!-- Dim Gray Preset Color -->
+ <value>dimGray</value>
+ <!-- Dodger Blue Preset Color -->
+ <value>dodgerBlue</value>
+ <!-- Firebrick Preset Color -->
+ <value>firebrick</value>
+ <!-- Floral White Preset Color -->
+ <value>floralWhite</value>
+ <!-- Forest Green Preset Color -->
+ <value>forestGreen</value>
+ <!-- Fuchsia Preset Color -->
+ <value>fuchsia</value>
+ <!-- Gainsboro Preset Color -->
+ <value>gainsboro</value>
+ <!-- Ghost White Preset Color -->
+ <value>ghostWhite</value>
+ <!-- Gold Preset Color -->
+ <value>gold</value>
+ <!-- Goldenrod Preset Color -->
+ <value>goldenrod</value>
+ <!-- Gray Preset Color -->
+ <value>gray</value>
+ <!-- Green Preset Color -->
+ <value>green</value>
+ <!-- Green Yellow Preset Color -->
+ <value>greenYellow</value>
+ <!-- Honeydew Preset Color -->
+ <value>honeydew</value>
+ <!-- Hot Pink Preset Color -->
+ <value>hotPink</value>
+ <!-- Indian Red Preset Color -->
+ <value>indianRed</value>
+ <!-- Indigo Preset Color -->
+ <value>indigo</value>
+ <!-- Ivory Preset Color -->
+ <value>ivory</value>
+ <!-- Khaki Preset Color -->
+ <value>khaki</value>
+ <!-- Lavender Preset Color -->
+ <value>lavender</value>
+ <!-- Lavender Blush Preset Color -->
+ <value>lavenderBlush</value>
+ <!-- Lawn Green Preset Color -->
+ <value>lawnGreen</value>
+ <!-- Lemon Chiffon Preset Color -->
+ <value>lemonChiffon</value>
+ <!-- Light Blue Preset Color -->
+ <value>ltBlue</value>
+ <!-- Light Coral Preset Color -->
+ <value>ltCoral</value>
+ <!-- Light Cyan Preset Color -->
+ <value>ltCyan</value>
+ <!-- Light Goldenrod Yellow Preset Color -->
+ <value>ltGoldenrodYellow</value>
+ <!-- Light Gray Preset Color -->
+ <value>ltGray</value>
+ <!-- Light Green Preset Color -->
+ <value>ltGreen</value>
+ <!-- Light Pink Preset Color -->
+ <value>ltPink</value>
+ <!-- Light Salmon Preset Color -->
+ <value>ltSalmon</value>
+ <!-- Light Sea Green Preset Color -->
+ <value>ltSeaGreen</value>
+ <!-- Light Sky Blue Preset Color -->
+ <value>ltSkyBlue</value>
+ <!-- Light Slate Gray Preset Color -->
+ <value>ltSlateGray</value>
+ <!-- Light Steel Blue Preset Color -->
+ <value>ltSteelBlue</value>
+ <!-- Light Yellow Preset Color -->
+ <value>ltYellow</value>
+ <!-- Lime Preset Color -->
+ <value>lime</value>
+ <!-- Lime Green Preset Color -->
+ <value>limeGreen</value>
+ <!-- Linen Preset Color -->
+ <value>linen</value>
+ <!-- Magenta Preset Color -->
+ <value>magenta</value>
+ <!-- Maroon Preset Color -->
+ <value>maroon</value>
+ <!-- Medium Aquamarine Preset Color -->
+ <value>medAquamarine</value>
+ <!-- Medium Blue Preset Color -->
+ <value>medBlue</value>
+ <!-- Medium Orchid Preset Color -->
+ <value>medOrchid</value>
+ <!-- Medium Purple Preset Color -->
+ <value>medPurple</value>
+ <!-- Medium Sea Green Preset Color -->
+ <value>medSeaGreen</value>
+ <!-- Medium Slate Blue Preset Color -->
+ <value>medSlateBlue</value>
+ <!-- Medium Spring Green Preset Color -->
+ <value>medSpringGreen</value>
+ <!-- Medium Turquoise Preset Color -->
+ <value>medTurquoise</value>
+ <!-- Medium Violet Red Preset Color -->
+ <value>medVioletRed</value>
+ <!-- Midnight Blue Preset Color -->
+ <value>midnightBlue</value>
+ <!-- Mint Cream Preset Color -->
+ <value>mintCream</value>
+ <!-- Misty Rose Preset Color -->
+ <value>mistyRose</value>
+ <!-- Moccasin Preset Color -->
+ <value>moccasin</value>
+ <!-- Navajo White Preset Color -->
+ <value>navajoWhite</value>
+ <!-- Navy Preset Color -->
+ <value>navy</value>
+ <!-- Old Lace Preset Color -->
+ <value>oldLace</value>
+ <!-- Olive Preset Color -->
+ <value>olive</value>
+ <!-- Olive Drab Preset Color -->
+ <value>oliveDrab</value>
+ <!-- Orange Preset Color -->
+ <value>orange</value>
+ <!-- Orange Red Preset Color -->
+ <value>orangeRed</value>
+ <!-- Orchid Preset Color -->
+ <value>orchid</value>
+ <!-- Pale Goldenrod Preset Color -->
+ <value>paleGoldenrod</value>
+ <!-- Pale Green Preset Color -->
+ <value>paleGreen</value>
+ <!-- Pale Turquoise Preset Color -->
+ <value>paleTurquoise</value>
+ <!-- Pale Violet Red Preset Color -->
+ <value>paleVioletRed</value>
+ <!-- Papaya Whip Preset Color -->
+ <value>papayaWhip</value>
+ <!-- Peach Puff Preset Color -->
+ <value>peachPuff</value>
+ <!-- Peru Preset Color -->
+ <value>peru</value>
+ <!-- Pink Preset Color -->
+ <value>pink</value>
+ <!-- Plum Preset Color -->
+ <value>plum</value>
+ <!-- Powder Blue Preset Color -->
+ <value>powderBlue</value>
+ <!-- Purple Preset Color -->
+ <value>purple</value>
+ <!-- Red Preset Color -->
+ <value>red</value>
+ <!-- Rosy Brown Preset Color -->
+ <value>rosyBrown</value>
+ <!-- Royal Blue Preset Color -->
+ <value>royalBlue</value>
+ <!-- Saddle Brown Preset Color -->
+ <value>saddleBrown</value>
+ <!-- Salmon Preset Color -->
+ <value>salmon</value>
+ <!-- Sandy Brown Preset Color -->
+ <value>sandyBrown</value>
+ <!-- Sea Green Preset Color -->
+ <value>seaGreen</value>
+ <!-- Sea Shell Preset Color -->
+ <value>seaShell</value>
+ <!-- Sienna Preset Color -->
+ <value>sienna</value>
+ <!-- Silver Preset Color -->
+ <value>silver</value>
+ <!-- Sky Blue Preset Color -->
+ <value>skyBlue</value>
+ <!-- Slate Blue Preset Color -->
+ <value>slateBlue</value>
+ <!-- Slate Gray Preset Color -->
+ <value>slateGray</value>
+ <!-- Snow Preset Color -->
+ <value>snow</value>
+ <!-- Spring Green Preset Color -->
+ <value>springGreen</value>
+ <!-- Steel Blue Preset Color -->
+ <value>steelBlue</value>
+ <!-- Tan Preset Color -->
+ <value>tan</value>
+ <!-- Teal Preset Color -->
+ <value>teal</value>
+ <!-- Thistle Preset Color -->
+ <value>thistle</value>
+ <!-- Tomato Preset Color -->
+ <value>tomato</value>
+ <!-- Turquoise Preset Color -->
+ <value>turquoise</value>
+ <!-- Violet Preset Color -->
+ <value>violet</value>
+ <!-- Wheat Preset Color -->
+ <value>wheat</value>
+ <!-- White Preset Color -->
+ <value>white</value>
+ <!-- White Smoke Preset Color -->
+ <value>whiteSmoke</value>
+ <!-- Yellow Preset Color -->
+ <value>yellow</value>
+ <!-- Yellow Green Preset Color -->
+ <value>yellowGreen</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PresetColor">
+ <zeroOrMore>
+ <ref name="EG_ColorTransform"/>
+ </zeroOrMore>
+ <attribute name="val">
+ <ref name="ST_PresetColorVal"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="EG_OfficeArtExtensionList">
+ <zeroOrMore>
+ <element name="ext">
+ <ref name="CT_OfficeArtExtension"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_OfficeArtExtensionList">
+ <ref name="EG_OfficeArtExtensionList"/>
+ </define>
+ <define name="CT_Scale2D">
+ <element name="sx">
+ <ref name="CT_Ratio"/>
+ </element>
+ <element name="sy">
+ <ref name="CT_Ratio"/>
+ </element>
+ </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"/>
+ <xs:documentation>Rotation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flipH">
+ <data type="boolean">
+ <xs:documentation>Horizontal Flip</xs:documentation>
+ </data>
+ <xs:documentation>Horizontal Flip</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flipV">
+ <data type="boolean">
+ <xs:documentation>Vertical Flip</xs:documentation>
+ </data>
+ <xs:documentation>Vertical Flip</xs:documentation>
+ </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"/>
+ <xs:documentation>Rotation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flipH">
+ <data type="boolean">
+ <xs:documentation>Horizontal Flip</xs:documentation>
+ </data>
+ <xs:documentation>Horizontal Flip</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flipV">
+ <data type="boolean">
+ <xs:documentation>Vertical Flip</xs:documentation>
+ </data>
+ <xs:documentation>Vertical Flip</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Point3D">
+ <attribute name="x">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>X-Coordinate in 3D</xs:documentation>
+ </attribute>
+ <attribute name="y">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Y-Coordinate in 3D</xs:documentation>
+ </attribute>
+ <attribute name="z">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Z-Coordinate in 3D</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Vector3D">
+ <attribute name="dx">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Distance along X-axis in 3D</xs:documentation>
+ </attribute>
+ <attribute name="dy">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Distance along Y-axis in 3D</xs:documentation>
+ </attribute>
+ <attribute name="dz">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Distance along Z-axis in 3D</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SphereCoords">
+ <attribute name="lat">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Latitude</xs:documentation>
+ </attribute>
+ <attribute name="lon">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Longitude</xs:documentation>
+ </attribute>
+ <attribute name="rev">
+ <ref name="ST_PositiveFixedAngle"/>
+ <xs:documentation>Revolution</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_RelativeRect">
+ <optional>
+ <attribute name="l">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Left Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="t">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Top Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Right Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="b">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Bottom Offset</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_RectAlignment">
+ <list>
+ <xs:documentation>Rectangle Alignments</xs:documentation>
+ <choice>
+ <!-- Rectangle Alignment Enum ( Top Left ) -->
+ <value>tl</value>
+ <!-- Rectangle Alignment Enum ( Top ) -->
+ <value>t</value>
+ <!-- Rectangle Alignment Enum ( Top Right ) -->
+ <value>tr</value>
+ <!-- Rectangle Alignment Enum ( Left ) -->
+ <value>l</value>
+ <!-- Rectangle Alignment Enum ( Center ) -->
+ <value>ctr</value>
+ <!-- Rectangle Alignment Enum ( Right ) -->
+ <value>r</value>
+ <!-- Rectangle Alignment Enum ( Bottom Left ) -->
+ <value>bl</value>
+ <!-- Rectangle Alignment Enum ( Bottom ) -->
+ <value>b</value>
+ <!-- Rectangle Alignment Enum ( Bottom Right ) -->
+ <value>br</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_Guid">
+ <data type="token">
+ <xs:documentation>GUID Method</xs:documentation>
+ <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
+ </data>
+ </define>
+ <define name="EG_ColorChoice">
+ <choice>
+ <element name="scrgbClr">
+ <ref name="CT_ScRgbColor"/>
+ </element>
+ <element name="srgbClr">
+ <ref name="CT_SRgbColor"/>
+ </element>
+ <element name="hslClr">
+ <ref name="CT_HslColor"/>
+ </element>
+ <element name="sysClr">
+ <ref name="CT_SystemColor"/>
+ </element>
+ <element name="schemeClr">
+ <ref name="CT_SchemeColor"/>
+ </element>
+ <element name="prstClr">
+ <ref name="CT_PresetColor"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_Color">
+ <ref name="EG_ColorChoice"/>
+ </define>
+ <define name="CT_ColorMRU">
+ <zeroOrMore>
+ <ref name="EG_ColorChoice"/>
+ </zeroOrMore>
+ </define>
+ <define name="ST_BlackWhiteMode">
+ <list>
+ <xs:documentation>Black and White Mode</xs:documentation>
+ <choice>
+ <!-- Color -->
+ <value>clr</value>
+ <!-- Automatic -->
+ <value>auto</value>
+ <!-- Gray -->
+ <value>gray</value>
+ <!-- Light Gray -->
+ <value>ltGray</value>
+ <!-- Inverse Gray -->
+ <value>invGray</value>
+ <!-- Gray and White -->
+ <value>grayWhite</value>
+ <!-- Black and Gray -->
+ <value>blackGray</value>
+ <!-- Black and White -->
+ <value>blackWhite</value>
+ <!-- Black -->
+ <value>black</value>
+ <!-- White -->
+ <value>white</value>
+ <!-- Hidden -->
+ <value>hidden</value>
+ </choice>
+ </list>
+ </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">
+ <xs:documentation>Sound Name</xs:documentation>
+ </data>
+ <xs:documentation>Sound Name</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="builtIn">
+ <data type="boolean">
+ <xs:documentation>Recognized Built-In Sound</xs:documentation>
+ </data>
+ <xs:documentation>Recognized Built-In Sound</xs:documentation>
+ </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">
+ <xs:documentation>Invalid URL</xs:documentation>
+ </data>
+ <xs:documentation>Invalid URL</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="action">
+ <data type="string">
+ <xs:documentation>Action Setting</xs:documentation>
+ </data>
+ <xs:documentation>Action Setting</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tgtFrame">
+ <data type="string">
+ <xs:documentation>Target Frame</xs:documentation>
+ </data>
+ <xs:documentation>Target Frame</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tooltip">
+ <data type="string">
+ <xs:documentation>Hyperlink Tooltip</xs:documentation>
+ </data>
+ <xs:documentation>Hyperlink Tooltip</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="history">
+ <data type="boolean">
+ <xs:documentation>Add Hyperlink to Page History</xs:documentation>
+ </data>
+ <xs:documentation>Add Hyperlink to Page History</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="highlightClick">
+ <data type="boolean">
+ <xs:documentation>Highlight Click</xs:documentation>
+ </data>
+ <xs:documentation>Highlight Click</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endSnd">
+ <data type="boolean">
+ <xs:documentation>End Sounds</xs:documentation>
+ </data>
+ <xs:documentation>End Sounds</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_DrawingElementId">
+ <data type="unsignedInt">
+ <xs:documentation>Drawing Element ID</xs:documentation>
+ </data>
+ </define>
+ </grammar>
+ <resource name="ST_Coordinate" resource="Integer" generated="yes"/>
+ <resource name="ST_Coordinate32" resource="Integer" generated="yes"/>
+ <resource name="ST_PositiveCoordinate" resource="Integer" generated="yes"/>
+ <resource name="ST_Angle" resource="Integer" generated="yes"/>
+ <resource name="CT_Angle" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Angle_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="CT_PositiveFixedAngle" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_PositiveFixedAngle_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Percentage" resource="Integer" generated="yes"/>
+ <resource name="CT_Percentage" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Percentage_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="CT_PositivePercentage" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_PositivePercentage_val" action="setValue"/>
+ </resource>
+ <resource name="CT_FixedPercentage" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FixedPercentage_val" action="setValue"/>
+ </resource>
+ <resource name="CT_PositiveFixedPercentage" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_PositiveFixedPercentage_val" action="setValue"/>
+ </resource>
+ <resource name="CT_Point2D" resource="Properties">
+ <attribute name="x" tokenid="ooxml:CT_Point2D_x"/>
+ <attribute name="y" tokenid="ooxml:CT_Point2D_y"/>
+ </resource>
+ <resource name="CT_PositiveSize2D" resource="Properties">
+ <attribute name="cx" tokenid="ooxml:CT_PositiveSize2D_cx"/>
+ <attribute name="cy" tokenid="ooxml:CT_PositiveSize2D_cy"/>
+ </resource>
+ <resource name="CT_ScRgbColor" resource="Properties">
+ <attribute name="r" tokenid="ooxml:CT_ScRgbColor_r"/>
+ <attribute name="g" tokenid="ooxml:CT_ScRgbColor_g"/>
+ <attribute name="b" tokenid="ooxml:CT_ScRgbColor_b"/>
+ </resource>
+ <resource name="ST_HexBinary3" resource="Hex" generated="yes"/>
+ <resource name="CT_SRgbColor" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_SRgbColor_val"/>
+ </resource>
+ <resource name="CT_HslColor" resource="Properties">
+ <attribute name="hue" tokenid="ooxml:CT_HslColor_hue"/>
+ <attribute name="sat" tokenid="ooxml:CT_HslColor_sat"/>
+ <attribute name="lum" tokenid="ooxml:CT_HslColor_lum"/>
+ </resource>
+ <resource name="ST_SystemColorVal" resource="List" generated="yes">
+ <value name="scrollBar" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_scrollBar">scrollBar</value>
+ <value name="background" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_background">background</value>
+ <value name="activeCaption" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_activeCaption">activeCaption</value>
+ <value name="inactiveCaption" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_inactiveCaption">inactiveCaption</value>
+ <value name="menu" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_menu">menu</value>
+ <value name="window" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_window">window</value>
+ <value name="windowFrame" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_windowFrame">windowFrame</value>
+ <value name="menuText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_menuText">menuText</value>
+ <value name="windowText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_windowText">windowText</value>
+ <value name="captionText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_captionText">captionText</value>
+ <value name="activeBorder" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_activeBorder">activeBorder</value>
+ <value name="inactiveBorder" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_inactiveBorder">inactiveBorder</value>
+ <value name="appWorkspace" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_appWorkspace">appWorkspace</value>
+ <value name="highlight" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_highlight">highlight</value>
+ <value name="highlightText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_highlightText">highlightText</value>
+ <value name="btnFace" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_btnFace">btnFace</value>
+ <value name="btnShadow" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_btnShadow">btnShadow</value>
+ <value name="grayText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_grayText">grayText</value>
+ <value name="btnText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_btnText">btnText</value>
+ <value name="inactiveCaptionText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_inactiveCaptionText">inactiveCaptionText</value>
+ <value name="btnHighlight" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_btnHighlight">btnHighlight</value>
+ <value name="3dDkShadow" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_3dDkShadow">3dDkShadow</value>
+ <value name="3dLight" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_3dLight">3dLight</value>
+ <value name="infoText" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_infoText">infoText</value>
+ <value name="infoBk" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_infoBk">infoBk</value>
+ <value name="hotLight" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_hotLight">hotLight</value>
+ <value name="gradientActiveCaption" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_gradientActiveCaption">gradientActiveCaption</value>
+ <value name="gradientInactiveCaption" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_gradientInactiveCaption">gradientInactiveCaption</value>
+ <value name="menuHighlight" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_menuHighlight">menuHighlight</value>
+ <value name="menuBar" tokenid="ooxml:Value_drawingml_ST_SystemColorVal_menuBar">menuBar</value>
+ </resource>
+ <resource name="CT_SystemColor" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_SystemColor_val"/>
+ <attribute name="lastClr" tokenid="ooxml:CT_SytemColor_lastClr"/>
+ </resource>
+ <resource name="ST_SchemeColorVal" resource="List" generated="yes">
+ <value name="bg1" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_bg1">bg1</value>
+ <value name="tx1" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_tx1">tx1</value>
+ <value name="bg2" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_bg2">bg2</value>
+ <value name="tx2" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_tx2">tx2</value>
+ <value name="accent1" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent1">accent1</value>
+ <value name="accent2" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent2">accent2</value>
+ <value name="accent3" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent3">accent3</value>
+ <value name="accent4" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent4">accent4</value>
+ <value name="accent5" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent5">accent5</value>
+ <value name="accent6" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_accent6">accent6</value>
+ <value name="hlink" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_hlink">hlink</value>
+ <value name="folHlink" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_folHlink">folHlink</value>
+ <value name="phClr" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_phClr">phClr</value>
+ <value name="dk1" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_dk1">dk1</value>
+ <value name="lt1" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_lt1">lt1</value>
+ <value name="dk2" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_dk2">dk2</value>
+ <value name="lt2" tokenid="ooxml:Value_drawingml_ST_SchemeColorVal_lt2">lt2</value>
+ </resource>
+ <resource name="CT_SchemeColor" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_SchemeColor_val"/>
+ </resource>
+ <resource name="ST_PresetColorVal" resource="List">
+ <value tokenid="0xf0f8ff">aliceBlue</value>
+ <value tokenid="0xfaebd7">antiqueWhite</value>
+ <value tokenid="0x00ffff">aqua</value>
+ <value tokenid="0x7fffd4">aquamarine</value>
+ <value tokenid="0xf0ffff">azure</value>
+ <value tokenid="0xf5f5dc">beige</value>
+ <value tokenid="0xffe4c4">bisque</value>
+ <value tokenid="0x000000">black</value>
+ <value tokenid="0xffebcd">blanchedAlmond</value>
+ <value tokenid="0x0000ff">blue</value>
+ <value tokenid="0x8a2be2">blueViolet</value>
+ <value tokenid="0xa52a2a">brown</value>
+ <value tokenid="0xdeb887">burlyWood</value>
+ <value tokenid="0x5f9ea0">cadetBlue</value>
+ <value tokenid="0x7fff00">chartreuse</value>
+ <value tokenid="0xd2691e">chocolate</value>
+ <value tokenid="0xff7f50">coral</value>
+ <value tokenid="0x6495ed">cornflowerBlue</value>
+ <value tokenid="0xfff8dc">cornsilk</value>
+ <value tokenid="0xdc143c">crimson</value>
+ <value tokenid="0x00ffff">cyan</value>
+ <value tokenid="0xff1493">deepPink</value>
+ <value tokenid="0x00bfff">deepSkyBlue</value>
+ <value tokenid="0x696969">dimGray</value>
+ <value tokenid="0x00008b">dkBlue</value>
+ <value tokenid="0x008b8b">dkCyan</value>
+ <value tokenid="0xb8860b">dkGoldenrod</value>
+ <value tokenid="0xa9a9a9">dkGray</value>
+ <value tokenid="0x006400">dkGreen</value>
+ <value tokenid="0xbdb76b">dkKhaki</value>
+ <value tokenid="0x8b008b">dkMagenta</value>
+ <value tokenid="0x556b2f">dkOliveGreen</value>
+ <value tokenid="0xff8c00">dkOrange</value>
+ <value tokenid="0x9932cc">dkOrchid</value>
+ <value tokenid="0x8b0000">dkRed</value>
+ <value tokenid="0xe9967a">dkSalmon</value>
+ <value tokenid="0x8fbc8b">dkSeaGreen</value>
+ <value tokenid="0x483d8b">dkSlateBlue</value>
+ <value tokenid="0x2f4f4f">dkSlateGray</value>
+ <value tokenid="0x00ced1">dkTurquoise</value>
+ <value tokenid="0x9400d3">dkViolet</value>
+ <value tokenid="0x1e90ff">dodgerBlue</value>
+ <value tokenid="0xb22222">firebrick</value>
+ <value tokenid="0xfffaf0">floralWhite</value>
+ <value tokenid="0x228b22">forestGreen</value>
+ <value tokenid="0xff00ff">fuchsia</value>
+ <value tokenid="0xdcdcdc">gainsboro</value>
+ <value tokenid="0xf8f8ff">ghostWhite</value>
+ <value tokenid="0xffd700">gold</value>
+ <value tokenid="0xdaa520">goldenrod</value>
+ <value tokenid="0x808080">gray</value>
+ <value tokenid="0x008000">green</value>
+ <value tokenid="0xadff2f">greenYellow</value>
+ <value tokenid="0xf0fff0">honeydew</value>
+ <value tokenid="0xff69b4">hotPink</value>
+ <value tokenid="0xcd5c5c">indianRed</value>
+ <value tokenid="0x4b0082">indigo</value>
+ <value tokenid="0xfffff0">ivory</value>
+ <value tokenid="0xf0e68c">khaki</value>
+ <value tokenid="0xe6e6fa">lavender</value>
+ <value tokenid="0xfff0f5">lavenderBlush</value>
+ <value tokenid="0x7cfc00">lawnGreen</value>
+ <value tokenid="0xfffacd">lemonChiffon</value>
+ <value tokenid="0x00ff00">lime</value>
+ <value tokenid="0x32cd32">limeGreen</value>
+ <value tokenid="0xfaf0e6">linen</value>
+ <value tokenid="0xadd8e6">ltBlue</value>
+ <value tokenid="0xf08080">ltCoral</value>
+ <value tokenid="0xe0ffff">ltCyan</value>
+ <value tokenid="0xfafa78">ltGoldenrodYellow</value>
+ <value tokenid="0xd3d3d3">ltGray</value>
+ <value tokenid="0x90ee90">ltGreen</value>
+ <value tokenid="0xffb6c1">ltPink</value>
+ <value tokenid="0xffa07a">ltSalmon</value>
+ <value tokenid="0x20b2aa">ltSeaGreen</value>
+ <value tokenid="0x87cefa">ltSkyBlue</value>
+ <value tokenid="0x778899">ltSlateGray</value>
+ <value tokenid="0xb0c4de">ltSteelBlue</value>
+ <value tokenid="0xffffe0">ltYellow</value>
+ <value tokenid="0xff00ff">magenta</value>
+ <value tokenid="0x800000">maroon</value>
+ <value tokenid="0x66cdaa">medAquamarine</value>
+ <value tokenid="0x0000cd">medBlue</value>
+ <value tokenid="0xba55d3">medOrchid</value>
+ <value tokenid="0x9370db">medPurple</value>
+ <value tokenid="0x3cb371">medSeaGreen</value>
+ <value tokenid="0x7b68ee">medSlateBlue</value>
+ <value tokenid="0x00fa9a">medSpringGreen</value>
+ <value tokenid="0x48d1cc">medTurquoise</value>
+ <value tokenid="0xc71585">medVioletRed</value>
+ <value tokenid="0x191970">midnightBlue</value>
+ <value tokenid="0xf5fffa">mintCream</value>
+ <value tokenid="0xffe4e1">mistyRose</value>
+ <value tokenid="0xffe4b5">moccasin</value>
+ <value tokenid="0xffdead">navajoWhite</value>
+ <value tokenid="0x000080">navy</value>
+ <value tokenid="0xfdf5e6">oldLace</value>
+ <value tokenid="0x808000">olive</value>
+ <value tokenid="0x6b8e23">oliveDrab</value>
+ <value tokenid="0xffa500">orange</value>
+ <value tokenid="0xff4500">orangeRed</value>
+ <value tokenid="0xda70d6">orchid</value>
+ <value tokenid="0xeee8aa">paleGoldenrod</value>
+ <value tokenid="0x98fb98">paleGreen</value>
+ <value tokenid="0xafeeee">paleTurquoise</value>
+ <value tokenid="0xdb7093">paleVioletRed</value>
+ <value tokenid="0xffefd5">papayaWhip</value>
+ <value tokenid="0xffdab9">peachPuff</value>
+ <value tokenid="0xcd853f">peru</value>
+ <value tokenid="0xffc0cb">pink</value>
+ <value tokenid="0xdda0dd">plum</value>
+ <value tokenid="0xb0e0e6">powderBlue</value>
+ <value tokenid="0x800080">purple</value>
+ <value tokenid="0xff0000">red</value>
+ <value tokenid="0xbc8f8f">rosyBrown</value>
+ <value tokenid="0x4169e1">royalBlue</value>
+ <value tokenid="0x8b4513">saddleBrown</value>
+ <value tokenid="0xfa8072">salmon</value>
+ <value tokenid="0xf4a460">sandyBrown</value>
+ <value tokenid="0x2e8b57">seaGreen</value>
+ <value tokenid="0xfff5ee">seaShell</value>
+ <value tokenid="0xa0522d">sienna</value>
+ <value tokenid="0xc0c0c0">silver</value>
+ <value tokenid="0x87ceeb">skyBlue</value>
+ <value tokenid="0x6a5acd">slateBlue</value>
+ <value tokenid="0x708090">slateGray</value>
+ <value tokenid="0xfffafa">snow</value>
+ <value tokenid="0x00ff7f">springGreen</value>
+ <value tokenid="0x4682b4">steelBlue</value>
+ <value tokenid="0xd2b48c">tan</value>
+ <value tokenid="0x008080">teal</value>
+ <value tokenid="0xd8bfd8">thistle</value>
+ <value tokenid="0xff6347">tomato</value>
+ <value tokenid="0x40e0d0">turquoise</value>
+ <value tokenid="0xee82ee">violet</value>
+ <value tokenid="0xf5deb3">wheat</value>
+ <value tokenid="0xffffff">white</value>
+ <value tokenid="0xf5f5f5">whiteSmoke</value>
+ <value tokenid="0xffff00">yellow</value>
+ <value tokenid="0x9acd32">yellowGreen</value>
+ </resource>
+ <resource name="CT_PresetColor" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_PresetColor_val"/>
+ </resource>
+ <resource name="CT_Transform2D" resource="Properties">
+ <element name="off" tokenid="ooxml:CT_Transform2D_off"/>
+ <element name="ext" tokenid="ooxml:CT_Transform2D_ext"/>
+ <attribute name="rot" tokenid="ooxml:CT_Transform2D_rot"/>
+ <attribute name="flipH" tokenid="ooxml:CT_Transform2D_flipH"/>
+ <attribute name="flipV" tokenid="ooxml:CT_Transform2D_flipV"/>
+ </resource>
+ <resource name="ST_RectAlignment" resource="List" generated="yes">
+ <value name="tl" tokenid="ooxml:Value_drawingml_ST_RectAlignment_tl">tl</value>
+ <value name="t" tokenid="ooxml:Value_drawingml_ST_RectAlignment_t">t</value>
+ <value name="tr" tokenid="ooxml:Value_drawingml_ST_RectAlignment_tr">tr</value>
+ <value name="l" tokenid="ooxml:Value_drawingml_ST_RectAlignment_l">l</value>
+ <value name="ctr" tokenid="ooxml:Value_drawingml_ST_RectAlignment_ctr">ctr</value>
+ <value name="r" tokenid="ooxml:Value_drawingml_ST_RectAlignment_r">r</value>
+ <value name="bl" tokenid="ooxml:Value_drawingml_ST_RectAlignment_bl">bl</value>
+ <value name="b" tokenid="ooxml:Value_drawingml_ST_RectAlignment_b">b</value>
+ <value name="br" tokenid="ooxml:Value_drawingml_ST_RectAlignment_br">br</value>
+ </resource>
+ <resource name="ST_Guid" resource="String" generated="yes"/>
+ <resource name="EG_ColorChoice" resource="Properties">
+ <element name="scrgbClr" tokenid="ooxml:EG_ColorChoice_scrgbClr"/>
+ <element name="srgbClr" tokenid="ooxml:EG_ColorChoice_srgbClr"/>
+ <element name="hslClr" tokenid="ooxml:EG_ColorChoice_hslClr"/>
+ <element name="sysClr" tokenid="ooxml:EG_ColorChoice_sysClr"/>
+ <element name="schemeClr" tokenid="ooxml:EG_ColorChoice_schemeClr"/>
+ <element name="prstClr" tokenid="ooxml:EG_ColorChoice_prstClr"/>
+ </resource>
+ <resource name="CT_Color" resource="Properties"/>
+ <resource name="CT_ColorMRU" resource="Properties"/>
+ <resource name="ST_BlackWhiteMode" resource="List" generated="yes">
+ <value name="clr" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_clr">clr</value>
+ <value name="auto" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_auto">auto</value>
+ <value name="gray" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_gray">gray</value>
+ <value name="ltGray" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_ltGray">ltGray</value>
+ <value name="invGray" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_invGray">invGray</value>
+ <value name="grayWhite" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_grayWhite">grayWhite</value>
+ <value name="blackGray" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_blackGray">blackGray</value>
+ <value name="blackWhite" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_blackWhite">blackWhite</value>
+ <value name="black" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_black">black</value>
+ <value name="white" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_white">white</value>
+ <value name="hidden" tokenid="ooxml:Value_drawingml_ST_BlackWhiteMode_hidden">hidden</value>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="AG_Blob" resource="Properties">
+ <attribute name="r:embed" tokenid="ooxml:AG_Blob_r_embed"/>
+ <attribute name="r:link" tokenid="ooxml:AG_Blob_r_link"/>
+ </resource>
+ <resource name="ST_DrawingElementId" resource="Integer" generated="yes"/>
+ </namespace>
+ <namespace name="dml-documentProperties" file="dml-documentProperties.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <include href="dml-shapeGeometry.rng"/>
+ <define name="AG_Locking">
+ <optional>
+ <attribute name="noGrp">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noSelect">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noRot">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Rotation</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Rotation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noChangeAspect">
+ <data type="boolean">
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noMove">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Movement</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Movement</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noResize">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Resize</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Resize</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noEditPoints">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Point Editing</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Point Editing</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noAdjustHandles">
+ <data type="boolean">
+ <xs:documentation>Disallow Showing Adjust Handles</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Showing Adjust Handles</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noChangeArrowheads">
+ <data type="boolean">
+ <xs:documentation>Disallow Arrowhead Changes</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Arrowhead Changes</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noChangeShapeType">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Type Change</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Type Change</xs:documentation>
+ </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">
+ <xs:documentation>Disallow Shape Text Editing</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Text Editing</xs:documentation>
+ </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">
+ <xs:documentation>Disallow Crop Changes</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Crop Changes</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_GroupLocking">
+ <optional>
+ <element name="extLst">
+ <ref name="CT_OfficeArtExtensionList"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="noGrp">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noUngrp">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Ungrouping</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Ungrouping</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noSelect">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noRot">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Rotation</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Rotation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noChangeAspect">
+ <data type="boolean">
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noMove">
+ <data type="boolean">
+ <xs:documentation>Disallow Moving Shape</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Moving Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noResize">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Resizing</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Resizing</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_GraphicalObjectFrameLocking">
+ <optional>
+ <element name="extLst">
+ <ref name="CT_OfficeArtExtensionList"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="noGrp">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Grouping</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noDrilldown">
+ <data type="boolean">
+ <xs:documentation>Disallow Selection of Child Shapes</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Selection of Child Shapes</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noSelect">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Selection</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noChangeAspect">
+ <data type="boolean">
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Aspect Ratio Change</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noMove">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Movement</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Movement</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noResize">
+ <data type="boolean">
+ <xs:documentation>Disallow Shape Resize</xs:documentation>
+ </data>
+ <xs:documentation>Disallow Shape Resize</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_NonVisualDrawingProps">
+ <group>
+ <optional>
+ <element name="hlinkClick">
+ <ref name="CT_Hyperlink"/>
+ </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"/>
+ <xs:documentation>Unique Identifier</xs:documentation>
+ </attribute>
+ <attribute name="name">
+ <data type="string">
+ <xs:documentation>Name</xs:documentation>
+ </data>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="descr">
+ <data type="string">
+ <xs:documentation>Alternative Text for Object</xs:documentation>
+ </data>
+ <xs:documentation>Alternative Text for Object</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hidden">
+ <data type="boolean">
+ <xs:documentation>Hidden</xs:documentation>
+ </data>
+ <xs:documentation>Hidden</xs:documentation>
+ </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">
+ <xs:documentation>Text Box</xs:documentation>
+ </data>
+ <xs:documentation>Text Box</xs:documentation>
+ </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">
+ <xs:documentation>Relative Resize Preferred</xs:documentation>
+ </data>
+ <xs:documentation>Relative Resize Preferred</xs:documentation>
+ </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">
+ <element name="extLst" tokenid="ooxml:CT_GraphicalObjectFrameLocking_extLst"/>
+ <attribute name="noGrp" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noGrp"/>
+ <attribute name="noDrilldown" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noDrilldown"/>
+ <attribute name="noSelect" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noSelect"/>
+ <attribute name="noChangeAspect" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noChangeAspect"/>
+ <attribute name="noMove" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noMove"/>
+ <attribute name="noResize" tokenid="ooxml:CT_GraphicalObjectFrameLocking_noResize"/>
+ </resource>
+ <resource name="CT_NonVisualDrawingProps" resource="Properties">
+ <element name="hlinkClick" tokenid="ooxml:CT_NonVisualDrawingProps_hlinkClick"/>
+ <element name="hlinkHover" tokenid="ooxml:CT_NonVisualDrawingProps_hlinkHover"/>
+ <element name="extLst" tokenid="ooxml:CT_NonVisualDrawingProps_extLst"/>
+ <attribute name="id" tokenid="ooxml:CT_NonVisualDrawingProps_id"/>
+ <attribute name="name" tokenid="ooxml:CT_NonVisualDrawingProps_name"/>
+ <attribute name="descr" tokenid="ooxml:CT_NonVisualDrawingProps_descr"/>
+ <attribute name="hidden" tokenid="ooxml:CT_NonVisualDrawingProps_hidden"/>
+ </resource>
+ <resource name="CT_NonVisualPictureProperties" resource="Properties">
+ <element name="picLocks" tokenid="ooxml:CT_NonVisualPictureProperties_picLocks"/>
+ <element name="extLst" tokenid="ooxml:CT_NonVisualPictureProperties_extLst"/>
+ <attribute name="preferRelativeResize" tokenid="ooxml:CT_NonVisualPictureProperties_preferRelativeResize"/>
+ </resource>
+ <resource name="CT_NonVisualGraphicFrameProperties" resource="Properties">
+ <element name="graphicFrameLocks" tokenid="ooxml:CT_NonVisualGraphicFrameProperties_graphicFrameLocks"/>
+ <element name="extLst" tokenid="ooxml:CT_NonVisualGraphicFrameProperties_extLst"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-graphicalObject" file="dml-graphicalObject.rng">
+ <start name="graphic"/>
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <!-- start = graphic -->
+ <define name="CT_GraphicalObjectData">
+ <zeroOrMore>
+ <ref name="pic"/>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </zeroOrMore>
+ <attribute name="uri">
+ <data type="token">
+ <xs:documentation>Uniform Resource Identifier</xs:documentation>
+ </data>
+ <xs:documentation>Uniform Resource Identifier</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_GraphicalObject">
+ <element name="graphicData">
+ <ref name="CT_GraphicalObjectData"/>
+ </element>
+ </define>
+ <define name="graphic">
+ <element name="graphic">
+ <ref name="CT_GraphicalObject"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="CT_GraphicalObjectData" resource="Properties">
+ <element name="pic" tokenid="ooxml:CT_GraphicalObjectData_pic"/>
+ <attribute name="uri" tokenid="ooxml:CT_GraphicalObjectData_uri"/>
+ </resource>
+ <resource name="CT_GraphicalObject" resource="Properties">
+ <element name="graphicData" tokenid="ooxml:CT_GraphicalObject_graphicData"/>
+ </resource>
+ <resource name="graphic" resource="Properties">
+ <element name="graphic" tokenid="ooxml:graphic_graphic"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-shapeGeometry" file="dml-shapeGeometry.rng" todo="ignore">
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-baseTypes.rng"/>
+ <define name="ST_ShapeType">
+ <list>
+ <xs:documentation>Preset Shape Types</xs:documentation>
+ <choice>
+ <!-- Line Shape -->
+ <value>line</value>
+ <!-- Line Inverse Shape -->
+ <value>lineInv</value>
+ <!-- Triangle Shape -->
+ <value>triangle</value>
+ <!-- Right Triangle Shape -->
+ <value>rtTriangle</value>
+ <!-- Rectangle Shape -->
+ <value>rect</value>
+ <!-- Diamond Shape -->
+ <value>diamond</value>
+ <!-- Parallelogram Shape -->
+ <value>parallelogram</value>
+ <!-- Trapezoid Shape -->
+ <value>trapezoid</value>
+ <!-- Non-Isosceles Trapezoid Shape -->
+ <value>nonIsoscelesTrapezoid</value>
+ <!-- Pentagon Shape -->
+ <value>pentagon</value>
+ <!-- Hexagon Shape -->
+ <value>hexagon</value>
+ <!-- Heptagon Shape -->
+ <value>heptagon</value>
+ <!-- Octagon Shape -->
+ <value>octagon</value>
+ <!-- Decagon Shape -->
+ <value>decagon</value>
+ <!-- Dodecagon Shape -->
+ <value>dodecagon</value>
+ <!-- Four Pointed Star Shape -->
+ <value>star4</value>
+ <!-- Five Pointed Star Shape -->
+ <value>star5</value>
+ <!-- Six Pointed Star Shape -->
+ <value>star6</value>
+ <!-- Seven Pointed Star Shape -->
+ <value>star7</value>
+ <!-- Eight Pointed Star Shape -->
+ <value>star8</value>
+ <!-- Ten Pointed Star Shape -->
+ <value>star10</value>
+ <!-- Twelve Pointed Star Shape -->
+ <value>star12</value>
+ <!-- Sixteen Pointed Star Shape -->
+ <value>star16</value>
+ <!-- Twenty Four Pointed Star Shape -->
+ <value>star24</value>
+ <!-- Thirty Two Pointed Star Shape -->
+ <value>star32</value>
+ <!-- Round Corner Rectangle Shape -->
+ <value>roundRect</value>
+ <!-- One Round Corner Rectangle Shape -->
+ <value>round1Rect</value>
+ <!-- Two Same-side Round Corner Rectangle Shape -->
+ <value>round2SameRect</value>
+ <!-- Two Diagonal Round Corner Rectangle Shape -->
+ <value>round2DiagRect</value>
+ <!-- One Snip One Round Corner Rectangle Shape -->
+ <value>snipRoundRect</value>
+ <!-- One Snip Corner Rectangle Shape -->
+ <value>snip1Rect</value>
+ <!-- Two Same-side Snip Corner Rectangle Shape -->
+ <value>snip2SameRect</value>
+ <!-- Two Diagonal Snip Corner Rectangle Shape -->
+ <value>snip2DiagRect</value>
+ <!-- Plaque Shape -->
+ <value>plaque</value>
+ <!-- Ellipse Shape -->
+ <value>ellipse</value>
+ <!-- Teardrop Shape -->
+ <value>teardrop</value>
+ <!-- Home Plate Shape -->
+ <value>homePlate</value>
+ <!-- Chevron Shape -->
+ <value>chevron</value>
+ <!-- Pie Wedge Shape -->
+ <value>pieWedge</value>
+ <!-- Pie Shape -->
+ <value>pie</value>
+ <!-- Block Arc Shape -->
+ <value>blockArc</value>
+ <!-- Donut Shape -->
+ <value>donut</value>
+ <!-- No Smoking Shape -->
+ <value>noSmoking</value>
+ <!-- Right Arrow Shape -->
+ <value>rightArrow</value>
+ <!-- Left Arrow Shape -->
+ <value>leftArrow</value>
+ <!-- Up Arrow Shape -->
+ <value>upArrow</value>
+ <!-- Down Arrow Shape -->
+ <value>downArrow</value>
+ <!-- Striped Right Arrow Shape -->
+ <value>stripedRightArrow</value>
+ <!-- Notched Right Arrow Shape -->
+ <value>notchedRightArrow</value>
+ <!-- Bent Up Arrow Shape -->
+ <value>bentUpArrow</value>
+ <!-- Left Right Arrow Shape -->
+ <value>leftRightArrow</value>
+ <!-- Up Down Arrow Shape -->
+ <value>upDownArrow</value>
+ <!-- Left Up Arrow Shape -->
+ <value>leftUpArrow</value>
+ <!-- Left Right Up Arrow Shape -->
+ <value>leftRightUpArrow</value>
+ <!-- Quad-Arrow Shape -->
+ <value>quadArrow</value>
+ <!-- Callout Left Arrow Shape -->
+ <value>leftArrowCallout</value>
+ <!-- Callout Right Arrow Shape -->
+ <value>rightArrowCallout</value>
+ <!-- Callout Up Arrow Shape -->
+ <value>upArrowCallout</value>
+ <!-- Callout Down Arrow Shape -->
+ <value>downArrowCallout</value>
+ <!-- Callout Left Right Arrow Shape -->
+ <value>leftRightArrowCallout</value>
+ <!-- Callout Up Down Arrow Shape -->
+ <value>upDownArrowCallout</value>
+ <!-- Callout Quad-Arrow Shape -->
+ <value>quadArrowCallout</value>
+ <!-- Bent Arrow Shape -->
+ <value>bentArrow</value>
+ <!-- U-Turn Arrow Shape -->
+ <value>uturnArrow</value>
+ <!-- Circular Arrow Shape -->
+ <value>circularArrow</value>
+ <!-- Left Circular Arrow Shape -->
+ <value>leftCircularArrow</value>
+ <!-- Left Right Circular Arrow Shape -->
+ <value>leftRightCircularArrow</value>
+ <!-- Curved Right Arrow Shape -->
+ <value>curvedRightArrow</value>
+ <!-- Curved Left Arrow Shape -->
+ <value>curvedLeftArrow</value>
+ <!-- Curved Up Arrow Shape -->
+ <value>curvedUpArrow</value>
+ <!-- Curved Down Arrow Shape -->
+ <value>curvedDownArrow</value>
+ <!-- Swoosh Arrow Shape -->
+ <value>swooshArrow</value>
+ <!-- Cube Shape -->
+ <value>cube</value>
+ <!-- Can Shape -->
+ <value>can</value>
+ <!-- Lightning Bolt Shape -->
+ <value>lightningBolt</value>
+ <!-- Heart Shape -->
+ <value>heart</value>
+ <!-- Sun Shape -->
+ <value>sun</value>
+ <!-- Moon Shape -->
+ <value>moon</value>
+ <!-- Smiley Face Shape -->
+ <value>smileyFace</value>
+ <!-- Irregular Seal 1 Shape -->
+ <value>irregularSeal1</value>
+ <!-- Irregular Seal 2 Shape -->
+ <value>irregularSeal2</value>
+ <!-- Folded Corner Shape -->
+ <value>foldedCorner</value>
+ <!-- Bevel Shape -->
+ <value>bevel</value>
+ <!-- Frame Shape -->
+ <value>frame</value>
+ <!-- Half Frame Shape -->
+ <value>halfFrame</value>
+ <!-- Corner Shape -->
+ <value>corner</value>
+ <!-- Diagonal Stripe Shape -->
+ <value>diagStripe</value>
+ <!-- Chord Shape -->
+ <value>chord</value>
+ <!-- Curved Arc Shape -->
+ <value>arc</value>
+ <!-- Left Bracket Shape -->
+ <value>leftBracket</value>
+ <!-- Right Bracket Shape -->
+ <value>rightBracket</value>
+ <!-- Left Brace Shape -->
+ <value>leftBrace</value>
+ <!-- Right Brace Shape -->
+ <value>rightBrace</value>
+ <!-- Bracket Pair Shape -->
+ <value>bracketPair</value>
+ <!-- Brace Pair Shape -->
+ <value>bracePair</value>
+ <!-- Straight Connector 1 Shape -->
+ <value>straightConnector1</value>
+ <!-- Bent Connector 2 Shape -->
+ <value>bentConnector2</value>
+ <!-- Bent Connector 3 Shape -->
+ <value>bentConnector3</value>
+ <!-- Bent Connector 4 Shape -->
+ <value>bentConnector4</value>
+ <!-- Bent Connector 5 Shape -->
+ <value>bentConnector5</value>
+ <!-- Curved Connector 2 Shape -->
+ <value>curvedConnector2</value>
+ <!-- Curved Connector 3 Shape -->
+ <value>curvedConnector3</value>
+ <!-- Curved Connector 4 Shape -->
+ <value>curvedConnector4</value>
+ <!-- Curved Connector 5 Shape -->
+ <value>curvedConnector5</value>
+ <!-- Callout 1 Shape -->
+ <value>callout1</value>
+ <!-- Callout 2 Shape -->
+ <value>callout2</value>
+ <!-- Callout 3 Shape -->
+ <value>callout3</value>
+ <!-- Callout 1 Shape -->
+ <value>accentCallout1</value>
+ <!-- Callout 2 Shape -->
+ <value>accentCallout2</value>
+ <!-- Callout 3 Shape -->
+ <value>accentCallout3</value>
+ <!-- Callout 1 with Border Shape -->
+ <value>borderCallout1</value>
+ <!-- Callout 2 with Border Shape -->
+ <value>borderCallout2</value>
+ <!-- Callout 3 with Border Shape -->
+ <value>borderCallout3</value>
+ <!-- Callout 1 with Border and Accent Shape -->
+ <value>accentBorderCallout1</value>
+ <!-- Callout 2 with Border and Accent Shape -->
+ <value>accentBorderCallout2</value>
+ <!-- Callout 3 with Border and Accent Shape -->
+ <value>accentBorderCallout3</value>
+ <!-- Callout Wedge Rectangle Shape -->
+ <value>wedgeRectCallout</value>
+ <!-- Callout Wedge Round Rectangle Shape -->
+ <value>wedgeRoundRectCallout</value>
+ <!-- Callout Wedge Ellipse Shape -->
+ <value>wedgeEllipseCallout</value>
+ <!-- Callout Cloud Shape -->
+ <value>cloudCallout</value>
+ <!-- Cloud Shape -->
+ <value>cloud</value>
+ <!-- Ribbon Shape -->
+ <value>ribbon</value>
+ <!-- Ribbon 2 Shape -->
+ <value>ribbon2</value>
+ <!-- Ellipse Ribbon Shape -->
+ <value>ellipseRibbon</value>
+ <!-- Ellipse Ribbon 2 Shape -->
+ <value>ellipseRibbon2</value>
+ <!-- Left Right Ribbon Shape -->
+ <value>leftRightRibbon</value>
+ <!-- Vertical Scroll Shape -->
+ <value>verticalScroll</value>
+ <!-- Horizontal Scroll Shape -->
+ <value>horizontalScroll</value>
+ <!-- Wave Shape -->
+ <value>wave</value>
+ <!-- Double Wave Shape -->
+ <value>doubleWave</value>
+ <!-- Plus Shape -->
+ <value>plus</value>
+ <!-- Process Flow Shape -->
+ <value>flowChartProcess</value>
+ <!-- Decision Flow Shape -->
+ <value>flowChartDecision</value>
+ <!-- Input Output Flow Shape -->
+ <value>flowChartInputOutput</value>
+ <!-- Predefined Process Flow Shape -->
+ <value>flowChartPredefinedProcess</value>
+ <!-- Internal Storage Flow Shape -->
+ <value>flowChartInternalStorage</value>
+ <!-- Document Flow Shape -->
+ <value>flowChartDocument</value>
+ <!-- Multi-Document Flow Shape -->
+ <value>flowChartMultidocument</value>
+ <!-- Terminator Flow Shape -->
+ <value>flowChartTerminator</value>
+ <!-- Preparation Flow Shape -->
+ <value>flowChartPreparation</value>
+ <!-- Manual Input Flow Shape -->
+ <value>flowChartManualInput</value>
+ <!-- Manual Operation Flow Shape -->
+ <value>flowChartManualOperation</value>
+ <!-- Connector Flow Shape -->
+ <value>flowChartConnector</value>
+ <!-- Punched Card Flow Shape -->
+ <value>flowChartPunchedCard</value>
+ <!-- Punched Tape Flow Shape -->
+ <value>flowChartPunchedTape</value>
+ <!-- Summing Junction Flow Shape -->
+ <value>flowChartSummingJunction</value>
+ <!-- Or Flow Shape -->
+ <value>flowChartOr</value>
+ <!-- Collate Flow Shape -->
+ <value>flowChartCollate</value>
+ <!-- Sort Flow Shape -->
+ <value>flowChartSort</value>
+ <!-- Extract Flow Shape -->
+ <value>flowChartExtract</value>
+ <!-- Merge Flow Shape -->
+ <value>flowChartMerge</value>
+ <!-- Offline Storage Flow Shape -->
+ <value>flowChartOfflineStorage</value>
+ <!-- Online Storage Flow Shape -->
+ <value>flowChartOnlineStorage</value>
+ <!-- Magnetic Tape Flow Shape -->
+ <value>flowChartMagneticTape</value>
+ <!-- Magnetic Disk Flow Shape -->
+ <value>flowChartMagneticDisk</value>
+ <!-- Magnetic Drum Flow Shape -->
+ <value>flowChartMagneticDrum</value>
+ <!-- Display Flow Shape -->
+ <value>flowChartDisplay</value>
+ <!-- Delay Flow Shape -->
+ <value>flowChartDelay</value>
+ <!-- Alternate Process Flow Shape -->
+ <value>flowChartAlternateProcess</value>
+ <!-- Off-Page Connector Flow Shape -->
+ <value>flowChartOffpageConnector</value>
+ <!-- Blank Button Shape -->
+ <value>actionButtonBlank</value>
+ <!-- Home Button Shape -->
+ <value>actionButtonHome</value>
+ <!-- Help Button Shape -->
+ <value>actionButtonHelp</value>
+ <!-- Information Button Shape -->
+ <value>actionButtonInformation</value>
+ <!-- Forward or Next Button Shape -->
+ <value>actionButtonForwardNext</value>
+ <!-- Back or Previous Button Shape -->
+ <value>actionButtonBackPrevious</value>
+ <!-- End Button Shape -->
+ <value>actionButtonEnd</value>
+ <!-- Beginning Button Shape -->
+ <value>actionButtonBeginning</value>
+ <!-- Return Button Shape -->
+ <value>actionButtonReturn</value>
+ <!-- Document Button Shape -->
+ <value>actionButtonDocument</value>
+ <!-- Sound Button Shape -->
+ <value>actionButtonSound</value>
+ <!-- Movie Button Shape -->
+ <value>actionButtonMovie</value>
+ <!-- Gear 6 Shape -->
+ <value>gear6</value>
+ <!-- Gear 9 Shape -->
+ <value>gear9</value>
+ <!-- Funnel Shape -->
+ <value>funnel</value>
+ <!-- Plus Math Shape -->
+ <value>mathPlus</value>
+ <!-- Minus Math Shape -->
+ <value>mathMinus</value>
+ <!-- Multiply Math Shape -->
+ <value>mathMultiply</value>
+ <!-- Divide Math Shape -->
+ <value>mathDivide</value>
+ <!-- Equal Math Shape -->
+ <value>mathEqual</value>
+ <!-- Not Equal Math Shape -->
+ <value>mathNotEqual</value>
+ <!-- Corner Tabs Shape -->
+ <value>cornerTabs</value>
+ <!-- Square Tabs Shape -->
+ <value>squareTabs</value>
+ <!-- Plaque Tabs Shape -->
+ <value>plaqueTabs</value>
+ <!-- Chart X Shape -->
+ <value>chartX</value>
+ <!-- Chart Star Shape -->
+ <value>chartStar</value>
+ <!-- Chart Plus Shape -->
+ <value>chartPlus</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TextShapeType">
+ <list>
+ <xs:documentation>Preset Text Shape Types</xs:documentation>
+ <choice>
+ <!-- No Text Shape -->
+ <value>textNoShape</value>
+ <!-- Plain Text Shape -->
+ <value>textPlain</value>
+ <!-- Stop Sign Text Shape -->
+ <value>textStop</value>
+ <!-- Triangle Text Shape -->
+ <value>textTriangle</value>
+ <!-- Inverted Triangle Text Shape -->
+ <value>textTriangleInverted</value>
+ <!-- Chevron Text Shape -->
+ <value>textChevron</value>
+ <!-- Inverted Chevron Text Shape -->
+ <value>textChevronInverted</value>
+ <!-- Inside Ring Text Shape -->
+ <value>textRingInside</value>
+ <!-- Outside Ring Text Shape -->
+ <value>textRingOutside</value>
+ <!-- Upward Arch Text Shape -->
+ <value>textArchUp</value>
+ <!-- Downward Arch Text Shape -->
+ <value>textArchDown</value>
+ <!-- Circle Text Shape -->
+ <value>textCircle</value>
+ <!-- Button Text Shape -->
+ <value>textButton</value>
+ <!-- Upward Pour Arch Text Shape -->
+ <value>textArchUpPour</value>
+ <!-- Downward Pour Arch Text Shape -->
+ <value>textArchDownPour</value>
+ <!-- Circle Pour Text Shape -->
+ <value>textCirclePour</value>
+ <!-- Button Pour Text Shape -->
+ <value>textButtonPour</value>
+ <!-- Upward Curve Text Shape -->
+ <value>textCurveUp</value>
+ <!-- Downward Curve Text Shape -->
+ <value>textCurveDown</value>
+ <!-- Upward Can Text Shape -->
+ <value>textCanUp</value>
+ <!-- Downward Can Text Shape -->
+ <value>textCanDown</value>
+ <!-- Wave 1 Text Shape -->
+ <value>textWave1</value>
+ <!-- Wave 2 Text Shape -->
+ <value>textWave2</value>
+ <!-- Double Wave 1 Text Shape -->
+ <value>textDoubleWave1</value>
+ <!-- Wave 4 Text Shape -->
+ <value>textWave4</value>
+ <!-- Inflate Text Shape -->
+ <value>textInflate</value>
+ <!-- Deflate Text Shape -->
+ <value>textDeflate</value>
+ <!-- Bottom Inflate Text Shape -->
+ <value>textInflateBottom</value>
+ <!-- Bottom Deflate Text Shape -->
+ <value>textDeflateBottom</value>
+ <!-- Top Inflate Text Shape -->
+ <value>textInflateTop</value>
+ <!-- Top Deflate Text Shape -->
+ <value>textDeflateTop</value>
+ <!-- Deflate-Inflate Text Shape -->
+ <value>textDeflateInflate</value>
+ <!-- Deflate-Inflate-Deflate Text Shape -->
+ <value>textDeflateInflateDeflate</value>
+ <!-- Right Fade Text Shape -->
+ <value>textFadeRight</value>
+ <!-- Left Fade Text Shape -->
+ <value>textFadeLeft</value>
+ <!-- Upward Fade Text Shape -->
+ <value>textFadeUp</value>
+ <!-- Downward Fade Text Shape -->
+ <value>textFadeDown</value>
+ <!-- Upward Slant Text Shape -->
+ <value>textSlantUp</value>
+ <!-- Downward Slant Text Shape -->
+ <value>textSlantDown</value>
+ <!-- Upward Cascade Text Shape -->
+ <value>textCascadeUp</value>
+ <!-- Downward Cascade Text Shape -->
+ <value>textCascadeDown</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_GeomGuideName">
+ <data type="token">
+ <xs:documentation>Geometry Guide Name Properties</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_GeomGuideFormula">
+ <data type="string">
+ <xs:documentation>Geometry Guide Formula Properties</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_GeomGuide">
+ <attribute name="name">
+ <ref name="ST_GeomGuideName"/>
+ <xs:documentation>Shape Guide Name</xs:documentation>
+ </attribute>
+ <attribute name="fmla">
+ <ref name="ST_GeomGuideFormula"/>
+ <xs:documentation>Shape Guide Formula</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_GeomGuideList">
+ <zeroOrMore>
+ <element name="gd">
+ <ref name="CT_GeomGuide"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="ST_AdjCoordinate">
+ <choice>
+ <ref name="ST_Coordinate"/>
+ <ref name="ST_GeomGuideName"/>
+ </choice>
+ </define>
+ <!-- Union -->
+ <define name="ST_AdjAngle">
+ <choice>
+ <ref name="ST_Angle"/>
+ <ref name="ST_GeomGuideName"/>
+ </choice>
+ </define>
+ <!-- Union -->
+ <define name="CT_AdjPoint2D">
+ <attribute name="x">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>X-Coordinate</xs:documentation>
+ </attribute>
+ <attribute name="y">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Y-Coordinate</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_GeomRect">
+ <attribute name="l">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Left</xs:documentation>
+ </attribute>
+ <attribute name="t">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Top</xs:documentation>
+ </attribute>
+ <attribute name="r">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Right</xs:documentation>
+ </attribute>
+ <attribute name="b">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Bottom Position</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_XYAdjustHandle">
+ <element name="pos">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ <optional>
+ <attribute name="gdRefX">
+ <ref name="ST_GeomGuideName"/>
+ <xs:documentation>Horizontal Adjustment Guide</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minX">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Minimum Horizontal Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxX">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Maximum Horizontal Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gdRefY">
+ <ref name="ST_GeomGuideName"/>
+ <xs:documentation>Vertical Adjustment Guide</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minY">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Minimum Vertical Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxY">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Maximum Vertical Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_PolarAdjustHandle">
+ <element name="pos">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ <optional>
+ <attribute name="gdRefR">
+ <ref name="ST_GeomGuideName"/>
+ <xs:documentation>Radial Adjustment Guide</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minR">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Minimum Radial Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxR">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Maximum Radial Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gdRefAng">
+ <ref name="ST_GeomGuideName"/>
+ <xs:documentation>Angle Adjustment Guide</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minAng">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Minimum Angle Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxAng">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Maximum Angle Adjustment</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_ConnectionSite">
+ <element name="pos">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ <attribute name="ang">
+ <ref name="ST_AdjAngle"/>
+ <xs:documentation>Connection Site Angle</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_AdjustHandleList">
+ <zeroOrMore>
+ <choice>
+ <element name="ahXY">
+ <ref name="CT_XYAdjustHandle"/>
+ </element>
+ <element name="ahPolar">
+ <ref name="CT_PolarAdjustHandle"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="CT_ConnectionSiteList">
+ <zeroOrMore>
+ <element name="cxn">
+ <ref name="CT_ConnectionSite"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_Connection">
+ <attribute name="id">
+ <ref name="ST_DrawingElementId"/>
+ <xs:documentation>Identifier</xs:documentation>
+ </attribute>
+ <attribute name="idx">
+ <data type="unsignedInt">
+ <xs:documentation>Index</xs:documentation>
+ </data>
+ <xs:documentation>Index</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Path2DMoveTo">
+ <element name="pt">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ </define>
+ <define name="CT_Path2DLineTo">
+ <element name="pt">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ </define>
+ <define name="CT_Path2DArcTo">
+ <attribute name="wR">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Shape Arc Width Radius</xs:documentation>
+ </attribute>
+ <attribute name="hR">
+ <ref name="ST_AdjCoordinate"/>
+ <xs:documentation>Shape Arc Height Radius</xs:documentation>
+ </attribute>
+ <attribute name="stAng">
+ <ref name="ST_AdjAngle"/>
+ <xs:documentation>Shape Arc Start Angle</xs:documentation>
+ </attribute>
+ <attribute name="swAng">
+ <ref name="ST_AdjAngle"/>
+ <xs:documentation>Shape Arc Swing Angle</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Path2DQuadBezierTo">
+ <oneOrMore>
+ <element name="pt">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_Path2DCubicBezierTo">
+ <oneOrMore>
+ <element name="pt">
+ <ref name="CT_AdjPoint2D"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_Path2DClose">
+ <empty/>
+ </define>
+ <define name="ST_PathFillMode">
+ <list>
+ <xs:documentation>Path Fill Mode</xs:documentation>
+ <choice>
+ <!-- No Path Fill -->
+ <value>none</value>
+ <!-- Normal Path Fill -->
+ <value>norm</value>
+ <!-- Lighten Path Fill -->
+ <value>lighten</value>
+ <!-- Lighten Path Fill Less -->
+ <value>lightenLess</value>
+ <!-- Darken Path Fill -->
+ <value>darken</value>
+ <!-- Darken Path Fill Less -->
+ <value>darkenLess</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Path2D">
+ <zeroOrMore>
+ <choice>
+ <element name="close">
+ <ref name="CT_Path2DClose"/>
+ </element>
+ <element name="moveTo">
+ <ref name="CT_Path2DMoveTo"/>
+ </element>
+ <element name="lnTo">
+ <ref name="CT_Path2DLineTo"/>
+ </element>
+ <element name="arcTo">
+ <ref name="CT_Path2DArcTo"/>
+ </element>
+ <element name="quadBezTo">
+ <ref name="CT_Path2DQuadBezierTo"/>
+ </element>
+ <element name="cubicBezTo">
+ <ref name="CT_Path2DCubicBezierTo"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ <optional>
+ <attribute name="w">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Path Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="h">
+ <ref name="ST_PositiveCoordinate"/>
+ <xs:documentation>Path Height</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fill">
+ <ref name="ST_PathFillMode"/>
+ <xs:documentation>Path Fill</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stroke">
+ <data type="boolean">
+ <xs:documentation>Path Stroke</xs:documentation>
+ </data>
+ <xs:documentation>Path Stroke</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="extrusionOk">
+ <data type="boolean">
+ <xs:documentation>3D Extrusion Allowed</xs:documentation>
+ </data>
+ <xs:documentation>3D Extrusion Allowed</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Path2DList">
+ <zeroOrMore>
+ <element name="path">
+ <ref name="CT_Path2D"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_PresetGeometry2D">
+ <optional>
+ <element name="avLst">
+ <ref name="CT_GeomGuideList"/>
+ </element>
+ </optional>
+ <attribute name="prst">
+ <ref name="ST_ShapeType"/>
+ <xs:documentation>Preset Shape</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_PresetTextShape">
+ <optional>
+ <element name="avLst">
+ <ref name="CT_GeomGuideList"/>
+ </element>
+ </optional>
+ <attribute name="prst">
+ <ref name="ST_TextShapeType"/>
+ <xs:documentation>Preset Warp Shape</xs:documentation>
+ </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>
+ </define>
+ <define name="EG_Geometry">
+ <choice>
+ <element name="custGeom">
+ <ref name="CT_CustomGeometry2D"/>
+ </element>
+ <element name="prstGeom">
+ <ref name="CT_PresetGeometry2D"/>
+ </element>
+ </choice>
+ </define>
+ <define name="EG_TextGeometry">
+ <choice>
+ <element name="custGeom">
+ <ref name="CT_CustomGeometry2D"/>
+ </element>
+ <element name="prstTxWarp">
+ <ref name="CT_PresetTextShape"/>
+ </element>
+ </choice>
+ </define>
+ </grammar>
+ <resource name="ST_ShapeType" resource="List">
+ <value tokenid="ooxml:Value_ST_ShapeType_line">line</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_lineInv">lineInv</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_triangle">triangle</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rtTriangle">rtTriangle</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rect">rect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_diamond">diamond</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_parallelogram">parallelogram</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_trapezoid">trapezoid</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_nonIsoscelesTrapezoid">nonIsoscelesTrapezoid</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_pentagon">pentagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_hexagon">hexagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_heptagon">heptagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_octagon">octagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_decagon">decagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_dodecagon">dodecagon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star4">star4</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star5">star5</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star6">star6</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star7">star7</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star8">star8</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star10">star10</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star12">star12</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star16">star16</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star24">star24</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_star32">star32</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_roundRect">roundRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_round1Rect">round1Rect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_round2SameRect">round2SameRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_round2DiagRect">round2DiagRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_snipRoundRect">snipRoundRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_snip1Rect">snip1Rect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_snip2SameRect">snip2SameRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_snip2DiagRect">snip2DiagRect</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_plaque">plaque</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_ellipse">ellipse</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_teardrop">teardrop</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_homePlate">homePlate</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_chevron">chevron</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_pieWedge">pieWedge</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_pie">pie</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_blockArc">blockArc</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_donut">donut</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_noSmoking">noSmoking</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rightArrow">rightArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftArrow">leftArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_upArrow">upArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_downArrow">downArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_stripedRightArrow">stripedRightArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_notchedRightArrow">notchedRightArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentUpArrow">bentUpArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftRightArrow">leftRightArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_upDownArrow">upDownArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftUpArrow">leftUpArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftRightUpArrow">leftRightUpArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_quadArrow">quadArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftArrowCallout">leftArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rightArrowCallout">rightArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_upArrowCallout">upArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_downArrowCallout">downArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftRightArrowCallout">leftRightArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_upDownArrowCallout">upDownArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_quadArrowCallout">quadArrowCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentArrow">bentArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_uturnArrow">uturnArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_circularArrow">circularArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftCircularArrow">leftCircularArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftRightCircularArrow">leftRightCircularArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedRightArrow">curvedRightArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedLeftArrow">curvedLeftArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedUpArrow">curvedUpArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedDownArrow">curvedDownArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_swooshArrow">swooshArrow</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_cube">cube</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_can">can</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_lightningBolt">lightningBolt</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_heart">heart</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_sun">sun</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_moon">moon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_smileyFace">smileyFace</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_irregularSeal1">irregularSeal1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_irregularSeal2">irregularSeal2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_foldedCorner">foldedCorner</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bevel">bevel</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_frame">frame</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_halfFrame">halfFrame</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_corner">corner</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_diagStripe">diagStripe</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_chord">chord</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_arc">arc</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftBracket">leftBracket</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rightBracket">rightBracket</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftBrace">leftBrace</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_rightBrace">rightBrace</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bracketPair">bracketPair</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bracePair">bracePair</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_straightConnector1">straightConnector1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentConnector2">bentConnector2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentConnector3">bentConnector3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentConnector4">bentConnector4</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_bentConnector5">bentConnector5</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedConnector2">curvedConnector2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedConnector3">curvedConnector3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedConnector4">curvedConnector4</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_curvedConnector5">curvedConnector5</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_callout1">callout1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_callout2">callout2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_callout3">callout3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentCallout1">accentCallout1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentCallout2">accentCallout2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentCallout3">accentCallout3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_borderCallout1">borderCallout1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_borderCallout2">borderCallout2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_borderCallout3">borderCallout3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentBorderCallout1">accentBorderCallout1</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentBorderCallout2">accentBorderCallout2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_accentBorderCallout3">accentBorderCallout3</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_wedgeRectCallout">wedgeRectCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_wedgeRoundRectCallout">wedgeRoundRectCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_wedgeEllipseCallout">wedgeEllipseCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_cloudCallout">cloudCallout</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_cloud">cloud</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_ribbon">ribbon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_ribbon2">ribbon2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_ellipseRibbon">ellipseRibbon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_ellipseRibbon2">ellipseRibbon2</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_leftRightRibbon">leftRightRibbon</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_verticalScroll">verticalScroll</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_horizontalScroll">horizontalScroll</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_wave">wave</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_doubleWave">doubleWave</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_plus">plus</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartProcess">flowChartProcess</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartDecision">flowChartDecision</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartInputOutput">flowChartInputOutput</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartPredefinedProcess">flowChartPredefinedProcess</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartInternalStorage">flowChartInternalStorage</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartDocument">flowChartDocument</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartMultidocument">flowChartMultidocument</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartTerminator">flowChartTerminator</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartPreparation">flowChartPreparation</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartManualInput">flowChartManualInput</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartManualOperation">flowChartManualOperation</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartConnector">flowChartConnector</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartPunchedCard">flowChartPunchedCard</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartPunchedTape">flowChartPunchedTape</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartSummingJunction">flowChartSummingJunction</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartOr">flowChartOr</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartCollate">flowChartCollate</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartSort">flowChartSort</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartExtract">flowChartExtract</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartMerge">flowChartMerge</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartOfflineStorage">flowChartOfflineStorage</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartOnlineStorage">flowChartOnlineStorage</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartMagneticTape">flowChartMagneticTape</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartMagneticDisk">flowChartMagneticDisk</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartMagneticDrum">flowChartMagneticDrum</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartDisplay">flowChartDisplay</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartDelay">flowChartDelay</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartAlternateProcess">flowChartAlternateProcess</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_flowChartOffpageConnector">flowChartOffpageConnector</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonBlank">actionButtonBlank</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonHome">actionButtonHome</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonHelp">actionButtonHelp</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonInformation">actionButtonInformation</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonForwardNext">actionButtonForwardNext</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonBackPrevious">actionButtonBackPrevious</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonEnd">actionButtonEnd</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonBeginning">actionButtonBeginning</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonReturn">actionButtonReturn</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonDocument">actionButtonDocument</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonSound">actionButtonSound</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_actionButtonMovie">actionButtonMovie</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_gear6">gear6</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_gear9">gear9</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_funnel">funnel</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathPlus">mathPlus</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathMinus">mathMinus</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathMultiply">mathMultiply</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathDivide">mathDivide</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathEqual">mathEqual</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_mathNotEqual">mathNotEqual</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_cornerTabs">cornerTabs</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_squareTabs">squareTabs</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_plaqueTabs">plaqueTabs</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_chartX">chartX</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_chartStar">chartStar</value>
+ <value tokenid="ooxml:Value_ST_ShapeType_chartPlus">chartPlus</value>
+ </resource>
+ <resource name="ST_TextShapeType" resource="List" generated="yes">
+ <value name="textNoShape" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textNoShape">textNoShape</value>
+ <value name="textPlain" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textPlain">textPlain</value>
+ <value name="textStop" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textStop">textStop</value>
+ <value name="textTriangle" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textTriangle">textTriangle</value>
+ <value name="textTriangleInverted" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textTriangleInverted">textTriangleInverted</value>
+ <value name="textChevron" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textChevron">textChevron</value>
+ <value name="textChevronInverted" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textChevronInverted">textChevronInverted</value>
+ <value name="textRingInside" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textRingInside">textRingInside</value>
+ <value name="textRingOutside" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textRingOutside">textRingOutside</value>
+ <value name="textArchUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textArchUp">textArchUp</value>
+ <value name="textArchDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textArchDown">textArchDown</value>
+ <value name="textCircle" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCircle">textCircle</value>
+ <value name="textButton" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textButton">textButton</value>
+ <value name="textArchUpPour" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textArchUpPour">textArchUpPour</value>
+ <value name="textArchDownPour" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textArchDownPour">textArchDownPour</value>
+ <value name="textCirclePour" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCirclePour">textCirclePour</value>
+ <value name="textButtonPour" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textButtonPour">textButtonPour</value>
+ <value name="textCurveUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCurveUp">textCurveUp</value>
+ <value name="textCurveDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCurveDown">textCurveDown</value>
+ <value name="textCanUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCanUp">textCanUp</value>
+ <value name="textCanDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCanDown">textCanDown</value>
+ <value name="textWave1" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textWave1">textWave1</value>
+ <value name="textWave2" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textWave2">textWave2</value>
+ <value name="textDoubleWave1" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDoubleWave1">textDoubleWave1</value>
+ <value name="textWave4" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textWave4">textWave4</value>
+ <value name="textInflate" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textInflate">textInflate</value>
+ <value name="textDeflate" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDeflate">textDeflate</value>
+ <value name="textInflateBottom" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textInflateBottom">textInflateBottom</value>
+ <value name="textDeflateBottom" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDeflateBottom">textDeflateBottom</value>
+ <value name="textInflateTop" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textInflateTop">textInflateTop</value>
+ <value name="textDeflateTop" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDeflateTop">textDeflateTop</value>
+ <value name="textDeflateInflate" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDeflateInflate">textDeflateInflate</value>
+ <value name="textDeflateInflateDeflate" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textDeflateInflateDeflate">textDeflateInflateDeflate</value>
+ <value name="textFadeRight" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textFadeRight">textFadeRight</value>
+ <value name="textFadeLeft" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textFadeLeft">textFadeLeft</value>
+ <value name="textFadeUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textFadeUp">textFadeUp</value>
+ <value name="textFadeDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textFadeDown">textFadeDown</value>
+ <value name="textSlantUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textSlantUp">textSlantUp</value>
+ <value name="textSlantDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textSlantDown">textSlantDown</value>
+ <value name="textCascadeUp" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCascadeUp">textCascadeUp</value>
+ <value name="textCascadeDown" tokenid="ooxml:Value_drawingml_ST_TextShapeType_textCascadeDown">textCascadeDown</value>
+ </resource>
+ <resource name="ST_GeomGuideName" resource="String" generated="yes"/>
+ <resource name="ST_GeomGuideFormula" resource="String" generated="yes"/>
+ <resource name="CT_GeomGuideList" resource="Properties">
+ <element name="gd" tokenid="ooxml:CT_GeomGuideList_gd"/>
+ </resource>
+ <resource name="ST_PathFillMode" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_drawingml_ST_PathFillMode_none">none</value>
+ <value name="norm" tokenid="ooxml:Value_drawingml_ST_PathFillMode_norm">norm</value>
+ <value name="lighten" tokenid="ooxml:Value_drawingml_ST_PathFillMode_lighten">lighten</value>
+ <value name="lightenLess" tokenid="ooxml:Value_drawingml_ST_PathFillMode_lightenLess">lightenLess</value>
+ <value name="darken" tokenid="ooxml:Value_drawingml_ST_PathFillMode_darken">darken</value>
+ <value name="darkenLess" tokenid="ooxml:Value_drawingml_ST_PathFillMode_darkenLess">darkenLess</value>
+ </resource>
+ <resource name="CT_PresetGeometry2D" resource="Properties">
+ <element name="avLst" tokenid="ooxml:CT_PresetGeometry2D_avLst"/>
+ <attribute name="prst" tokenid="ooxml:CT_PresetGeometry2D_prst"/>
+ </resource>
+ <resource name="CT_CustomGeometry2D" resource="Properties">
+ <element name="avLst" tokenid="ooxml:CT_CustomGeometry2D_avLst"/>
+ <element name="gdLst" tokenid="ooxml:CT_CustomGeometry2D_gdLst"/>
+ <element name="ahLst" tokenid="ooxml:CT_CustomGeometry2D_ahLst"/>
+ <element name="cxnLst" tokenid="ooxml:CT_CustomGeometry2D_cxnLst"/>
+ <element name="rect" tokenid="ooxml:CT_CustomGeometry2D_rect"/>
+ <element name="pathLst" tokenid="ooxml:CT_CustomGeometry2D_pathLst"/>
+ </resource>
+ <resource name="EG_Geometry" resource="Properties">
+ <element name="custGeom" tokenid="ooxml:EG_Geometry_custGeom"/>
+ <element name="prstGeom" tokenid="ooxml:EG_Geometry_prstGeom"/>
+ </resource>
+ </namespace>
+ <namespace name="dml-wordprocessingDrawing" file="dml-wordprocessingDrawing.rng">
+ <start name="inline"/>
+ <start name="anchor"/>
+ <grammar xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-graphicalObject.rng"/>
+ <include href="dml-documentProperties.rng"/>
+ <!-- start = inline | anchor -->
+ <define name="CT_EffectExtent">
+ <attribute name="l">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Additional Extent on Left Edge</xs:documentation>
+ </attribute>
+ <attribute name="t">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Additional Extent on Top Edge</xs:documentation>
+ </attribute>
+ <attribute name="r">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Additional Extent on Right Edge</xs:documentation>
+ </attribute>
+ <attribute name="b">
+ <ref name="ST_Coordinate"/>
+ <xs:documentation>Additional Extent on Bottom Edge</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_WrapDistance">
+ <data type="unsignedInt">
+ <xs:documentation>Distance from Text</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_Inline">
+ <group>
+ <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>
+ </group>
+ <optional>
+ <attribute name="distT">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Top Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distB">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Bottom Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distL">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Left Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distR">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Right Edge</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_WrapText">
+ <list>
+ <xs:documentation>Text Wrapping Location</xs:documentation>
+ <choice>
+ <!-- Both Sides -->
+ <value>bothSides</value>
+ <!-- Left Side Only -->
+ <value>left</value>
+ <!-- Right Side Only -->
+ <value>right</value>
+ <!-- Largest Side Only -->
+ <value>largest</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_WrapPath">
+ <group>
+ <element name="start">
+ <ref name="CT_Point2D"/>
+ </element>
+ <oneOrMore>
+ <element name="lineTo">
+ <ref name="CT_Point2D"/>
+ </element>
+ </oneOrMore>
+ </group>
+ <optional>
+ <attribute name="edited">
+ <data type="boolean">
+ <xs:documentation>Wrapping Points Modified</xs:documentation>
+ </data>
+ <xs:documentation>Wrapping Points Modified</xs:documentation>
+ </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"/>
+ <xs:documentation>Text Wrapping Location</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="distT">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text (Top)</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distB">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Bottom Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distL">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Left Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distR">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Right Edge</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_WrapTight">
+ <element name="wrapPolygon">
+ <ref name="CT_WrapPath"/>
+ </element>
+ <attribute name="wrapText">
+ <ref name="ST_WrapText"/>
+ <xs:documentation>Text Wrapping Location</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="distL">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Test on Left Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distR">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Right Edge</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_WrapThrough">
+ <element name="wrapPolygon">
+ <ref name="CT_WrapPath"/>
+ </element>
+ <attribute name="wrapText">
+ <ref name="ST_WrapText"/>
+ <xs:documentation>Text Wrapping Location</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="distL">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Left Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distR">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Right Edge</xs:documentation>
+ </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"/>
+ <xs:documentation>Distance From Text on Top Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distB">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Bottom Edge</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_WrapType">
+ <choice>
+ <element name="wrapNone">
+ <ref name="CT_WrapNone"/>
+ </element>
+ <element name="wrapSquare">
+ <ref name="CT_WrapSquare"/>
+ </element>
+ <element name="wrapTight">
+ <ref name="CT_WrapTight"/>
+ </element>
+ <element name="wrapThrough">
+ <ref name="CT_WrapThrough"/>
+ </element>
+ <element name="wrapTopAndBottom">
+ <ref name="CT_WrapTopBottom"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_PositionOffset">
+ <ref name="ST_PositionOffset"/>
+ </define>
+ <define name="ST_PositionOffset">
+ <data type="int">
+ <xs:documentation>Absolute Position Offset Value</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_AlignH">
+ <ref name="ST_AlignH"/>
+ </define>
+ <define name="ST_AlignH">
+ <list>
+ <xs:documentation>Relative Horizontal Alignment Positions</xs:documentation>
+ <choice>
+ <!-- Left Alignment -->
+ <value>left</value>
+ <!-- Right Alignment -->
+ <value>right</value>
+ <!-- Center Alignment -->
+ <value>center</value>
+ <!-- Inside -->
+ <value>inside</value>
+ <!-- Outside -->
+ <value>outside</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_RelFromH">
+ <list>
+ <xs:documentation>Horizontal Relative Positioning</xs:documentation>
+ <choice>
+ <!-- Page Margin -->
+ <value>margin</value>
+ <!-- Page Edge -->
+ <value>page</value>
+ <!-- Column -->
+ <value>column</value>
+ <!-- Character -->
+ <value>character</value>
+ <!-- Left Margin -->
+ <value>leftMargin</value>
+ <!-- Right Margin -->
+ <value>rightMargin</value>
+ <!-- Inside Margin -->
+ <value>insideMargin</value>
+ <!-- Outside Margin -->
+ <value>outsideMargin</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PosH">
+ <choice>
+ <element name="align">
+ <ref name="CT_AlignH"/>
+ </element>
+ <element name="posOffset">
+ <ref name="CT_PositionOffset"/>
+ </element>
+ </choice>
+ <attribute name="relativeFrom">
+ <ref name="ST_RelFromH"/>
+ <xs:documentation>Horizontal Position Relative Base</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_AlignV">
+ <ref name="ST_AlignV"/>
+ </define>
+ <define name="ST_AlignV">
+ <list>
+ <xs:documentation>Vertical Alignment Definition</xs:documentation>
+ <choice>
+ <!-- Top -->
+ <value>top</value>
+ <!-- Bottom -->
+ <value>bottom</value>
+ <!-- Center Alignment -->
+ <value>center</value>
+ <!-- Inside -->
+ <value>inside</value>
+ <!-- Outside -->
+ <value>outside</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_RelFromV">
+ <list>
+ <xs:documentation>Vertical Relative Positioning</xs:documentation>
+ <choice>
+ <!-- Page Margin -->
+ <value>margin</value>
+ <!-- Page Edge -->
+ <value>page</value>
+ <!-- Paragraph -->
+ <value>paragraph</value>
+ <!-- Line -->
+ <value>line</value>
+ <!-- Top Margin -->
+ <value>topMargin</value>
+ <!-- Bottom Margin -->
+ <value>bottomMargin</value>
+ <!-- Inside Margin -->
+ <value>insideMargin</value>
+ <!-- Outside Margin -->
+ <value>outsideMargin</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PosV">
+ <choice>
+ <element name="align">
+ <ref name="CT_AlignV"/>
+ </element>
+ <element name="posOffset">
+ <ref name="CT_PositionOffset"/>
+ </element>
+ </choice>
+ <attribute name="relativeFrom">
+ <ref name="ST_RelFromV"/>
+ <xs:documentation>Vertical Position Relative Base</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Anchor">
+ <group>
+ <element name="simplePos">
+ <ref name="CT_Point2D"/>
+ </element>
+ <element name="positionH">
+ <ref name="CT_PosH"/>
+ </element>
+ <element name="positionV">
+ <ref name="CT_PosV"/>
+ </element>
+ <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>
+ </group>
+ <optional>
+ <attribute name="distT">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Top Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distB">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Bottom Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distL">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Left Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distR">
+ <ref name="ST_WrapDistance"/>
+ <xs:documentation>Distance From Text on Right Edge</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="simplePos">
+ <data type="boolean">
+ <xs:documentation>Page Positioning</xs:documentation>
+ </data>
+ <xs:documentation>Page Positioning</xs:documentation>
+ </attribute>
+ <attribute name="relativeHeight">
+ <data type="unsignedInt">
+ <xs:documentation>Relative Z-Ordering Position</xs:documentation>
+ </data>
+ <xs:documentation>Relative Z-Ordering Position</xs:documentation>
+ </attribute>
+ <attribute name="behindDoc">
+ <data type="boolean">
+ <xs:documentation>Display Behind Document Text</xs:documentation>
+ </data>
+ <xs:documentation>Display Behind Document Text</xs:documentation>
+ </attribute>
+ <attribute name="locked">
+ <data type="boolean">
+ <xs:documentation>Lock Anchor</xs:documentation>
+ </data>
+ <xs:documentation>Lock Anchor</xs:documentation>
+ </attribute>
+ <attribute name="layoutInCell">
+ <data type="boolean">
+ <xs:documentation>Layout In Table Cell</xs:documentation>
+ </data>
+ <xs:documentation>Layout In Table Cell</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="hidden">
+ <data type="boolean">
+ <xs:documentation>Hidden</xs:documentation>
+ </data>
+ <xs:documentation>Hidden</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="allowOverlap">
+ <data type="boolean">
+ <xs:documentation>Allow Objects to Overlap</xs:documentation>
+ </data>
+ <xs:documentation>Allow Objects to Overlap</xs:documentation>
+ </attribute>
+ </define>
+ <define name="inline">
+ <element name="inline">
+ <ref name="CT_Inline"/>
+ </element>
+ </define>
+ <define name="anchor">
+ <element name="anchor">
+ <ref name="CT_Anchor"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="CT_EffectExtent" resource="Properties">
+ <attribute name="l" tokenid="ooxml:CT_EffectExtent_l"/>
+ <attribute name="t" tokenid="ooxml:CT_EffectExtent_t"/>
+ <attribute name="r" tokenid="ooxml:CT_EffectExtent_r"/>
+ <attribute name="b" tokenid="ooxml:CT_EffectExtent_b"/>
+ </resource>
+ <resource name="ST_WrapDistance" resource="Integer" generated="yes"/>
+ <resource xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="CT_Inline" resource="Properties">
+ <element name="extent" tokenid="ooxml:CT_Inline_extent"/>
+ <element name="effectExtent" tokenid="ooxml:CT_Inline_effectExtent"/>
+ <element name="docPr" tokenid="ooxml:CT_Inline_docPr"/>
+ <element name="cNvGraphicFramePr" tokenid="ooxml:CT_Inline_cNvGraphicFramePr"/>
+ <element name="a:graphic" tokenid="ooxml:CT_Inline_a_graphic"/>
+ <attribute name="distT" tokenid="ooxml:CT_Inline_distT"/>
+ <attribute name="distB" tokenid="ooxml:CT_Inline_distB"/>
+ <attribute name="distL" tokenid="ooxml:CT_Inline_distL"/>
+ <attribute name="distR" tokenid="ooxml:CT_Inline_distR"/>
+ </resource>
+ <resource name="ST_WrapText" resource="List" generated="yes">
+ <value name="bothSides" tokenid="ooxml:Value_wordprocessingDrawing_ST_WrapText_bothSides">bothSides</value>
+ <value name="left" tokenid="ooxml:Value_wordprocessingDrawing_ST_WrapText_left">left</value>
+ <value name="right" tokenid="ooxml:Value_wordprocessingDrawing_ST_WrapText_right">right</value>
+ <value name="largest" tokenid="ooxml:Value_wordprocessingDrawing_ST_WrapText_largest">largest</value>
+ </resource>
+ <resource name="CT_WrapPath" resource="Properties">
+ <element name="start" tokenid="ooxml:CT_WrapPath_start"/>
+ <element name="lineTo" tokenid="ooxml:CT_WrapPath_lineTo"/>
+ <attribute name="edited" tokenid="ooxml:CT_WrapPath_edited"/>
+ </resource>
+ <resource name="CT_WrapNone" resource="Properties"/>
+ <resource name="CT_WrapSquare" resource="Properties">
+ <element name="effectExtent" tokenid="ooxml:CT_WrapSquare_effectExtent"/>
+ <attribute name="wrapText" tokenid="ooxml:CT_WrapSquare_wrapText"/>
+ <attribute name="distT" tokenid="ooxml:CT_WrapSquare_distT"/>
+ <attribute name="distB" tokenid="ooxml:CT_WrapSquare_distB"/>
+ <attribute name="distL" tokenid="ooxml:CT_WrapSquare_distL"/>
+ <attribute name="distR" tokenid="ooxml:CT_WrapSquare_distR"/>
+ </resource>
+ <resource name="CT_WrapTight" resource="Properties">
+ <element name="wrapPolygon" tokenid="ooxml:CT_WrapTight_wrapPolygon"/>
+ <attribute name="wrapText" tokenid="ooxml:CT_WrapTight_wrapText"/>
+ <attribute name="distL" tokenid="ooxml:CT_WrapTight_distL"/>
+ <attribute name="distR" tokenid="ooxml:CT_WrapTight_distR"/>
+ </resource>
+ <resource name="CT_WrapThrough" resource="Properties">
+ <element name="wrapPolygon" tokenid="ooxml:CT_WrapThrough_wrapPolygon"/>
+ <attribute name="wrapText" tokenid="ooxml:CT_WrapThrough_wrapText"/>
+ <attribute name="distL" tokenid="ooxml:CT_WrapThrough_distL"/>
+ <attribute name="distR" tokenid="ooxml:CT_WrapThrough_distR"/>
+ </resource>
+ <resource name="CT_WrapTopBottom" resource="Properties">
+ <element name="effectExtent" tokenid="ooxml:CT_WrapTopBottom_effectExtent"/>
+ <attribute name="distT" tokenid="ooxml:CT_WrapTopBottom_distT"/>
+ <attribute name="distB" tokenid="ooxml:CT_WrapTopBottom_distB"/>
+ </resource>
+ <resource name="EG_WrapType" resource="Properties">
+ <element name="wrapNone" tokenid="ooxml:EG_WrapType_wrapNone"/>
+ <element name="wrapSquare" tokenid="ooxml:EG_WrapType_wrapSquare"/>
+ <element name="wrapTight" tokenid="ooxml:EG_WrapType_wrapTight"/>
+ <element name="wrapThrough" tokenid="ooxml:EG_WrapType_wrapThrough"/>
+ <element name="wrapTopAndBottom" tokenid="ooxml:EG_WrapType_wrapTopAndBottom"/>
+ </resource>
+ <resource name="CT_PositionOffset" resource="Value"/>
+ <resource name="ST_PositionOffset" resource="Integer" generated="yes"/>
+ <resource name="CT_AlignH" resource="Value"/>
+ <resource name="ST_AlignH" resource="List" generated="yes">
+ <value name="left" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignH_left">left</value>
+ <value name="right" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignH_right">right</value>
+ <value name="center" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignH_center">center</value>
+ <value name="inside" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignH_inside">inside</value>
+ <value name="outside" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignH_outside">outside</value>
+ </resource>
+ <resource name="ST_RelFromH" resource="List" generated="yes">
+ <value name="margin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_page">page</value>
+ <value name="column" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_column">column</value>
+ <value name="character" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_character">character</value>
+ <value name="leftMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_leftMargin">leftMargin</value>
+ <value name="rightMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_rightMargin">rightMargin</value>
+ <value name="insideMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_insideMargin">insideMargin</value>
+ <value name="outsideMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromH_outsideMargin">outsideMargin</value>
+ </resource>
+ <resource name="CT_PosH" resource="Properties">
+ <element name="align" tokenid="ooxml:CT_PosH_align"/>
+ <element name="posOffset" tokenid="ooxml:CT_PosH_posOffset"/>
+ <attribute name="relativeFrom" tokenid="ooxml:CT_PosH_relativeFrom"/>
+ </resource>
+ <resource name="CT_AlignV" resource="Value"/>
+ <resource name="ST_AlignV" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignV_top">top</value>
+ <value name="bottom" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignV_bottom">bottom</value>
+ <value name="center" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignV_center">center</value>
+ <value name="inside" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignV_inside">inside</value>
+ <value name="outside" tokenid="ooxml:Value_wordprocessingDrawing_ST_AlignV_outside">outside</value>
+ </resource>
+ <resource name="ST_RelFromV" resource="List" generated="yes">
+ <value name="margin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_page">page</value>
+ <value name="paragraph" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_paragraph">paragraph</value>
+ <value name="line" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_line">line</value>
+ <value name="topMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_topMargin">topMargin</value>
+ <value name="bottomMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_bottomMargin">bottomMargin</value>
+ <value name="insideMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_insideMargin">insideMargin</value>
+ <value name="outsideMargin" tokenid="ooxml:Value_wordprocessingDrawing_ST_RelFromV_outsideMargin">outsideMargin</value>
+ </resource>
+ <resource name="CT_PosV" resource="Properties">
+ <element name="align" tokenid="ooxml:CT_PosV_align"/>
+ <element name="posOffset" tokenid="ooxml:CT_PosV_posOffset"/>
+ <attribute name="relativeFrom" tokenid="ooxml:CT_PosV_relativeFrom"/>
+ </resource>
+ <resource xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="CT_Anchor" resource="Properties">
+ <element name="simplePos" tokenid="ooxml:CT_Anchor_simplePos_elem"/>
+ <element name="positionH" tokenid="ooxml:CT_Anchor_positionH"/>
+ <element name="positionV" tokenid="ooxml:CT_Anchor_positionV"/>
+ <element name="extent" tokenid="ooxml:CT_Anchor_extent"/>
+ <element name="effectExtent" tokenid="ooxml:CT_Anchor_effectExtent"/>
+ <element name="docPr" tokenid="ooxml:CT_Anchor_docPr"/>
+ <element name="cNvGraphicFramePr" tokenid="ooxml:CT_Anchor_cNvGraphicFramePr"/>
+ <element name="a:graphic" tokenid="ooxml:CT_Anchor_a_graphic"/>
+ <attribute name="distT" tokenid="ooxml:CT_Anchor_distT"/>
+ <attribute name="distB" tokenid="ooxml:CT_Anchor_distB"/>
+ <attribute name="distL" tokenid="ooxml:CT_Anchor_distL"/>
+ <attribute name="distR" tokenid="ooxml:CT_Anchor_distR"/>
+ <attribute name="simplePos" tokenid="ooxml:CT_Anchor_simplePos_attr"/>
+ <attribute name="relativeHeight" tokenid="ooxml:CT_Anchor_relativeHeight"/>
+ <attribute name="behindDoc" tokenid="ooxml:CT_Anchor_behindDoc"/>
+ <attribute name="locked" tokenid="ooxml:CT_Anchor_locked"/>
+ <attribute name="layoutInCell" tokenid="ooxml:CT_Anchor_layoutInCell"/>
+ <attribute name="hidden" tokenid="ooxml:CT_Anchor_hidden"/>
+ <attribute name="allowOverlap" tokenid="ooxml:CT_Anchor_allowOverlap"/>
+ </resource>
+ <resource name="inline" resource="Properties">
+ <element name="inline" tokenid="ooxml:inline_inline"/>
+ </resource>
+ <resource name="anchor" resource="Properties">
+ <element name="anchor" tokenid="ooxml:anchor_anchor"/>
+ </resource>
+ </namespace>
+ <namespace name="sml-customXmlMappings" file="sml-customXmlMappings-rng">
+ <start name="schemaLibrary"/>
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/schemaLibrary/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <!-- start = schemaLibrary -->
+ <define name="CT_Schema">
+ <attribute name="uri">
+ <data type="string">
+ <xs:documentation>Custom XML Schema Namespace</xs:documentation>
+ </data>
+ <xs:documentation>Custom XML Schema Namespace</xs:documentation>
+ </attribute>
+ <attribute name="manifestLocation">
+ <data type="string">
+ <xs:documentation>Resource File Location</xs:documentation>
+ </data>
+ <xs:documentation>Resource File Location</xs:documentation>
+ </attribute>
+ <attribute name="schemaLocation">
+ <data type="string">
+ <xs:documentation>Custom XML Schema Location</xs:documentation>
+ </data>
+ <xs:documentation>Custom XML Schema Location</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SchemaLibrary">
+ <zeroOrMore>
+ <element name="schema">
+ <ref name="CT_Schema"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="schemaLibrary">
+ <element name="schemaLibrary">
+ <ref name="CT_SchemaLibrary"/>
+ </element>
+ </define>
+ </grammar>
+ </namespace>
+ <namespace name="shared-math" file="shared-math.rng">
+ <start name="mathPar"/>
+ <start name="oMathPara"/>
+ <start name="oMath"/>
+ <grammar xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/officeDocument/2006/math" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" attributeFormDefault="qualified">
+ <!-- ISO RELAX NG Schema -->
+ <include href="wml.rng"/>
+ <!-- start = mathPr | oMathPara | oMath -->
+ <define name="ST_Integer255">
+ <data type="integer">
+ <xs:documentation>Integer value (1 to 255)</xs:documentation>
+ <param name="minInclusive">1</param>
+ <param name="maxInclusive">255</param>
+ </data>
+ </define>
+ <define name="CT_Integer255">
+ <attribute name="val">
+ <ref name="ST_Integer255"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Integer2">
+ <data type="integer">
+ <xs:documentation>Integer value (-2 to 2)</xs:documentation>
+ <param name="minInclusive">-2</param>
+ <param name="maxInclusive">2</param>
+ </data>
+ </define>
+ <define name="CT_Integer2">
+ <attribute name="val">
+ <ref name="ST_Integer2"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_SpacingRule">
+ <data type="integer">
+ <xs:documentation>Spacing Rule</xs:documentation>
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">4</param>
+ </data>
+ </define>
+ <define name="CT_SpacingRule">
+ <attribute name="val">
+ <ref name="ST_SpacingRule"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_UnSignedInteger">
+ <data type="unsignedInt">
+ <xs:documentation>Unsigned integer.</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_UnSignedInteger">
+ <attribute name="val">
+ <ref name="ST_UnSignedInteger"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Char">
+ <data type="string">
+ <xs:documentation>Character</xs:documentation>
+ <param name="maxLength">1</param>
+ </data>
+ </define>
+ <define name="CT_Char">
+ <attribute name="val">
+ <ref name="ST_Char"/>
+ <xs:documentation>value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_OnOff">
+ <list>
+ <xs:documentation>On Off</xs:documentation>
+ <choice>
+ <!-- On -->
+ <value>on</value>
+ <!-- Off -->
+ <value>off</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_OnOff">
+ <attribute name="val">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_String">
+ <data type="string">
+ <xs:documentation>String</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_String">
+ <attribute name="val">
+ <ref name="ST_String"/>
+ <xs:documentation>value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_XAlign">
+ <list>
+ <xs:documentation>Horizontal Alignment</xs:documentation>
+ <choice>
+ <!-- Left Justification -->
+ <value>left</value>
+ <!-- Center -->
+ <value>center</value>
+ <!-- Right -->
+ <value>right</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_XAlign">
+ <attribute name="val">
+ <ref name="ST_XAlign"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_YAlign">
+ <list>
+ <xs:documentation>Vertical Alignment</xs:documentation>
+ <choice>
+ <!-- Top -->
+ <value>top</value>
+ <!-- Center (Function) -->
+ <value>center</value>
+ <!-- Bottom Alignment -->
+ <value>bot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_YAlign">
+ <attribute name="val">
+ <ref name="ST_YAlign"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Shp">
+ <list>
+ <xs:documentation>Shape (Delimiters)</xs:documentation>
+ <choice>
+ <!-- Centered (Delimiters) -->
+ <value>centered</value>
+ <!-- Match -->
+ <value>match</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Shp">
+ <attribute name="val">
+ <ref name="ST_Shp"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_FType">
+ <list>
+ <xs:documentation>Fraction Type</xs:documentation>
+ <choice>
+ <!-- Bar Fraction -->
+ <value>bar</value>
+ <!-- Skewed -->
+ <value>skw</value>
+ <!-- Linear Fraction -->
+ <value>lin</value>
+ <!-- No-Bar Fraction (Stack) -->
+ <value>noBar</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FType">
+ <attribute name="val">
+ <ref name="ST_FType"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_LimLoc">
+ <list>
+ <xs:documentation>Limit Location</xs:documentation>
+ <choice>
+ <!-- Under-Over location -->
+ <value>undOvr</value>
+ <!-- Subscript-Superscript location -->
+ <value>subSup</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_LimLoc">
+ <attribute name="val">
+ <ref name="ST_LimLoc"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TopBot">
+ <list>
+ <xs:documentation>Top-Bottom</xs:documentation>
+ <choice>
+ <!-- Top -->
+ <value>top</value>
+ <!-- Bottom Alignment -->
+ <value>bot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TopBot">
+ <attribute name="val">
+ <ref name="ST_TopBot"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Script">
+ <list>
+ <xs:documentation>Script</xs:documentation>
+ <choice>
+ <!-- Roman -->
+ <value>roman</value>
+ <!-- Script -->
+ <value>script</value>
+ <!-- Fraktur -->
+ <value>fraktur</value>
+ <!-- double-struck -->
+ <value>double-struck</value>
+ <!-- Sans-Serif -->
+ <value>sans-serif</value>
+ <!-- Monospace -->
+ <value>monospace</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Script">
+ <attribute name="val">
+ <ref name="ST_Script"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Style">
+ <list>
+ <xs:documentation>Style</xs:documentation>
+ <choice>
+ <!-- Plain -->
+ <value>p</value>
+ <!-- Bold -->
+ <value>b</value>
+ <!-- Italic -->
+ <value>i</value>
+ <!-- Bold-Italic -->
+ <value>bi</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Style">
+ <attribute name="val">
+ <ref name="ST_Style"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ManualBreak">
+ <attribute name="alnAt">
+ <ref name="ST_Integer255"/>
+ <xs:documentation>Index of Operator to Align To</xs:documentation>
+ </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"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="strikeTLBR">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_BorderBox">
+ <optional>
+ <element name="borderBoxPr">
+ <ref name="CT_BorderBoxPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_DPr">
+ <optional>
+ <element name="begChr">
+ <ref name="CT_Char"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sepChr">
+ <ref name="CT_Char"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="endChr">
+ <ref name="CT_Char"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="grow">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shp">
+ <ref name="CT_Shp"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_D">
+ <optional>
+ <element name="dPr">
+ <ref name="CT_DPr"/>
+ </element>
+ </optional>
+ <oneOrMore>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_EqArrPr">
+ <optional>
+ <element name="baseJc">
+ <ref name="CT_YAlign"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="maxDist">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="objDist">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rSpRule">
+ <ref name="CT_SpacingRule"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rSp">
+ <ref name="CT_UnSignedInteger"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_EqArr">
+ <optional>
+ <element name="eqArrPr">
+ <ref name="CT_EqArrPr"/>
+ </element>
+ </optional>
+ <oneOrMore>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_FPr">
+ <optional>
+ <element name="type">
+ <ref name="CT_FType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_F">
+ <optional>
+ <element name="fPr">
+ <ref name="CT_FPr"/>
+ </element>
+ </optional>
+ <element name="num">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="den">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_FuncPr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Func">
+ <optional>
+ <element name="funcPr">
+ <ref name="CT_FuncPr"/>
+ </element>
+ </optional>
+ <element name="fName">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_GroupChrPr">
+ <optional>
+ <element name="chr">
+ <ref name="CT_Char"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pos">
+ <ref name="CT_TopBot"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vertJc">
+ <ref name="CT_TopBot"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_GroupChr">
+ <optional>
+ <element name="groupChrPr">
+ <ref name="CT_GroupChrPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_LimLowPr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_LimLow">
+ <optional>
+ <element name="limLowPr">
+ <ref name="CT_LimLowPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="lim">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_LimUppPr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_LimUpp">
+ <optional>
+ <element name="limUppPr">
+ <ref name="CT_LimUppPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="lim">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_MCPr">
+ <optional>
+ <element name="count">
+ <ref name="CT_Integer255"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mcJc">
+ <ref name="CT_XAlign"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_MC">
+ <optional>
+ <element name="mcPr">
+ <ref name="CT_MCPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_MCS">
+ <oneOrMore>
+ <element name="mc">
+ <ref name="CT_MC"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_MPr">
+ <optional>
+ <element name="baseJc">
+ <ref name="CT_YAlign"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="plcHide">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rSpRule">
+ <ref name="CT_SpacingRule"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cGpRule">
+ <ref name="CT_SpacingRule"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rSp">
+ <ref name="CT_UnSignedInteger"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cSp">
+ <ref name="CT_UnSignedInteger"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cGp">
+ <ref name="CT_UnSignedInteger"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mcs">
+ <ref name="CT_MCS"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_MR">
+ <oneOrMore>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_M">
+ <optional>
+ <element name="mPr">
+ <ref name="CT_MPr"/>
+ </element>
+ </optional>
+ <oneOrMore>
+ <element name="mr">
+ <ref name="CT_MR"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_NaryPr">
+ <optional>
+ <element name="chr">
+ <ref name="CT_Char"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="limLoc">
+ <ref name="CT_LimLoc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="grow">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="subHide">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="supHide">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Nary">
+ <optional>
+ <element name="naryPr">
+ <ref name="CT_NaryPr"/>
+ </element>
+ </optional>
+ <element name="sub">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sup">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_PhantPr">
+ <optional>
+ <element name="show">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="zeroWid">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="zeroAsc">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="zeroDesc">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="transp">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Phant">
+ <optional>
+ <element name="phantPr">
+ <ref name="CT_PhantPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_RadPr">
+ <optional>
+ <element name="degHide">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Rad">
+ <optional>
+ <element name="radPr">
+ <ref name="CT_RadPr"/>
+ </element>
+ </optional>
+ <element name="deg">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_SPrePr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SPre">
+ <optional>
+ <element name="sPrePr">
+ <ref name="CT_SPrePr"/>
+ </element>
+ </optional>
+ <element name="sub">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sup">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_SSubPr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SSub">
+ <optional>
+ <element name="sSubPr">
+ <ref name="CT_SSubPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sub">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_SSubSupPr">
+ <optional>
+ <element name="alnScr">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SSubSup">
+ <optional>
+ <element name="sSubSupPr">
+ <ref name="CT_SSubSupPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sub">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sup">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="CT_SSupPr">
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SSup">
+ <optional>
+ <element name="sSupPr">
+ <ref name="CT_SSupPr"/>
+ </element>
+ </optional>
+ <element name="e">
+ <ref name="CT_OMathArg"/>
+ </element>
+ <element name="sup">
+ <ref name="CT_OMathArg"/>
+ </element>
+ </define>
+ <define name="EG_OMathMathElements">
+ <choice>
+ <element name="acc">
+ <ref name="CT_Acc"/>
+ </element>
+ <element name="bar">
+ <ref name="CT_Bar"/>
+ </element>
+ <element name="box">
+ <ref name="CT_Box"/>
+ </element>
+ <element name="borderBox">
+ <ref name="CT_BorderBox"/>
+ </element>
+ <element name="d">
+ <ref name="CT_D"/>
+ </element>
+ <element name="eqArr">
+ <ref name="CT_EqArr"/>
+ </element>
+ <element name="f">
+ <ref name="CT_F"/>
+ </element>
+ <element name="func">
+ <ref name="CT_Func"/>
+ </element>
+ <element name="groupChr">
+ <ref name="CT_GroupChr"/>
+ </element>
+ <element name="limLow">
+ <ref name="CT_LimLow"/>
+ </element>
+ <element name="limUpp">
+ <ref name="CT_LimUpp"/>
+ </element>
+ <element name="m">
+ <ref name="CT_M"/>
+ </element>
+ <element name="nary">
+ <ref name="CT_Nary"/>
+ </element>
+ <element name="phant">
+ <ref name="CT_Phant"/>
+ </element>
+ <element name="rad">
+ <ref name="CT_Rad"/>
+ </element>
+ <element name="sPre">
+ <ref name="CT_SPre"/>
+ </element>
+ <element name="sSub">
+ <ref name="CT_SSub"/>
+ </element>
+ <element name="sSubSup">
+ <ref name="CT_SSubSup"/>
+ </element>
+ <element name="sSup">
+ <ref name="CT_SSup"/>
+ </element>
+ <element name="r">
+ <ref name="CT_R"/>
+ </element>
+ </choice>
+ </define>
+ <define name="EG_OMathElements">
+ <choice>
+ <ref name="EG_OMathMathElements"/>
+ <ref name="EG_RunLevelElts"/>
+ </choice>
+ </define>
+ <define name="CT_OMathArgPr">
+ <optional>
+ <element name="argSz">
+ <ref name="CT_Integer2"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_OMathArg">
+ <optional>
+ <element name="argPr">
+ <ref name="CT_OMathArgPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_OMathElements"/>
+ </zeroOrMore>
+ <optional>
+ <element name="ctrlPr">
+ <ref name="CT_CtrlPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_Jc">
+ <list>
+ <xs:documentation>Justification</xs:documentation>
+ <choice>
+ <!-- Left Justification -->
+ <value>left</value>
+ <!-- Right -->
+ <value>right</value>
+ <!-- Center (Equation) -->
+ <value>center</value>
+ <!-- Centered as Group (Equations) -->
+ <value>centerGroup</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_OMathJc">
+ <attribute name="val">
+ <ref name="ST_Jc"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_OMathParaPr">
+ <optional>
+ <element name="jc">
+ <ref name="CT_OMathJc"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_TwipsMeasure">
+ <data type="unsignedInt">
+ <xs:documentation>Twips measurement</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_TwipsMeasure">
+ <attribute name="val">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_BreakBin">
+ <list>
+ <xs:documentation>Break Binary Operators</xs:documentation>
+ <choice>
+ <!-- Before -->
+ <value>before</value>
+ <!-- After -->
+ <value>after</value>
+ <!-- Repeat -->
+ <value>repeat</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_BreakBin">
+ <attribute name="val">
+ <ref name="ST_BreakBin"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_BreakBinSub">
+ <list>
+ <xs:documentation>Break on Binary Subtraction</xs:documentation>
+ <choice>
+ <!-- Minus Minus -->
+ <value>--</value>
+ <!-- Minus Plus -->
+ <value>-+</value>
+ <!-- Plus Minus -->
+ <value>+-</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_BreakBinSub">
+ <attribute name="val">
+ <ref name="ST_BreakBinSub"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_MathPr">
+ <optional>
+ <element name="mathFont">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="brkBin">
+ <ref name="CT_BreakBin"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="brkBinSub">
+ <ref name="CT_BreakBinSub"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="smallFrac">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dispDef">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lMargin">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rMargin">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="defJc">
+ <ref name="CT_OMathJc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="preSp">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="postSp">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="interSp">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="intraSp">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <choice>
+ <element name="wrapIndent">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ <element name="wrapRight">
+ <ref name="CT_OnOff"/>
+ </element>
+ </choice>
+ </optional>
+ <optional>
+ <element name="intLim">
+ <ref name="CT_LimLoc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="naryLim">
+ <ref name="CT_LimLoc"/>
+ </element>
+ </optional>
+ </define>
+ <define name="mathPr">
+ <element name="mathPr">
+ <ref name="CT_MathPr"/>
+ </element>
+ </define>
+ <define name="CT_OMathPara">
+ <optional>
+ <element name="oMathParaPr">
+ <ref name="CT_OMathParaPr"/>
+ </element>
+ </optional>
+ <oneOrMore>
+ <element name="oMath">
+ <ref name="CT_OMath"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_OMath">
+ <zeroOrMore>
+ <ref name="EG_OMathElements"/>
+ </zeroOrMore>
+ </define>
+ <define name="oMathPara">
+ <element name="oMathPara">
+ <ref name="CT_OMathPara"/>
+ </element>
+ </define>
+ <define name="oMath">
+ <element name="oMath">
+ <ref name="CT_OMath"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="ST_Integer255" resource="Integer" generated="yes"/>
+ <resource name="CT_Integer255" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Integer255_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_Integer2" resource="Integer" generated="yes"/>
+ <resource name="CT_Integer2" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Integer2_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_SpacingRule" resource="Integer" generated="yes"/>
+ <resource name="CT_SpacingRule" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_SpacingRule_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_UnSignedInteger" resource="Integer" generated="yes"/>
+ <resource name="CT_UnSignedInteger" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_UnSignedInteger_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_Char" resource="String" generated="yes"/>
+ <resource name="CT_Char" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Char_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_OnOff" resource="List" generated="yes">
+ <value name="on" tokenid="ooxml:Value_math_ST_OnOff_on">on</value>
+ <value name="off" tokenid="ooxml:Value_math_ST_OnOff_off">off</value>
+ </resource>
+ <resource name="CT_OnOff" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_OnOff_val" action="setValue"/>
+ <action name="start" action="setDefaultBooleanValue"/>
+ </resource>
+ <resource name="ST_String" resource="String" generated="yes"/>
+ <resource name="CT_String" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_String_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_XAlign" resource="List" generated="yes">
+ <value name="left" tokenid="ooxml:Value_math_ST_XAlign_left">left</value>
+ <value name="center" tokenid="ooxml:Value_math_ST_XAlign_center">center</value>
+ <value name="right" tokenid="ooxml:Value_math_ST_XAlign_right">right</value>
+ </resource>
+ <resource name="CT_XAlign" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_XAlign_val" action="setValue"/>
+ </resource>
+ <resource name="ST_YAlign" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_math_ST_YAlign_top">top</value>
+ <value name="center" tokenid="ooxml:Value_math_ST_YAlign_center">center</value>
+ <value name="bot" tokenid="ooxml:Value_math_ST_YAlign_bot">bot</value>
+ </resource>
+ <resource name="CT_YAlign" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_YAlign_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Shp" resource="List" generated="yes">
+ <value name="centered" tokenid="ooxml:Value_math_ST_Shp_centered">centered</value>
+ <value name="match" tokenid="ooxml:Value_math_ST_Shp_match">match</value>
+ </resource>
+ <resource name="CT_Shp" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Shp_val" action="setValue"/>
+ </resource>
+ <resource name="ST_FType" resource="List" generated="yes">
+ <value name="bar" tokenid="ooxml:Value_math_ST_FType_bar">bar</value>
+ <value name="skw" tokenid="ooxml:Value_math_ST_FType_skw">skw</value>
+ <value name="lin" tokenid="ooxml:Value_math_ST_FType_lin">lin</value>
+ <value name="noBar" tokenid="ooxml:Value_math_ST_FType_noBar">noBar</value>
+ </resource>
+ <resource name="CT_FType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FType_val" action="setValue"/>
+ </resource>
+ <resource name="ST_LimLoc" resource="List" generated="yes">
+ <value name="undOvr" tokenid="ooxml:Value_math_ST_LimLoc_undOvr">undOvr</value>
+ <value name="subSup" tokenid="ooxml:Value_math_ST_LimLoc_subSup">subSup</value>
+ </resource>
+ <resource name="CT_LimLoc" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_LimLoc_val" action="setValue"/>
+ </resource>
+ <resource name="ST_TopBot" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_math_ST_TopBot_top">top</value>
+ <value name="bot" tokenid="ooxml:Value_math_ST_TopBot_bot">bot</value>
+ </resource>
+ <resource name="CT_TopBot" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_TopBot_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Script" resource="List" generated="yes">
+ <value name="roman" tokenid="ooxml:Value_math_ST_Script_roman">roman</value>
+ <value name="script" tokenid="ooxml:Value_math_ST_Script_script">script</value>
+ <value name="fraktur" tokenid="ooxml:Value_math_ST_Script_fraktur">fraktur</value>
+ <value name="doublemstruck" tokenid="ooxml:Value_math_ST_Script_doublemstruck">double-struck</value>
+ <value name="sansmserif" tokenid="ooxml:Value_math_ST_Script_sansmserif">sans-serif</value>
+ <value name="monospace" tokenid="ooxml:Value_math_ST_Script_monospace">monospace</value>
+ </resource>
+ <resource name="CT_Script" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Script_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Style" resource="List">
+ <value tokenid="ooxml:Value_ST_Style_b">b</value>
+ <value tokenid="ooxml:Value_ST_Style_bi">bi</value>
+ <value tokenid="ooxml:Value_ST_Style_i">i</value>
+ <value tokenid="ooxml:Value_ST_Style_p">p</value>
+ </resource>
+ <resource name="CT_Style" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Style_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Jc" resource="List" generated="yes">
+ <value name="left" tokenid="ooxml:Value_math_ST_Jc_left">left</value>
+ <value name="right" tokenid="ooxml:Value_math_ST_Jc_right">right</value>
+ <value name="center" tokenid="ooxml:Value_math_ST_Jc_center">center</value>
+ <value name="centerGroup" tokenid="ooxml:Value_math_ST_Jc_centerGroup">centerGroup</value>
+ </resource>
+ <resource name="CT_OMathJc" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_OMathJc_val" action="setValue"/>
+ </resource>
+ <resource name="ST_TwipsMeasure" resource="Integer" generated="yes"/>
+ <resource name="CT_TwipsMeasure" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_TwipsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_BreakBin" resource="List" generated="yes">
+ <value name="before" tokenid="ooxml:Value_math_ST_BreakBin_before">before</value>
+ <value name="after" tokenid="ooxml:Value_math_ST_BreakBin_after">after</value>
+ <value name="repeat" tokenid="ooxml:Value_math_ST_BreakBin_repeat">repeat</value>
+ </resource>
+ <resource name="CT_BreakBin" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_BreakBin_val" action="setValue"/>
+ </resource>
+ <resource name="ST_BreakBinSub" resource="List" generated="yes">
+ <value name="mm" tokenid="ooxml:Value_math_ST_BreakBinSub_mm">--</value>
+ <value name="mp" tokenid="ooxml:Value_math_ST_BreakBinSub_mp">-+</value>
+ <value name="pm" tokenid="ooxml:Value_math_ST_BreakBinSub_pm">+-</value>
+ </resource>
+ <resource name="CT_BreakBinSub" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_BreakBinSub_val" action="setValue"/>
+ </resource>
+ </namespace>
+ <namespace name="shared-relationshipReference" file="shared-relationshipReference.rng">
+ <grammar xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
+ <!-- ISO RELAX NG Schema -->
+ <define name="ST_RelationshipId">
+ <data type="string">
+ <xs:documentation>Explicit Relationship ID</xs:documentation>
+ </data>
+ </define>
+ <define name="id">
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Relationship ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="embed">
+ <attribute name="embed">
+ <text/>
+ <xs:documentation>Embedded Image Relationship Target</xs:documentation>
+ </attribute>
+ </define>
+ <define name="link">
+ <attribute name="link"/>
+ </define>
+ <define name="dm">
+ <attribute name="dm"/>
+ </define>
+ <define name="lo">
+ <attribute name="lo"/>
+ </define>
+ <define name="qs">
+ <attribute name="qs"/>
+ </define>
+ <define name="cs">
+ <attribute name="cs"/>
+ </define>
+ <define name="blip">
+ <attribute name="blip"/>
+ </define>
+ <define name="pict">
+ <attribute name="pict"/>
+ </define>
+ <define name="href">
+ <attribute name="href">
+ <text/>
+ <xs:documentation>Hyperlink Target Relationship ID</xs:documentation>
+ </attribute>
+ </define>
+ </grammar>
+ <resource name="ST_RelationshipId" resource="String" generated="yes"/>
+ </namespace>
+ <namespace name="dml-chartDrawing" file="dml-chartDrawing.rng">
+ <start name="pic"/>
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/picture">
+ <!-- ISO RELAX NG Schema -->
+ <include href="dml-shapeProperties.rng"/>
+ <include href="dml-documentProperties.rng"/>
+ <!-- start = pic -->
+ <define name="CT_PictureNonVisual">
+ <element name="cNvPr">
+ <ref name="CT_NonVisualDrawingProps"/>
+ </element>
+ <element name="cNvPicPr">
+ <ref name="CT_NonVisualPictureProperties"/>
+ </element>
+ </define>
+ <define name="CT_Picture">
+ <element name="nvPicPr">
+ <ref name="CT_PictureNonVisual"/>
+ </element>
+ <element name="blipFill">
+ <ref name="CT_BlipFillProperties"/>
+ </element>
+ <element name="spPr">
+ <ref name="CT_ShapeProperties"/>
+ </element>
+ </define>
+ <define name="pic">
+ <element name="pic">
+ <ref name="CT_Picture"/>
+ </element>
+ </define>
+ </grammar>
+ <resource name="CT_PictureNonVisual" resource="Properties">
+ <element name="cNvPr" tokenid="ooxml:CT_PictureNonVisual_cNvPr"/>
+ <element name="cNvPicPr" tokenid="ooxml:CT_PictureNonVisual_cNvPicPr"/>
+ </resource>
+ <resource name="CT_Picture" resource="Shape">
+ <element name="nvPicPr" tokenid="ooxml:CT_Picture_nvPicPr"/>
+ <element name="blipFill" tokenid="ooxml:CT_Picture_blipFill"/>
+ <element name="spPr" tokenid="ooxml:CT_Picture_spPr"/>
+ </resource>
+ <resource name="pic" resource="Properties">
+ <element name="pic" tokenid="ooxml:pic_pic"/>
+ </resource>
+ </namespace>
+ <namespace name="vml-main" file="vml-main.rng" todo="ignore">
+ <start name="shape"/>
+ <start name="shapetype"/>
+ <start name="group"/>
+ <start name="background"/>
+ <start name="fill"/>
+ <start name="formulas"/>
+ <start name="handles"/>
+ <start name="imagedata"/>
+ <start name="path"/>
+ <start name="textbox"/>
+ <start name="shadow"/>
+ <start name="stroke"/>
+ <start name="textpath"/>
+ <start name="arc"/>
+ <start name="curve"/>
+ <start name="image"/>
+ <start name="line"/>
+ <start name="oval"/>
+ <start name="polyline"/>
+ <start name="rect"/>
+ <start name="roundrect"/>
+ <grammar xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wvml="urn:schemas-microsoft-com:office:word" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="urn:schemas-microsoft-com:vml" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="vml-officeDrawing.rng"/>
+ <!-- External schema: http://schemas.openxmlformats.org/wordprocessingml/2006/main -->
+ <include href="vml-wordprocessingDrawing.rng"/>
+ <!-- External schema: http://schemas.openxmlformats.org/officeDocument/2006/relationships -->
+ <include href="vml-spreadsheetDrawing.rng"/>
+ <include href="vml-presentationDrawing.rng"/>
+ <!-- start = shape | shapetype | group | background | fill | formulas | handles | imagedata | path | textbox | shadow | stroke | textpath | arc | curve | image | line | oval | polyline | rect | roundrect -->
+ <define name="AG_Id">
+ <optional>
+ <attribute name="id">
+ <data type="string">
+ <xs:documentation>Unique Identifier</xs:documentation>
+ </data>
+ <xs:documentation>Unique Identifier</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Style">
+ <optional>
+ <attribute name="style">
+ <data type="string">
+ <xs:documentation>Shape Styling Properties</xs:documentation>
+ </data>
+ <xs:documentation>Shape Styling Properties</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Type">
+ <optional>
+ <attribute name="type">
+ <data type="string">
+ <xs:documentation>Shape Type Reference</xs:documentation>
+ </data>
+ <xs:documentation>Shape Type Reference</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Adj">
+ <optional>
+ <attribute name="adj">
+ <data type="string">
+ <xs:documentation>Adjustment Parameters</xs:documentation>
+ </data>
+ <xs:documentation>Adjustment Parameters</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Path">
+ <optional>
+ <attribute name="path">
+ <data type="string">
+ <xs:documentation>Edge Path</xs:documentation>
+ </data>
+ <xs:documentation>Edge Path</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Fill">
+ <optional>
+ <attribute name="filled">
+ <text/>
+ <xs:documentation>Shape Fill Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fillcolor">
+ <text/>
+ <xs:documentation>Fill Color</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Chromakey">
+ <optional>
+ <attribute name="chromakey">
+ <text/>
+ <xs:documentation>Image Transparency Color</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_Ext">
+ <attribute name="ext">
+ <text/>
+ <xs:documentation>VML Extension Handling Behavior</xs:documentation>
+ </attribute>
+ </define>
+ <define name="AG_CoreAttributes">
+ <ref name="AG_Id"/>
+ <ref name="AG_Style"/>
+ <optional>
+ <attribute name="href">
+ <data type="string">
+ <xs:documentation>Hyperlink Target</xs:documentation>
+ </data>
+ <xs:documentation>Hyperlink Target</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="target">
+ <data type="string">
+ <xs:documentation>Hyperlink Display Target</xs:documentation>
+ </data>
+ <xs:documentation>Hyperlink Display Target</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <data type="string">
+ <xs:documentation>CSS Reference</xs:documentation>
+ </data>
+ <xs:documentation>CSS Reference</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <data type="string">
+ <xs:documentation>Shape Title</xs:documentation>
+ </data>
+ <xs:documentation>Shape Title</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alt">
+ <data type="string">
+ <xs:documentation>Alternate Text</xs:documentation>
+ </data>
+ <xs:documentation>Alternate Text</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="coordsize">
+ <data type="string">
+ <xs:documentation>Coordinate Space Size</xs:documentation>
+ </data>
+ <xs:documentation>Coordinate Space Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="coordorigin">
+ <data type="string">
+ <xs:documentation>Coordinate Space Origin</xs:documentation>
+ </data>
+ <xs:documentation>Coordinate Space Origin</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="wrapcoords">
+ <data type="string">
+ <xs:documentation>Shape Bounding Polygon</xs:documentation>
+ </data>
+ <xs:documentation>Shape Bounding Polygon</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="print">
+ <text/>
+ <xs:documentation>Print Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_ShapeAttributes">
+ <ref name="AG_Chromakey"/>
+ <ref name="AG_Fill"/>
+ <optional>
+ <attribute name="opacity">
+ <data type="string">
+ <xs:documentation>Fill Color Opacity</xs:documentation>
+ </data>
+ <xs:documentation>Fill Color Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stroked">
+ <text/>
+ <xs:documentation>Shape Stroke Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strokecolor">
+ <text/>
+ <xs:documentation>Shape Stroke Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strokeweight">
+ <data type="string">
+ <xs:documentation>Shape Stroke Weight</xs:documentation>
+ </data>
+ <xs:documentation>Shape Stroke Weight</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="insetpen">
+ <text/>
+ <xs:documentation>Inset Border From Path</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_OfficeCoreAttributes">
+ <attribute name="o:spid"/>
+ <attribute name="o:oned"/>
+ <attribute name="o:regroupid"/>
+ <attribute name="o:doubleclicknotify"/>
+ <attribute name="o:button"/>
+ <attribute name="o:userhidden"/>
+ <attribute name="o:bullet"/>
+ <attribute name="o:hr"/>
+ <attribute name="o:hrstd"/>
+ <attribute name="o:hrnoshade"/>
+ <attribute name="o:hrpct"/>
+ <attribute name="o:hralign"/>
+ <attribute name="o:allowincell"/>
+ <attribute name="o:allowoverlap"/>
+ <attribute name="o:userdrawn"/>
+ <attribute name="o:bordertopcolor"/>
+ <attribute name="o:borderleftcolor"/>
+ <attribute name="o:borderbottomcolor"/>
+ <attribute name="o:borderrightcolor"/>
+ <attribute name="o:dgmlayout"/>
+ <attribute name="o:dgmnodekind"/>
+ <attribute name="o:dgmlayoutmru"/>
+ <attribute name="o:insetmode"/>
+ </define>
+ <define name="AG_OfficeShapeAttributes">
+ <attribute name="o:spt"/>
+ <attribute name="o:connectortype"/>
+ <attribute name="o:bwmode"/>
+ <attribute name="o:bwpure"/>
+ <attribute name="o:bwnormal"/>
+ <attribute name="o:forcedash"/>
+ <attribute name="o:oleicon"/>
+ <attribute name="o:ole"/>
+ <attribute name="o:preferrelative"/>
+ <attribute name="o:cliptowrap"/>
+ <attribute name="o:clip"/>
+ </define>
+ <define name="AG_AllCoreAttributes">
+ <ref name="AG_CoreAttributes"/>
+ <ref name="AG_OfficeCoreAttributes"/>
+ </define>
+ <define name="AG_AllShapeAttributes">
+ <ref name="AG_ShapeAttributes"/>
+ <ref name="AG_OfficeShapeAttributes"/>
+ </define>
+ <define name="AG_ImageAttributes">
+ <optional>
+ <attribute name="src">
+ <data type="string">
+ <xs:documentation>Image Source</xs:documentation>
+ </data>
+ <xs:documentation>Image Source</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cropleft">
+ <data type="string">
+ <xs:documentation>Image Left Crop</xs:documentation>
+ </data>
+ <xs:documentation>Image Left Crop</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="croptop">
+ <data type="string">
+ <xs:documentation>Image Top Crop</xs:documentation>
+ </data>
+ <xs:documentation>Image Top Crop</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cropright">
+ <data type="string">
+ <xs:documentation>Image Right Crop</xs:documentation>
+ </data>
+ <xs:documentation>Image Right Crop</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cropbottom">
+ <data type="string">
+ <xs:documentation>Image Bottom Crop</xs:documentation>
+ </data>
+ <xs:documentation>Image Bottom Crop</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gain">
+ <data type="string">
+ <xs:documentation>Image Intensity</xs:documentation>
+ </data>
+ <xs:documentation>Image Intensity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="blacklevel">
+ <data type="string">
+ <xs:documentation>Image Brightness</xs:documentation>
+ </data>
+ <xs:documentation>Image Brightness</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gamma">
+ <data type="string">
+ <xs:documentation>Image Gamma Correction</xs:documentation>
+ </data>
+ <xs:documentation>Image Gamma Correction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="grayscale">
+ <text/>
+ <xs:documentation>Image Grayscale Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bilevel">
+ <text/>
+ <xs:documentation>Image Bilevel Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="AG_StrokeAttributes">
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Stroke Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="weight">
+ <data type="string">
+ <xs:documentation>Stroke Weight</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Weight</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Stroke Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="opacity">
+ <data type="string">
+ <xs:documentation>Stroke Opacity</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linestyle">
+ <text/>
+ <xs:documentation>Stroke Line Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="miterlimit">
+ <data type="decimal">
+ <xs:documentation>Miter Joint Limit</xs:documentation>
+ </data>
+ <xs:documentation>Miter Joint Limit</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="joinstyle">
+ <text/>
+ <xs:documentation>Line End Join Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endcap">
+ <text/>
+ <xs:documentation>Line End Cap</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dashstyle">
+ <data type="string">
+ <xs:documentation>Stroke Dash Pattern</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Dash Pattern</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filltype">
+ <text/>
+ <xs:documentation>Stroke Image Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="src">
+ <data type="string">
+ <xs:documentation>Stroke Image Location</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Image Location</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imageaspect">
+ <text/>
+ <xs:documentation>Stroke Image Aspect Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagesize">
+ <data type="string">
+ <xs:documentation>Stroke Image Size</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Image Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagealignshape">
+ <text/>
+ <xs:documentation>Stoke Image Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color2">
+ <text/>
+ <xs:documentation>Stroke Alternate Pattern Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrow">
+ <text/>
+ <xs:documentation>Line Start Arrowhead</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrowwidth">
+ <text/>
+ <xs:documentation>Line Start Arrowhead Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrowlength">
+ <text/>
+ <xs:documentation>Line Start Arrowhead Length</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrow">
+ <text/>
+ <xs:documentation>Line End Arrowhead</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrowwidth">
+ <text/>
+ <xs:documentation>Line End Arrowhead Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrowlength">
+ <text/>
+ <xs:documentation>Line End Arrowhead Length</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:href"/>
+ <attribute name="o:althref"/>
+ <attribute name="o:title"/>
+ <attribute name="o:forcedash"/>
+ <optional>
+ <attribute name="r:id"/>
+ </optional>
+ <optional>
+ <attribute name="insetpen">
+ <text/>
+ <xs:documentation>Inset Border From Path</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:relid"/>
+ </define>
+ <define name="EG_ShapeElements">
+ <choice>
+ <ref name="path"/>
+ <ref name="formulas"/>
+ <ref name="handles"/>
+ <ref name="fill"/>
+ <ref name="stroke"/>
+ <ref name="shadow"/>
+ <ref name="textbox"/>
+ <ref name="textpath"/>
+ <ref name="imagedata"/>
+ <element name="o:skew">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="o:extrusion">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="o:callout">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="o:lock">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="o:clippath">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="o:signatureline">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:wrap">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:anchorlock">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:bordertop">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:borderbottom">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:borderleft">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="wvml:borderright">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <optional>
+ <element name="x:ClientData">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="p:textdata">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+ <define name="shape">
+ <element name="shape">
+ <ref name="CT_Shape"/>
+ </element>
+ </define>
+ <define name="shapetype">
+ <element name="shapetype">
+ <ref name="CT_Shapetype"/>
+ </element>
+ </define>
+ <define name="group">
+ <element name="group">
+ <ref name="CT_Group"/>
+ </element>
+ </define>
+ <define name="background">
+ <element name="background">
+ <ref name="CT_Background"/>
+ </element>
+ </define>
+ <define name="CT_Shape">
+ <oneOrMore>
+ <choice>
+ <ref name="EG_ShapeElements"/>
+ <element name="o:ink">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <element name="p:iscomment">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <ref name="AG_Type"/>
+ <ref name="AG_Adj"/>
+ <ref name="AG_Path"/>
+ <attribute name="o:gfxdata"/>
+ <optional>
+ <attribute name="equationxml">
+ <data type="string">
+ <xs:documentation>Storage for Alternate Math Content</xs:documentation>
+ </data>
+ <xs:documentation>Storage for Alternate Math Content</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Shapetype">
+ <group>
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ <optional>
+ <element name="o:complex">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ </group>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <ref name="AG_Adj"/>
+ <ref name="AG_Path"/>
+ <attribute name="o:master"/>
+ </define>
+ <define name="CT_Group">
+ <oneOrMore>
+ <choice>
+ <ref name="EG_ShapeElements"/>
+ <ref name="group"/>
+ <ref name="shape"/>
+ <ref name="shapetype"/>
+ <ref name="arc"/>
+ <ref name="curve"/>
+ <ref name="image"/>
+ <ref name="line"/>
+ <ref name="oval"/>
+ <ref name="polyline"/>
+ <ref name="rect"/>
+ <ref name="roundrect"/>
+ <element name="o:diagram">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_Fill"/>
+ <optional>
+ <attribute name="editas">
+ <text/>
+ <xs:documentation>Group Diagram Type</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:tableproperties"/>
+ <attribute name="o:tablelimits"/>
+ </define>
+ <define name="CT_Background">
+ <optional>
+ <ref name="fill"/>
+ </optional>
+ <ref name="AG_Id"/>
+ <ref name="AG_Fill"/>
+ <attribute name="o:bwmode"/>
+ <attribute name="o:bwpure"/>
+ <attribute name="o:bwnormal"/>
+ <attribute name="o:targetscreensize"/>
+ </define>
+ <define name="fill">
+ <element name="fill">
+ <ref name="CT_Fill"/>
+ </element>
+ </define>
+ <define name="formulas">
+ <element name="formulas">
+ <ref name="CT_Formulas"/>
+ </element>
+ </define>
+ <define name="handles">
+ <element name="handles">
+ <ref name="CT_Handles"/>
+ </element>
+ </define>
+ <define name="imagedata">
+ <element name="imagedata">
+ <ref name="CT_ImageData"/>
+ </element>
+ </define>
+ <define name="path">
+ <element name="path">
+ <ref name="CT_Path"/>
+ </element>
+ </define>
+ <define name="textbox">
+ <element name="textbox">
+ <ref name="CT_Textbox"/>
+ </element>
+ </define>
+ <define name="shadow">
+ <element name="shadow">
+ <ref name="CT_Shadow"/>
+ </element>
+ </define>
+ <define name="stroke">
+ <element name="stroke">
+ <ref name="CT_Stroke"/>
+ </element>
+ </define>
+ <define name="textpath">
+ <element name="textpath">
+ <ref name="CT_TextPath"/>
+ </element>
+ </define>
+ <define name="CT_Fill">
+ <optional>
+ <element name="o:fill">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <ref name="AG_Id"/>
+ <optional>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Fill Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Fill Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Primary Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="opacity">
+ <data type="string">
+ <xs:documentation>Primary Color Opacity</xs:documentation>
+ </data>
+ <xs:documentation>Primary Color Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color2">
+ <text/>
+ <xs:documentation>Secondary Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="src">
+ <data type="string">
+ <xs:documentation>Fill Image Source</xs:documentation>
+ </data>
+ <xs:documentation>Fill Image Source</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:href"/>
+ <attribute name="o:althref"/>
+ <optional>
+ <attribute name="size">
+ <data type="string">
+ <xs:documentation>Fill Image Size</xs:documentation>
+ </data>
+ <xs:documentation>Fill Image Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="origin">
+ <data type="string">
+ <xs:documentation>Fill Image Origin</xs:documentation>
+ </data>
+ <xs:documentation>Fill Image Origin</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="position">
+ <data type="string">
+ <xs:documentation>Fill Image Position</xs:documentation>
+ </data>
+ <xs:documentation>Fill Image Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="aspect">
+ <text/>
+ <xs:documentation>Image Aspect Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colors">
+ <data type="string">
+ <xs:documentation>Intermediate Colors</xs:documentation>
+ </data>
+ <xs:documentation>Intermediate Colors</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="angle">
+ <data type="decimal">
+ <xs:documentation>Gradient Angle</xs:documentation>
+ </data>
+ <xs:documentation>Gradient Angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alignshape">
+ <text/>
+ <xs:documentation>Align Image With Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="focus">
+ <data type="string">
+ <xs:documentation>Gradient Center</xs:documentation>
+ </data>
+ <xs:documentation>Gradient Center</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="focussize">
+ <data type="string">
+ <xs:documentation>Radial Gradient Size</xs:documentation>
+ </data>
+ <xs:documentation>Radial Gradient Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="focusposition">
+ <data type="string">
+ <xs:documentation>Radial Gradient Center</xs:documentation>
+ </data>
+ <xs:documentation>Radial Gradient Center</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="method">
+ <text/>
+ <xs:documentation>Gradient Fill Method</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:detectmouseclick"/>
+ <attribute name="o:title"/>
+ <attribute name="o:opacity2"/>
+ <optional>
+ <attribute name="recolor">
+ <text/>
+ <xs:documentation>Recolor Fill as Picture</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <text/>
+ <xs:documentation>Rotate Fill with Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r:id"/>
+ </optional>
+ <optional>
+ <attribute name="o:relid"/>
+ </optional>
+ </define>
+ <define name="CT_Formulas">
+ <zeroOrMore>
+ <element name="f">
+ <ref name="CT_F"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_F">
+ <attribute name="eqn">
+ <data type="string">
+ <xs:documentation>Equation</xs:documentation>
+ </data>
+ <xs:documentation>Equation</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Handles">
+ <zeroOrMore>
+ <element name="h">
+ <ref name="CT_H"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_H">
+ <attribute name="position">
+ <data type="string">
+ <xs:documentation>Handle Position</xs:documentation>
+ </data>
+ <xs:documentation>Handle Position</xs:documentation>
+ </attribute>
+ <attribute name="polar">
+ <data type="string">
+ <xs:documentation>Handle Polar Center</xs:documentation>
+ </data>
+ <xs:documentation>Handle Polar Center</xs:documentation>
+ </attribute>
+ <attribute name="map">
+ <data type="string">
+ <xs:documentation>Handle Coordinate Mapping</xs:documentation>
+ </data>
+ <xs:documentation>Handle Coordinate Mapping</xs:documentation>
+ </attribute>
+ <attribute name="invx">
+ <text/>
+ <xs:documentation>Invert Handle's X Position</xs:documentation>
+ </attribute>
+ <attribute name="invy">
+ <text/>
+ <xs:documentation>Invert Handle's Y Position</xs:documentation>
+ </attribute>
+ <attribute name="switch">
+ <text/>
+ <xs:documentation>Handle Inversion Toggle</xs:documentation>
+ </attribute>
+ <attribute name="xrange">
+ <data type="string">
+ <xs:documentation>Handle X Position Range</xs:documentation>
+ </data>
+ <xs:documentation>Handle X Position Range</xs:documentation>
+ </attribute>
+ <attribute name="yrange">
+ <data type="string">
+ <xs:documentation>Handle Y Position Range</xs:documentation>
+ </data>
+ <xs:documentation>Handle Y Position Range</xs:documentation>
+ </attribute>
+ <attribute name="radiusrange">
+ <data type="string">
+ <xs:documentation>Handle Polar Radius Range</xs:documentation>
+ </data>
+ <xs:documentation>Handle Polar Radius Range</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ImageData">
+ <ref name="AG_Id"/>
+ <ref name="AG_ImageAttributes"/>
+ <ref name="AG_Chromakey"/>
+ <optional>
+ <attribute name="embosscolor">
+ <text/>
+ <xs:documentation>Embossed Color</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="recolortarget">
+ <text/>
+ <xs:documentation>Black Recoloring Color</xs:documentation>
+ </attribute>
+ <attribute name="o:href"/>
+ <attribute name="o:althref"/>
+ <attribute name="o:title"/>
+ <attribute name="o:oleid"/>
+ <attribute name="o:detectmouseclick"/>
+ <attribute name="o:movie"/>
+ <attribute name="o:relid"/>
+ <attribute name="r:id"/>
+ <attribute name="r:pict"/>
+ <attribute name="r:href"/>
+ </define>
+ <define name="CT_Path">
+ <ref name="AG_Id"/>
+ <optional>
+ <attribute name="v">
+ <data type="string">
+ <xs:documentation>Path Definition</xs:documentation>
+ </data>
+ <xs:documentation>Path Definition</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="limo">
+ <data type="string">
+ <xs:documentation>Limo Stretch Point</xs:documentation>
+ </data>
+ <xs:documentation>Limo Stretch Point</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textboxrect">
+ <data type="string">
+ <xs:documentation>Text Box Bounding Box</xs:documentation>
+ </data>
+ <xs:documentation>Text Box Bounding Box</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fillok">
+ <text/>
+ <xs:documentation>Shape Fill Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strokeok">
+ <text/>
+ <xs:documentation>Stroke Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shadowok">
+ <text/>
+ <xs:documentation>Shadow Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="arrowok">
+ <text/>
+ <xs:documentation>Arrowhead Display Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientshapeok">
+ <text/>
+ <xs:documentation>Gradient Shape Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textpathok">
+ <text/>
+ <xs:documentation>Text Path Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="insetpenok">
+ <text/>
+ <xs:documentation>Inset Stroke From Path Flag</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:connecttype"/>
+ <attribute name="o:connectlocs"/>
+ <attribute name="o:connectangles"/>
+ <attribute name="o:extrusionok"/>
+ </define>
+ <define name="CT_Shadow">
+ <ref name="AG_Id"/>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Shadow Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Shadow Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="obscured">
+ <text/>
+ <xs:documentation>Shadow Transparency</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Shadow Primary Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="opacity">
+ <data type="string">
+ <xs:documentation>Shadow Opacity</xs:documentation>
+ </data>
+ <xs:documentation>Shadow Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <data type="string">
+ <xs:documentation>Shadow Primary Offset</xs:documentation>
+ </data>
+ <xs:documentation>Shadow Primary Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color2">
+ <text/>
+ <xs:documentation>Shadow Secondary Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset2">
+ <data type="string">
+ <xs:documentation>Shadow Secondary Offset</xs:documentation>
+ </data>
+ <xs:documentation>Shadow Secondary Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="origin">
+ <data type="string">
+ <xs:documentation>Shadow Origin</xs:documentation>
+ </data>
+ <xs:documentation>Shadow Origin</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="matrix">
+ <data type="string">
+ <xs:documentation>Shadow Perspective Matrix</xs:documentation>
+ </data>
+ <xs:documentation>Shadow Perspective Matrix</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Stroke">
+ <group>
+ <optional>
+ <element name="o:left">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="o:top">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="o:right">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="o:bottom">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="o:column">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ </group>
+ <ref name="AG_Id"/>
+ <ref name="AG_StrokeAttributes"/>
+ </define>
+ <define name="CT_Textbox">
+ <choice>
+ <optional>
+ <element name="w:txbxContent">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </choice>
+ <ref name="AG_Id"/>
+ <ref name="AG_Style"/>
+ <optional>
+ <attribute name="inset">
+ <data type="string">
+ <xs:documentation>Text Box Inset</xs:documentation>
+ </data>
+ <xs:documentation>Text Box Inset</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="o:singleclick"/>
+ <attribute name="o:insetmode"/>
+ </define>
+ <define name="CT_TextPath">
+ <ref name="AG_Id"/>
+ <ref name="AG_Style"/>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Text Path Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fitshape">
+ <text/>
+ <xs:documentation>Shape Fit Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fitpath">
+ <text/>
+ <xs:documentation>Path Fit Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="trim">
+ <text/>
+ <xs:documentation>Text Path Trim Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xscale">
+ <text/>
+ <xs:documentation>Text X-Scaling</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="string">
+ <data type="string">
+ <xs:documentation>Text Path Text</xs:documentation>
+ </data>
+ <xs:documentation>Text Path Text</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="arc">
+ <element name="arc">
+ <ref name="CT_Arc"/>
+ </element>
+ </define>
+ <define name="curve">
+ <element name="curve">
+ <ref name="CT_Curve"/>
+ </element>
+ </define>
+ <define name="image">
+ <element name="image">
+ <ref name="CT_Image"/>
+ </element>
+ </define>
+ <define name="line">
+ <element name="line">
+ <ref name="CT_Line"/>
+ </element>
+ </define>
+ <define name="oval">
+ <element name="oval">
+ <ref name="CT_Oval"/>
+ </element>
+ </define>
+ <define name="polyline">
+ <element name="polyline">
+ <ref name="CT_PolyLine"/>
+ </element>
+ </define>
+ <define name="rect">
+ <element name="rect">
+ <ref name="CT_Rect"/>
+ </element>
+ </define>
+ <define name="roundrect">
+ <element name="roundrect">
+ <ref name="CT_RoundRect"/>
+ </element>
+ </define>
+ <define name="CT_Arc">
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <optional>
+ <attribute name="startAngle">
+ <data type="decimal">
+ <xs:documentation>Starting Angle</xs:documentation>
+ </data>
+ <xs:documentation>Starting Angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endAngle">
+ <data type="decimal">
+ <xs:documentation>Ending Angle</xs:documentation>
+ </data>
+ <xs:documentation>Ending Angle</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Curve">
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <optional>
+ <attribute name="from">
+ <data type="string">
+ <xs:documentation>Curve Starting Point</xs:documentation>
+ </data>
+ <xs:documentation>Curve Starting Point</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="control1">
+ <data type="string">
+ <xs:documentation>First Curve Control Point</xs:documentation>
+ </data>
+ <xs:documentation>First Curve Control Point</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="control2">
+ <data type="string">
+ <xs:documentation>Second Curve Control Point</xs:documentation>
+ </data>
+ <xs:documentation>Second Curve Control Point</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="to">
+ <data type="string">
+ <xs:documentation>Curve Ending Point</xs:documentation>
+ </data>
+ <xs:documentation>Curve Ending Point</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Image">
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <ref name="AG_ImageAttributes"/>
+ </define>
+ <define name="CT_Line">
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <optional>
+ <attribute name="from">
+ <data type="string">
+ <xs:documentation>Line Start</xs:documentation>
+ </data>
+ <xs:documentation>Line Start</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="to">
+ <data type="string">
+ <xs:documentation>Line End Point</xs:documentation>
+ </data>
+ <xs:documentation>Line End Point</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Oval">
+ <oneOrMore>
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ </oneOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ </define>
+ <define name="CT_PolyLine">
+ <zeroOrMore>
+ <choice>
+ <ref name="EG_ShapeElements"/>
+ <element name="o:ink">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <optional>
+ <attribute name="points">
+ <data type="string">
+ <xs:documentation>Points for Compound Line</xs:documentation>
+ </data>
+ <xs:documentation>Points for Compound Line</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Rect">
+ <oneOrMore>
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ </oneOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ </define>
+ <define name="CT_RoundRect">
+ <oneOrMore>
+ <zeroOrMore>
+ <ref name="EG_ShapeElements"/>
+ </zeroOrMore>
+ </oneOrMore>
+ <ref name="AG_AllCoreAttributes"/>
+ <ref name="AG_AllShapeAttributes"/>
+ <optional>
+ <attribute name="arcsize">
+ <data type="string">
+ <xs:documentation>Rounded Corner Arc Size</xs:documentation>
+ </data>
+ <xs:documentation>Rounded Corner Arc Size</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_Ext">
+ <list>
+ <xs:documentation>VML Extension Handling Behaviors</xs:documentation>
+ <choice>
+ <!-- Not renderable -->
+ <value>view</value>
+ <!-- Editable -->
+ <value>edit</value>
+ <!-- Renderable -->
+ <value>backwardCompatible</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TrueFalse">
+ <list>
+ <xs:documentation>Boolean Value</xs:documentation>
+ <choice>
+ <!-- True -->
+ <value>t</value>
+ <!-- False -->
+ <value>f</value>
+ <!-- True -->
+ <value>true</value>
+ <!-- False -->
+ <value>false</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ColorType">
+ <data type="string">
+ <xs:documentation>Color Type</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_FillType">
+ <list>
+ <xs:documentation>Shape Fill Type</xs:documentation>
+ <choice>
+ <!-- Solid Fill -->
+ <value>solid</value>
+ <!-- Linear Gradient -->
+ <value>gradient</value>
+ <!-- Radial Gradient -->
+ <value>gradientRadial</value>
+ <!-- Tiled Image -->
+ <value>tile</value>
+ <!-- Image Pattern -->
+ <value>pattern</value>
+ <!-- Stretch Image to Fit -->
+ <value>frame</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_FillMethod">
+ <list>
+ <xs:documentation>Gradient Fill Computation Type</xs:documentation>
+ <choice>
+ <!-- No Gradient Fill -->
+ <value>none</value>
+ <!-- Linear Fill -->
+ <value>linear</value>
+ <!-- Sigma Fill -->
+ <value>sigma</value>
+ <!-- Application Default Fill -->
+ <value>any</value>
+ <!-- Linear Sigma Fill -->
+ <value>linear sigma</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ShadowType">
+ <list>
+ <xs:documentation>Shadow Type</xs:documentation>
+ <choice>
+ <!-- Single Shadow -->
+ <value>single</value>
+ <!-- Double Shadow -->
+ <value>double</value>
+ <!-- Embossed Shadow -->
+ <value>emboss</value>
+ <!-- Perspective Shadow -->
+ <value>perspective</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeLineStyle">
+ <list>
+ <xs:documentation>Stroke Line Style</xs:documentation>
+ <choice>
+ <!-- Single Line -->
+ <value>single</value>
+ <!-- Two Thin Lines -->
+ <value>thinThin</value>
+ <!-- Thin Line Outside Thick Line -->
+ <value>thinThick</value>
+ <!-- Thick Line Outside Thin Line -->
+ <value>thickThin</value>
+ <!-- Thck Line Between Thin Lines -->
+ <value>thickBetweenThin</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeJoinStyle">
+ <list>
+ <xs:documentation>Line Join Type</xs:documentation>
+ <choice>
+ <!-- Round Joint -->
+ <value>round</value>
+ <!-- Bevel Joint -->
+ <value>bevel</value>
+ <!-- Miter Joint -->
+ <value>miter</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeEndCap">
+ <list>
+ <xs:documentation>Stroke End Cap Type</xs:documentation>
+ <choice>
+ <!-- Flat End -->
+ <value>flat</value>
+ <!-- Square End -->
+ <value>square</value>
+ <!-- Round End -->
+ <value>round</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeArrowLength">
+ <list>
+ <xs:documentation>Stroke Arrowhead Length</xs:documentation>
+ <choice>
+ <!-- Short Arrowhead -->
+ <value>short</value>
+ <!-- Medium Arrowhead -->
+ <value>medium</value>
+ <!-- Long Arrowhead -->
+ <value>long</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeArrowWidth">
+ <list>
+ <xs:documentation>Stroke Arrowhead Width</xs:documentation>
+ <choice>
+ <!-- Narrow Arrowhead -->
+ <value>narrow</value>
+ <!-- Medium Arrowhead -->
+ <value>medium</value>
+ <!-- Wide Arrowhead -->
+ <value>wide</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_StrokeArrowType">
+ <list>
+ <xs:documentation>Stroke Arrowhead Type</xs:documentation>
+ <choice>
+ <!-- No Arrowhead -->
+ <value>none</value>
+ <!-- Block Arrowhead -->
+ <value>block</value>
+ <!-- Classic Arrowhead -->
+ <value>classic</value>
+ <!-- Oval Arrowhead -->
+ <value>oval</value>
+ <!-- Diamond Arrowhead -->
+ <value>diamond</value>
+ <!-- Open Arrowhead -->
+ <value>open</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ImageAspect">
+ <list>
+ <xs:documentation>Image Scaling Behavior</xs:documentation>
+ <choice>
+ <!-- Ignore Aspect Ratio -->
+ <value>ignore</value>
+ <!-- At Most -->
+ <value>atMost</value>
+ <!-- At Least -->
+ <value>atLeast</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TrueFalseBlank">
+ <list>
+ <xs:documentation>Boolean Value with Blank [False] State</xs:documentation>
+ <choice>
+ <!-- Logical True -->
+ <value>t</value>
+ <!-- Logical False -->
+ <value>f</value>
+ <!-- Logical True -->
+ <value>true</value>
+ <!-- Logical False -->
+ <value>false</value>
+ <!-- Blank – Logical False -->
+ <value/>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_EditAs">
+ <list>
+ <xs:documentation>Shape Grouping Types</xs:documentation>
+ <choice>
+ <!-- Shape Canvas -->
+ <value>canvas</value>
+ <!-- Organization Chart Diagram -->
+ <value>orgchart</value>
+ <!-- Radial Diagram -->
+ <value>radial</value>
+ <!-- Cycle Diagram -->
+ <value>cycle</value>
+ <!-- Pyramid Diagram -->
+ <value>stacked</value>
+ <!-- Venn Diagram -->
+ <value>venn</value>
+ <!-- Bullseye Diagram -->
+ <value>bullseye</value>
+ </choice>
+ </list>
+ </define>
+ <define name="BUILT_IN_ANY_TYPE">
+ <zeroOrMore>
+ <choice>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ </grammar>
+ <resource name="ST_Ext" resource="List" generated="yes">
+ <value name="view" tokenid="ooxml:Value_vml_ST_Ext_view">view</value>
+ <value name="edit" tokenid="ooxml:Value_vml_ST_Ext_edit">edit</value>
+ <value name="backwardCompatible" tokenid="ooxml:Value_vml_ST_Ext_backwardCompatible">backwardCompatible</value>
+ </resource>
+ <resource name="ST_TrueFalse" resource="List" generated="yes">
+ <value name="t" tokenid="ooxml:Value_vml_ST_TrueFalse_t">t</value>
+ <value name="f" tokenid="ooxml:Value_vml_ST_TrueFalse_f">f</value>
+ <value name="true" tokenid="ooxml:Value_vml_ST_TrueFalse_true">true</value>
+ <value name="false" tokenid="ooxml:Value_vml_ST_TrueFalse_false">false</value>
+ </resource>
+ <resource name="ST_ColorType" resource="String" generated="yes"/>
+ <resource name="ST_FillType" resource="List" generated="yes">
+ <value name="solid" tokenid="ooxml:Value_vml_ST_FillType_solid">solid</value>
+ <value name="gradient" tokenid="ooxml:Value_vml_ST_FillType_gradient">gradient</value>
+ <value name="gradientRadial" tokenid="ooxml:Value_vml_ST_FillType_gradientRadial">gradientRadial</value>
+ <value name="tile" tokenid="ooxml:Value_vml_ST_FillType_tile">tile</value>
+ <value name="pattern" tokenid="ooxml:Value_vml_ST_FillType_pattern">pattern</value>
+ <value name="frame" tokenid="ooxml:Value_vml_ST_FillType_frame">frame</value>
+ </resource>
+ <resource name="ST_FillMethod" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_vml_ST_FillMethod_none">none</value>
+ <value name="linear" tokenid="ooxml:Value_vml_ST_FillMethod_linear">linear</value>
+ <value name="sigma" tokenid="ooxml:Value_vml_ST_FillMethod_sigma">sigma</value>
+ <value name="any" tokenid="ooxml:Value_vml_ST_FillMethod_any">any</value>
+ <value name="linear_sigma" tokenid="ooxml:Value_vml_ST_FillMethod_linear_sigma">linear sigma</value>
+ </resource>
+ <resource name="ST_ShadowType" resource="List" generated="yes">
+ <value name="single" tokenid="ooxml:Value_vml_ST_ShadowType_single">single</value>
+ <value name="double" tokenid="ooxml:Value_vml_ST_ShadowType_double">double</value>
+ <value name="emboss" tokenid="ooxml:Value_vml_ST_ShadowType_emboss">emboss</value>
+ <value name="perspective" tokenid="ooxml:Value_vml_ST_ShadowType_perspective">perspective</value>
+ </resource>
+ <resource name="ST_StrokeLineStyle" resource="List" generated="yes">
+ <value name="single" tokenid="ooxml:Value_vml_ST_StrokeLineStyle_single">single</value>
+ <value name="thinThin" tokenid="ooxml:Value_vml_ST_StrokeLineStyle_thinThin">thinThin</value>
+ <value name="thinThick" tokenid="ooxml:Value_vml_ST_StrokeLineStyle_thinThick">thinThick</value>
+ <value name="thickThin" tokenid="ooxml:Value_vml_ST_StrokeLineStyle_thickThin">thickThin</value>
+ <value name="thickBetweenThin" tokenid="ooxml:Value_vml_ST_StrokeLineStyle_thickBetweenThin">thickBetweenThin</value>
+ </resource>
+ <resource name="ST_StrokeJoinStyle" resource="List" generated="yes">
+ <value name="round" tokenid="ooxml:Value_vml_ST_StrokeJoinStyle_round">round</value>
+ <value name="bevel" tokenid="ooxml:Value_vml_ST_StrokeJoinStyle_bevel">bevel</value>
+ <value name="miter" tokenid="ooxml:Value_vml_ST_StrokeJoinStyle_miter">miter</value>
+ </resource>
+ <resource name="ST_StrokeEndCap" resource="List" generated="yes">
+ <value name="flat" tokenid="ooxml:Value_vml_ST_StrokeEndCap_flat">flat</value>
+ <value name="square" tokenid="ooxml:Value_vml_ST_StrokeEndCap_square">square</value>
+ <value name="round" tokenid="ooxml:Value_vml_ST_StrokeEndCap_round">round</value>
+ </resource>
+ <resource name="ST_StrokeArrowLength" resource="List" generated="yes">
+ <value name="short" tokenid="ooxml:Value_vml_ST_StrokeArrowLength_short">short</value>
+ <value name="medium" tokenid="ooxml:Value_vml_ST_StrokeArrowLength_medium">medium</value>
+ <value name="long" tokenid="ooxml:Value_vml_ST_StrokeArrowLength_long">long</value>
+ </resource>
+ <resource name="ST_StrokeArrowWidth" resource="List" generated="yes">
+ <value name="narrow" tokenid="ooxml:Value_vml_ST_StrokeArrowWidth_narrow">narrow</value>
+ <value name="medium" tokenid="ooxml:Value_vml_ST_StrokeArrowWidth_medium">medium</value>
+ <value name="wide" tokenid="ooxml:Value_vml_ST_StrokeArrowWidth_wide">wide</value>
+ </resource>
+ <resource name="ST_StrokeArrowType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_vml_ST_StrokeArrowType_none">none</value>
+ <value name="block" tokenid="ooxml:Value_vml_ST_StrokeArrowType_block">block</value>
+ <value name="classic" tokenid="ooxml:Value_vml_ST_StrokeArrowType_classic">classic</value>
+ <value name="oval" tokenid="ooxml:Value_vml_ST_StrokeArrowType_oval">oval</value>
+ <value name="diamond" tokenid="ooxml:Value_vml_ST_StrokeArrowType_diamond">diamond</value>
+ <value name="open" tokenid="ooxml:Value_vml_ST_StrokeArrowType_open">open</value>
+ </resource>
+ <resource name="ST_ImageAspect" resource="List" generated="yes">
+ <value name="ignore" tokenid="ooxml:Value_vml_ST_ImageAspect_ignore">ignore</value>
+ <value name="atMost" tokenid="ooxml:Value_vml_ST_ImageAspect_atMost">atMost</value>
+ <value name="atLeast" tokenid="ooxml:Value_vml_ST_ImageAspect_atLeast">atLeast</value>
+ </resource>
+ <resource name="ST_TrueFalseBlank" resource="List" generated="yes">
+ <value name="t" tokenid="ooxml:Value_vml_ST_TrueFalseBlank_t">t</value>
+ <value name="f" tokenid="ooxml:Value_vml_ST_TrueFalseBlank_f">f</value>
+ <value name="true" tokenid="ooxml:Value_vml_ST_TrueFalseBlank_true">true</value>
+ <value name="false" tokenid="ooxml:Value_vml_ST_TrueFalseBlank_false">false</value>
+ <value name="" tokenid="ooxml:Value_vml_ST_TrueFalseBlank_"/>
+ </resource>
+ <resource name="ST_EditAs" resource="List" generated="yes">
+ <value name="canvas" tokenid="ooxml:Value_vml_ST_EditAs_canvas">canvas</value>
+ <value name="orgchart" tokenid="ooxml:Value_vml_ST_EditAs_orgchart">orgchart</value>
+ <value name="radial" tokenid="ooxml:Value_vml_ST_EditAs_radial">radial</value>
+ <value name="cycle" tokenid="ooxml:Value_vml_ST_EditAs_cycle">cycle</value>
+ <value name="stacked" tokenid="ooxml:Value_vml_ST_EditAs_stacked">stacked</value>
+ <value name="venn" tokenid="ooxml:Value_vml_ST_EditAs_venn">venn</value>
+ <value name="bullseye" tokenid="ooxml:Value_vml_ST_EditAs_bullseye">bullseye</value>
+ </resource>
+ </namespace>
+ <namespace name="vml-officeDrawing" file="vml-officeDrawing.rng">
+ <start name="shapedefaults"/>
+ <start name="shapelayout"/>
+ <start name="signatureline"/>
+ <start name="ink"/>
+ <start name="diagram"/>
+ <start name="skew"/>
+ <start name="extrusion"/>
+ <start name="callout"/>
+ <start name="lock"/>
+ <start name="OLEObject"/>
+ <start name="complex"/>
+ <start name="left"/>
+ <start name="top"/>
+ <start name="right"/>
+ <start name="bottom"/>
+ <start name="column"/>
+ <start name="clippath"/>
+ <start name="fill"/>
+ <grammar xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns:v="urn:schemas-microsoft-com:vml" xmlns="http://relaxng.org/ns/structure/1.0" ns="urn:schemas-microsoft-com:office:office" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <include href="vml-main.rng"/>
+ <!-- External schema: http://schemas.openxmlformats.org/officeDocument/2006/relationships -->
+ <!-- start = shapedefaults | shapelayout | signatureline | ink | diagram | skew | extrusion | callout | lock | OLEObject | complex | left | top | right | bottom | column | clippath | fill -->
+ <define name="bwmode">
+ <attribute name="bwmode"/>
+ </define>
+ <define name="bwpure">
+ <attribute name="bwpure"/>
+ </define>
+ <define name="bwnormal">
+ <attribute name="bwnormal"/>
+ </define>
+ <define name="targetscreensize">
+ <attribute name="targetscreensize"/>
+ </define>
+ <define name="insetmode">
+ <attribute name="insetmode"/>
+ </define>
+ <define name="spt">
+ <attribute name="spt">
+ <data type="float"/>
+ </attribute>
+ </define>
+ <define name="wrapcoords">
+ <attribute name="wrapcoords">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="oned">
+ <attribute name="oned"/>
+ </define>
+ <define name="regroupid">
+ <attribute name="regroupid">
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="doubleclicknotify">
+ <attribute name="doubleclicknotify"/>
+ </define>
+ <define name="connectortype">
+ <attribute name="connectortype"/>
+ </define>
+ <define name="button">
+ <attribute name="button"/>
+ </define>
+ <define name="userhidden">
+ <attribute name="userhidden"/>
+ </define>
+ <define name="forcedash">
+ <attribute name="forcedash"/>
+ </define>
+ <define name="oleicon">
+ <attribute name="oleicon"/>
+ </define>
+ <define name="ole">
+ <attribute name="ole"/>
+ </define>
+ <define name="preferrelative">
+ <attribute name="preferrelative"/>
+ </define>
+ <define name="cliptowrap">
+ <attribute name="cliptowrap"/>
+ </define>
+ <define name="clip">
+ <attribute name="clip"/>
+ </define>
+ <define name="bullet">
+ <attribute name="bullet"/>
+ </define>
+ <define name="hr">
+ <attribute name="hr"/>
+ </define>
+ <define name="hrstd">
+ <attribute name="hrstd"/>
+ </define>
+ <define name="hrnoshade">
+ <attribute name="hrnoshade"/>
+ </define>
+ <define name="hrpct">
+ <attribute name="hrpct">
+ <data type="float"/>
+ </attribute>
+ </define>
+ <define name="hralign">
+ <attribute name="hralign"/>
+ </define>
+ <define name="allowincell">
+ <attribute name="allowincell"/>
+ </define>
+ <define name="allowoverlap">
+ <attribute name="allowoverlap"/>
+ </define>
+ <define name="userdrawn">
+ <attribute name="userdrawn"/>
+ </define>
+ <define name="bordertopcolor">
+ <attribute name="bordertopcolor">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="borderleftcolor">
+ <attribute name="borderleftcolor">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="borderbottomcolor">
+ <attribute name="borderbottomcolor">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="borderrightcolor">
+ <attribute name="borderrightcolor">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="connecttype">
+ <attribute name="connecttype"/>
+ </define>
+ <define name="connectlocs">
+ <attribute name="connectlocs">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="connectangles">
+ <attribute name="connectangles">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="master">
+ <attribute name="master">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="extrusionok">
+ <attribute name="extrusionok"/>
+ </define>
+ <define name="href">
+ <attribute name="href">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="althref">
+ <attribute name="althref">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="title">
+ <attribute name="title">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="singleclick">
+ <attribute name="singleclick"/>
+ </define>
+ <define name="oleid">
+ <attribute name="oleid">
+ <data type="float"/>
+ </attribute>
+ </define>
+ <define name="detectmouseclick">
+ <attribute name="detectmouseclick"/>
+ </define>
+ <define name="movie">
+ <attribute name="movie">
+ <data type="float"/>
+ </attribute>
+ </define>
+ <define name="spid">
+ <attribute name="spid">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="opacity2">
+ <attribute name="opacity2">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="relid">
+ <attribute name="relid"/>
+ </define>
+ <define name="dgmlayout">
+ <attribute name="dgmlayout">
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="dgmnodekind">
+ <attribute name="dgmnodekind">
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="dgmlayoutmru">
+ <attribute name="dgmlayoutmru">
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="gfxdata">
+ <attribute name="gfxdata">
+ <data type="base64Binary"/>
+ </attribute>
+ </define>
+ <define name="tableproperties">
+ <attribute name="tableproperties">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="tablelimits">
+ <attribute name="tablelimits">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="shapedefaults">
+ <element name="shapedefaults">
+ <ref name="CT_ShapeDefaults"/>
+ </element>
+ </define>
+ <define name="shapelayout">
+ <element name="shapelayout">
+ <ref name="CT_ShapeLayout"/>
+ </element>
+ </define>
+ <define name="signatureline">
+ <element name="signatureline">
+ <ref name="CT_SignatureLine"/>
+ </element>
+ </define>
+ <define name="ink">
+ <element name="ink">
+ <ref name="CT_Ink"/>
+ </element>
+ </define>
+ <define name="diagram">
+ <element name="diagram">
+ <ref name="CT_Diagram"/>
+ </element>
+ </define>
+ <define name="CT_ShapeDefaults">
+ <optional>
+ <interleave>
+ <optional>
+ <element name="v:fill">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="v:stroke">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="v:textbox">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="v:shadow">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="skew"/>
+ </optional>
+ <optional>
+ <ref name="extrusion"/>
+ </optional>
+ <optional>
+ <ref name="callout"/>
+ <xs:documentation>Callout</xs:documentation>
+ </optional>
+ <optional>
+ <ref name="lock"/>
+ <xs:documentation>Shape Protections</xs:documentation>
+ </optional>
+ <optional>
+ <element name="colormru">
+ <ref name="CT_ColorMru"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="colormenu">
+ <ref name="CT_ColorMenu"/>
+ </element>
+ </optional>
+ </interleave>
+ </optional>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="spidmax">
+ <data type="integer">
+ <xs:documentation>Shape ID Optional Storage</xs:documentation>
+ </data>
+ <xs:documentation>Shape ID Optional Storage</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <data type="string">
+ <xs:documentation>Shape Styling Properties</xs:documentation>
+ </data>
+ <xs:documentation>Shape Styling Properties</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fill">
+ <text/>
+ <xs:documentation>Shape Fill Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fillcolor">
+ <text/>
+ <xs:documentation>Default Fill Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stroke">
+ <text/>
+ <xs:documentation>Shape Stroke Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="strokecolor">
+ <text/>
+ <xs:documentation>Shape Stroke Color</xs:documentation>
+ </attribute>
+ <attribute name="allowincell">
+ <text/>
+ <xs:documentation>Allow in Table Cell</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Ink">
+ <empty/>
+ <attribute name="i">
+ <data type="base64Binary">
+ <xs:documentation>Ink Data</xs:documentation>
+ </data>
+ <xs:documentation>Ink Data</xs:documentation>
+ </attribute>
+ <attribute name="annotation">
+ <text/>
+ <xs:documentation>Annotation Flag</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SignatureLine">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <attribute name="issignatureline">
+ <text/>
+ <xs:documentation>Signature Line Flag</xs:documentation>
+ </attribute>
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Unique ID</xs:documentation>
+ </attribute>
+ <attribute name="provid">
+ <text/>
+ <xs:documentation>Signature Provider ID</xs:documentation>
+ </attribute>
+ <attribute name="signinginstructionsset">
+ <text/>
+ <xs:documentation>Use Signing Instructions Flag</xs:documentation>
+ </attribute>
+ <attribute name="allowcomments">
+ <text/>
+ <xs:documentation>User-specified Comments Flag</xs:documentation>
+ </attribute>
+ <attribute name="showsigndate">
+ <text/>
+ <xs:documentation>Show Signed Date Flag</xs:documentation>
+ </attribute>
+ <attribute name="suggestedsigner">
+ <data type="string">
+ <xs:documentation>Suggested Signer Line 1</xs:documentation>
+ </data>
+ <xs:documentation>Suggested Signer Line 1</xs:documentation>
+ </attribute>
+ <attribute name="suggestedsigner2">
+ <data type="string">
+ <xs:documentation>Suggested Signer Line 2</xs:documentation>
+ </data>
+ <xs:documentation>Suggested Signer Line 2</xs:documentation>
+ </attribute>
+ <attribute name="suggestedsigneremail">
+ <data type="string">
+ <xs:documentation>Suggested Signer E-mail Address</xs:documentation>
+ </data>
+ <xs:documentation>Suggested Signer E-mail Address</xs:documentation>
+ </attribute>
+ <attribute name="signinginstructions">
+ <data type="string">
+ <xs:documentation>Instructions for Signing</xs:documentation>
+ </data>
+ <xs:documentation>Instructions for Signing</xs:documentation>
+ </attribute>
+ <attribute name="addlxml">
+ <data type="string">
+ <xs:documentation>Additional Signature Information</xs:documentation>
+ </data>
+ <xs:documentation>Additional Signature Information</xs:documentation>
+ </attribute>
+ <attribute name="sigprovurl">
+ <data type="string">
+ <xs:documentation>Signature Provider Download URL</xs:documentation>
+ </data>
+ <xs:documentation>Signature Provider Download URL</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ShapeLayout">
+ <interleave>
+ <optional>
+ <element name="idmap">
+ <ref name="CT_IdMap"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="regrouptable">
+ <ref name="CT_RegroupTable"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rules">
+ <ref name="CT_Rules"/>
+ </element>
+ </optional>
+ </interleave>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </define>
+ <define name="CT_IdMap">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="data">
+ <data type="string">
+ <xs:documentation>Shape IDs</xs:documentation>
+ </data>
+ <xs:documentation>Shape IDs</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_RegroupTable">
+ <zeroOrMore>
+ <element name="entry">
+ <ref name="CT_Entry"/>
+ </element>
+ </zeroOrMore>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </define>
+ <define name="CT_Entry">
+ <optional>
+ <attribute name="new">
+ <data type="int">
+ <xs:documentation>New Group ID</xs:documentation>
+ </data>
+ <xs:documentation>New Group ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="old">
+ <data type="int">
+ <xs:documentation>Old Group ID</xs:documentation>
+ </data>
+ <xs:documentation>Old Group ID</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Rules">
+ <zeroOrMore>
+ <element name="r">
+ <ref name="CT_R"/>
+ </element>
+ </zeroOrMore>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </define>
+ <define name="CT_R">
+ <zeroOrMore>
+ <element name="proxy">
+ <ref name="CT_Proxy"/>
+ </element>
+ </zeroOrMore>
+ <attribute name="id">
+ <data type="string">
+ <xs:documentation>Rule ID</xs:documentation>
+ </data>
+ <xs:documentation>Rule ID</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Rule Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="how">
+ <text/>
+ <xs:documentation>Alignment Rule Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="idref">
+ <data type="string">
+ <xs:documentation>Rule Shape Reference</xs:documentation>
+ </data>
+ <xs:documentation>Rule Shape Reference</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Proxy">
+ <optional>
+ <attribute name="start">
+ <text/>
+ <xs:documentation>Start Point Connection Flag</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="end">
+ <text/>
+ <xs:documentation>End Point Connection Flag</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="idref">
+ <data type="string">
+ <xs:documentation>Proxy Shape Reference</xs:documentation>
+ </data>
+ <xs:documentation>Proxy Shape Reference</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="connectloc">
+ <data type="int">
+ <xs:documentation>Connection Location</xs:documentation>
+ </data>
+ <xs:documentation>Connection Location</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Diagram">
+ <optional>
+ <element name="relationtable">
+ <ref name="CT_RelationTable"/>
+ </element>
+ </optional>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="dgmstyle">
+ <data type="integer">
+ <xs:documentation>Diagram Style Options</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Style Options</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="autoformat">
+ <text/>
+ <xs:documentation>Diagram Automatic Format</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="reverse">
+ <text/>
+ <xs:documentation>Diagram Reverse Direction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="autolayout">
+ <text/>
+ <xs:documentation>Diagram Automatic Layout</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dgmscalex">
+ <data type="integer">
+ <xs:documentation>Diagram Layout X Scale</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Layout X Scale</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dgmscaley">
+ <data type="integer">
+ <xs:documentation>Diagram Layout Y Scale</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Layout Y Scale</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dgmfontsize">
+ <data type="integer">
+ <xs:documentation>Diagram Font Size</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Font Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="constrainbounds">
+ <data type="string">
+ <xs:documentation>Diagram Layout Extents</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Layout Extents</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dgmbasetextscale">
+ <data type="integer">
+ <xs:documentation>Diagram Base Font Size</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Base Font Size</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_RelationTable">
+ <zeroOrMore>
+ <element name="rel">
+ <ref name="CT_Relation"/>
+ </element>
+ </zeroOrMore>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </define>
+ <define name="CT_Relation">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="idsrc">
+ <data type="string">
+ <xs:documentation>Diagram Relationship Source Shape</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Relationship Source Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="iddest">
+ <data type="string">
+ <xs:documentation>Diagram Relationship Destination Shape</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Relationship Destination Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="idcntr">
+ <data type="string">
+ <xs:documentation>Diagram Relationship Center Shape</xs:documentation>
+ </data>
+ <xs:documentation>Diagram Relationship Center Shape</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_ColorMru">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <attribute name="colors">
+ <data type="string">
+ <xs:documentation>Recent colors</xs:documentation>
+ </data>
+ <xs:documentation>Recent colors</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ColorMenu">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <attribute name="strokecolor">
+ <text/>
+ <xs:documentation>Default stroke color</xs:documentation>
+ </attribute>
+ <attribute name="fillcolor">
+ <text/>
+ <xs:documentation>Default fill color</xs:documentation>
+ </attribute>
+ <attribute name="shadowcolor">
+ <text/>
+ <xs:documentation>Default shadow color</xs:documentation>
+ </attribute>
+ <attribute name="extrusioncolor">
+ <text/>
+ <xs:documentation>Default extrusion color</xs:documentation>
+ </attribute>
+ </define>
+ <define name="skew">
+ <element name="skew">
+ <ref name="CT_Skew"/>
+ </element>
+ </define>
+ <define name="extrusion">
+ <element name="extrusion">
+ <ref name="CT_Extrusion"/>
+ </element>
+ </define>
+ <define name="callout">
+ <element name="callout">
+ <ref name="CT_Callout"/>
+ </element>
+ </define>
+ <define name="lock">
+ <element name="lock">
+ <ref name="CT_Lock"/>
+ </element>
+ </define>
+ <define name="OLEObject">
+ <element name="OLEObject">
+ <ref name="CT_OLEObject"/>
+ </element>
+ </define>
+ <define name="complex">
+ <element name="complex">
+ <ref name="CT_Complex"/>
+ </element>
+ </define>
+ <define name="left">
+ <element name="left">
+ <ref name="CT_StrokeChild"/>
+ </element>
+ </define>
+ <define name="top">
+ <element name="top">
+ <ref name="CT_StrokeChild"/>
+ </element>
+ </define>
+ <define name="right">
+ <element name="right">
+ <ref name="CT_StrokeChild"/>
+ </element>
+ </define>
+ <define name="bottom">
+ <element name="bottom">
+ <ref name="CT_StrokeChild"/>
+ </element>
+ </define>
+ <define name="column">
+ <element name="column">
+ <ref name="CT_StrokeChild"/>
+ </element>
+ </define>
+ <define name="clippath">
+ <element name="clippath">
+ <ref name="CT_ClipPath"/>
+ </element>
+ </define>
+ <define name="fill">
+ <element name="fill">
+ <ref name="CT_Fill"/>
+ </element>
+ </define>
+ <define name="CT_Skew">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="id">
+ <data type="string">
+ <xs:documentation>Skew ID</xs:documentation>
+ </data>
+ <xs:documentation>Skew ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Skew Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <data type="string">
+ <xs:documentation>Skew Offset</xs:documentation>
+ </data>
+ <xs:documentation>Skew Offset</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="origin">
+ <data type="string">
+ <xs:documentation>Skew Origin</xs:documentation>
+ </data>
+ <xs:documentation>Skew Origin</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="matrix">
+ <data type="string">
+ <xs:documentation>Skew Perspective Matrix</xs:documentation>
+ </data>
+ <xs:documentation>Skew Perspective Matrix</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Extrusion">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Extrusion Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Extrusion Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="render">
+ <text/>
+ <xs:documentation>Extrusion Render Mode</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewpointorigin">
+ <data type="string">
+ <xs:documentation>Extrusion Viewpoint Origin</xs:documentation>
+ </data>
+ <xs:documentation>Extrusion Viewpoint Origin</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewpoint">
+ <data type="string">
+ <xs:documentation>Extrusion Viewpoint</xs:documentation>
+ </data>
+ <xs:documentation>Extrusion Viewpoint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="plane">
+ <text/>
+ <xs:documentation>Extrusion Direction</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="skewangle">
+ <data type="float">
+ <xs:documentation>Extrusion Skew Angle</xs:documentation>
+ </data>
+ <xs:documentation>Extrusion Skew Angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="skewamt">
+ <data type="string">
+ <xs:documentation>Extrusion Skew</xs:documentation>
+ </data>
+ <xs:documentation>Extrusion Skew</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="foredepth">
+ <data type="string">
+ <xs:documentation>Forward Extrusion</xs:documentation>
+ </data>
+ <xs:documentation>Forward Extrusion</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="backdepth">
+ <data type="string">
+ <xs:documentation>Backward Extrusion Depth</xs:documentation>
+ </data>
+ <xs:documentation>Backward Extrusion Depth</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orientation">
+ <data type="string">
+ <xs:documentation>Rotation Axis</xs:documentation>
+ </data>
+ <xs:documentation>Rotation Axis</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orientationangle">
+ <data type="float">
+ <xs:documentation>Rotation Around Axis</xs:documentation>
+ </data>
+ <xs:documentation>Rotation Around Axis</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lockrotationcenter">
+ <text/>
+ <xs:documentation>Rotation Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="autorotationcenter">
+ <text/>
+ <xs:documentation>Center of Rotation Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotationcenter">
+ <data type="string">
+ <xs:documentation>Rotation Center</xs:documentation>
+ </data>
+ <xs:documentation>Rotation Center</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotationangle">
+ <data type="string">
+ <xs:documentation>X-Y Rotation Angle</xs:documentation>
+ </data>
+ <xs:documentation>X-Y Rotation Angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colormode">
+ <text/>
+ <xs:documentation>Extrusion Color Mode</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Extrusion Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shininess">
+ <data type="float">
+ <xs:documentation>Shininess</xs:documentation>
+ </data>
+ <xs:documentation>Shininess</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularity">
+ <data type="string">
+ <xs:documentation>Specularity</xs:documentation>
+ </data>
+ <xs:documentation>Specularity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="diffusity">
+ <data type="string">
+ <xs:documentation>Diffuse Reflection</xs:documentation>
+ </data>
+ <xs:documentation>Diffuse Reflection</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="metal">
+ <text/>
+ <xs:documentation>Metallic Surface Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="edge">
+ <data type="string">
+ <xs:documentation>Simulated Bevel</xs:documentation>
+ </data>
+ <xs:documentation>Simulated Bevel</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="facet">
+ <data type="string">
+ <xs:documentation>Faceting Quality</xs:documentation>
+ </data>
+ <xs:documentation>Faceting Quality</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightface">
+ <text/>
+ <xs:documentation>Shape Face Lighting Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="brightness">
+ <data type="string">
+ <xs:documentation>Brightness</xs:documentation>
+ </data>
+ <xs:documentation>Brightness</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightposition">
+ <data type="string">
+ <xs:documentation>Primary Light Position</xs:documentation>
+ </data>
+ <xs:documentation>Primary Light Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightlevel">
+ <data type="string">
+ <xs:documentation>Primary Light Intensity</xs:documentation>
+ </data>
+ <xs:documentation>Primary Light Intensity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightharsh">
+ <text/>
+ <xs:documentation>Primary Light Harshness Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightposition2">
+ <data type="string">
+ <xs:documentation>Secondary Light Position</xs:documentation>
+ </data>
+ <xs:documentation>Secondary Light Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightlevel2">
+ <data type="string">
+ <xs:documentation>Secondary Light Intensity</xs:documentation>
+ </data>
+ <xs:documentation>Secondary Light Intensity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lightharsh2">
+ <text/>
+ <xs:documentation>Secondary Light Harshness Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Callout">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Callout toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <data type="string">
+ <xs:documentation>Callout type</xs:documentation>
+ </data>
+ <xs:documentation>Callout type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gap">
+ <data type="string">
+ <xs:documentation>Callout gap</xs:documentation>
+ </data>
+ <xs:documentation>Callout gap</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="angle">
+ <text/>
+ <xs:documentation>Callout angle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dropauto">
+ <text/>
+ <xs:documentation>Callout automatic drop toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="drop">
+ <text/>
+ <xs:documentation>Callout drop position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distance">
+ <data type="string">
+ <xs:documentation>Callout drop distance</xs:documentation>
+ </data>
+ <xs:documentation>Callout drop distance</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthspecified">
+ <text/>
+ <xs:documentation>Callout length toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="length">
+ <data type="string">
+ <xs:documentation>Callout length</xs:documentation>
+ </data>
+ <xs:documentation>Callout length</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accentbar">
+ <text/>
+ <xs:documentation>Callout accent bar toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textborder">
+ <text/>
+ <xs:documentation>Callout text border toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minusx">
+ <text/>
+ <xs:documentation>Callout flip x</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minusy">
+ <text/>
+ <xs:documentation>Callout flip y</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Lock">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="position">
+ <text/>
+ <xs:documentation>Position Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="selection">
+ <text/>
+ <xs:documentation>Selection Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="grouping">
+ <text/>
+ <xs:documentation>Grouping Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ungrouping">
+ <text/>
+ <xs:documentation>Ungrouping Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotation">
+ <text/>
+ <xs:documentation>Rotation Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cropping">
+ <text/>
+ <xs:documentation>Cropping Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="verticies">
+ <text/>
+ <xs:documentation>Vertices Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="adjusthandles">
+ <text/>
+ <xs:documentation>Handles Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text">
+ <text/>
+ <xs:documentation>Text Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="aspectratio">
+ <text/>
+ <xs:documentation>Aspect Ratio Lock</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shapetype">
+ <text/>
+ <xs:documentation>AutoShape Type Lock</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_OLEObject">
+ <group>
+ <optional>
+ <element name="LinkType">
+ <ref name="ST_OLELinkType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="LockedField">
+ <ref name="ST_TrueFalseBlank"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="FieldCodes">
+ <data type="string">
+ <xs:documentation>WordprocessingML Field Switches</xs:documentation>
+ </data>
+ </element>
+ </optional>
+ </group>
+ <optional>
+ <attribute name="Type">
+ <text/>
+ <xs:documentation>OLE Object Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ProgID">
+ <data type="string">
+ <xs:documentation>OLE Object Application</xs:documentation>
+ </data>
+ <xs:documentation>OLE Object Application</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ShapeID">
+ <data type="string">
+ <xs:documentation>OLE Object Shape</xs:documentation>
+ </data>
+ <xs:documentation>OLE Object Shape</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="DrawAspect">
+ <text/>
+ <xs:documentation>OLE Object Representation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ObjectID">
+ <data type="string">
+ <xs:documentation>OLE Object Unique ID</xs:documentation>
+ </data>
+ <xs:documentation>OLE Object Unique ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r:id">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="UpdateMode">
+ <text/>
+ <xs:documentation>OLE Update Mode</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Complex">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </define>
+ <define name="CT_StrokeChild">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <optional>
+ <attribute name="on">
+ <text/>
+ <xs:documentation>Stroke Toggle</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="weight">
+ <data type="string">
+ <xs:documentation>Stroke Weight</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Weight</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Stroke Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color2">
+ <text/>
+ <xs:documentation>Stroke Alternate Pattern Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="opacity">
+ <data type="string">
+ <xs:documentation>Stroke Opacity</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Opacity</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linestyle">
+ <ref name="ST_StrokeLineStyle"/>
+ <xs:documentation>Stroke Line Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="miterlimit">
+ <data type="decimal">
+ <xs:documentation>Miter Joint Limit</xs:documentation>
+ </data>
+ <xs:documentation>Miter Joint Limit</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="joinstyle">
+ <ref name="ST_StrokeJoinStyle"/>
+ <xs:documentation>Line End Join Style)</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endcap">
+ <ref name="ST_StrokeEndCap"/>
+ <xs:documentation>Line End Cap</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dashstyle">
+ <data type="string">
+ <xs:documentation>Stroke Dash Pattern</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Dash Pattern</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="insetpen">
+ <text/>
+ <xs:documentation>Inset Border From Path</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filltype">
+ <ref name="ST_FillType"/>
+ <xs:documentation>Stroke Image Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="src">
+ <data type="string">
+ <xs:documentation>Stroke Image Location</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Image Location</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imageaspect">
+ <ref name="ST_ImageAspect"/>
+ <xs:documentation>Stroke Image Aspect Ratio</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagesize">
+ <data type="string">
+ <xs:documentation>Stroke Image Size</xs:documentation>
+ </data>
+ <xs:documentation>Stroke Image Size</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagealignshape">
+ <text/>
+ <xs:documentation>Stoke Image Alignment</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrow">
+ <ref name="ST_StrokeArrowType"/>
+ <xs:documentation>Line Start Arrowhead</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrowwidth">
+ <ref name="ST_StrokeArrowWidth"/>
+ <xs:documentation>Line Start Arrowhead Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startarrowlength">
+ <ref name="ST_StrokeArrowLength"/>
+ <xs:documentation>Line Start Arrowhead Length</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrow">
+ <ref name="ST_StrokeArrowType"/>
+ <xs:documentation>Line End Arrowhead</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrowwidth">
+ <ref name="ST_StrokeArrowWidth"/>
+ <xs:documentation>Line End Arrowhead Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="endarrowlength">
+ <ref name="ST_StrokeArrowLength"/>
+ <xs:documentation>Line End Arrowhead Length</xs:documentation>
+ </attribute>
+ </optional>
+ <ref name="href"/>
+ <xs:documentation>Original Image Reference</xs:documentation>
+ <ref name="althref"/>
+ <xs:documentation>Alternate Image Reference</xs:documentation>
+ <ref name="title"/>
+ <xs:documentation>Stroke Title</xs:documentation>
+ <ref name="forcedash"/>
+ <xs:documentation>Force Dashed Outline</xs:documentation>
+ </define>
+ <define name="CT_ClipPath">
+ <attribute name="v">
+ <data type="string">
+ <xs:documentation>Path Definition</xs:documentation>
+ </data>
+ <xs:documentation>Path Definition</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Fill">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Fill Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_RType">
+ <list>
+ <xs:documentation>Rule Type</xs:documentation>
+ <choice>
+ <!-- Arc Rule -->
+ <value>arc</value>
+ <!-- Callout Rule -->
+ <value>callout</value>
+ <!-- Connector Rule -->
+ <value>connector</value>
+ <!-- Alignment Rule -->
+ <value>align</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_How">
+ <list>
+ <xs:documentation>Alignment Type</xs:documentation>
+ <choice>
+ <!-- Top Alignment -->
+ <value>top</value>
+ <!-- Middle Alignment -->
+ <value>middle</value>
+ <!-- Bottom Alignment -->
+ <value>bottom</value>
+ <!-- Left Alignment -->
+ <value>left</value>
+ <!-- Center Alignment -->
+ <value>center</value>
+ <!-- Right Alignment -->
+ <value>right</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_BWMode">
+ <list>
+ <xs:documentation>Black And White Modes</xs:documentation>
+ <choice>
+ <!-- Color -->
+ <value>color</value>
+ <!-- Automatic -->
+ <value>auto</value>
+ <!-- Grayscale -->
+ <value>grayScale</value>
+ <!-- Light grayscale -->
+ <value>lightGrayscale</value>
+ <!-- Inverse Grayscale -->
+ <value>inverseGray</value>
+ <!-- Gray Outlines -->
+ <value>grayOutline</value>
+ <!-- Black And White -->
+ <value>highContrast</value>
+ <!-- Black -->
+ <value>black</value>
+ <!-- White -->
+ <value>white</value>
+ <!-- Hide Object When Displayed in Black and White -->
+ <value>hide</value>
+ <!-- Do Not Show -->
+ <value>undrawn</value>
+ <!-- Black Text And Lines -->
+ <value>blackTextAndLines</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ScreenSize">
+ <list>
+ <xs:documentation>Screen Sizes Type</xs:documentation>
+ <choice>
+ <!-- 544x376 pixels -->
+ <value>544,376</value>
+ <!-- 640x480 pixels -->
+ <value>640,480</value>
+ <!-- 720x512 pixels -->
+ <value>720,512</value>
+ <!-- 800x600 pixels -->
+ <value>800,600</value>
+ <!-- 1024x768 pixels -->
+ <value>1024,768</value>
+ <!-- 1152x862 pixels -->
+ <value>1152,862</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_InsetMode">
+ <list>
+ <xs:documentation>Inset Margin Type</xs:documentation>
+ <choice>
+ <!-- Automatic Margins -->
+ <value>auto</value>
+ <!-- Custom Margins -->
+ <value>custom</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ColorMode">
+ <list>
+ <xs:documentation>Extrusion Color Types</xs:documentation>
+ <choice>
+ <!-- Use Shape Fill Color -->
+ <value>auto</value>
+ <!-- Use Custom Color -->
+ <value>custom</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ColorType">
+ <data type="string">
+ <xs:documentation>Color Type</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_ExtrusionType">
+ <list>
+ <xs:documentation>Extrusion Type</xs:documentation>
+ <choice>
+ <!-- Perspective Projection -->
+ <value>perspective</value>
+ <!-- Parallel Projection -->
+ <value>parallel</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ExtrusionRender">
+ <list>
+ <xs:documentation>Extrusion Rendering Types</xs:documentation>
+ <choice>
+ <!-- Solid -->
+ <value>solid</value>
+ <!-- Wireframe -->
+ <value>wireFrame</value>
+ <!-- Bounding Cube -->
+ <value>boundingCube</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ExtrusionPlane">
+ <list>
+ <xs:documentation>Extrusion Planes</xs:documentation>
+ <choice>
+ <!-- XY Plane -->
+ <value>XY</value>
+ <!-- ZX Plane -->
+ <value>ZX</value>
+ <!-- YZ Plane -->
+ <value>YZ</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_Angle">
+ <list>
+ <xs:documentation>Callout Angles</xs:documentation>
+ <choice>
+ <!-- Any Angle -->
+ <value>any</value>
+ <!-- 30 degrees -->
+ <value>30</value>
+ <!-- 45 degrees -->
+ <value>45</value>
+ <!-- 60 degrees -->
+ <value>60</value>
+ <!-- 90 degrees -->
+ <value>90</value>
+ <!-- Automatic Angle -->
+ <value>auto</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_CalloutDrop">
+ <data type="string">
+ <xs:documentation>Callout Drop Location</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_CalloutPlacement">
+ <list>
+ <xs:documentation>Callout Placement</xs:documentation>
+ <choice>
+ <!-- Top placement -->
+ <value>top</value>
+ <!-- Center placement -->
+ <value>center</value>
+ <!-- Bottom placement -->
+ <value>bottom</value>
+ <!-- User-defined placement -->
+ <value>user</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ConnectorType">
+ <list>
+ <xs:documentation>Connector Type</xs:documentation>
+ <choice>
+ <!-- No Connector -->
+ <value>none</value>
+ <!-- Straight Connector -->
+ <value>straight</value>
+ <!-- Elbow Connector -->
+ <value>elbow</value>
+ <!-- Curved Connector -->
+ <value>curved</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_HrAlign">
+ <list>
+ <xs:documentation>Alignment Type</xs:documentation>
+ <choice>
+ <!-- Left Alignment -->
+ <value>left</value>
+ <!-- Right Alignment -->
+ <value>right</value>
+ <!-- Center Alignment -->
+ <value>center</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_ConnectType">
+ <list>
+ <xs:documentation>Connection Locations Type</xs:documentation>
+ <choice>
+ <!-- No -->
+ <value>none</value>
+ <!-- Four Connections -->
+ <value>rect</value>
+ <!-- Edit Point Connections -->
+ <value>segments</value>
+ <!-- Custom Connections -->
+ <value>custom</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_OLELinkType">
+ <list>
+ <xs:documentation>Embedded Object Alternate Image Request Types</xs:documentation>
+ <choice>
+ <!-- Other Image -->
+ <value>Picture</value>
+ <!-- Bitmap Image -->
+ <value>Bitmap</value>
+ <!-- Enhanced Metafile Image -->
+ <value>EnhancedMetaFile</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_OLEType">
+ <list>
+ <xs:documentation>OLE Connection Type</xs:documentation>
+ <choice>
+ <!-- Embedded Object -->
+ <value>Embed</value>
+ <!-- Linked Object -->
+ <value>Link</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_OLEDrawAspect">
+ <list>
+ <xs:documentation>OLE Object Representations</xs:documentation>
+ <choice>
+ <!-- Snapshot -->
+ <value>Content</value>
+ <!-- Icon -->
+ <value>Icon</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_OLEUpdateMode">
+ <list>
+ <xs:documentation>OLE Update Method Type</xs:documentation>
+ <choice>
+ <!-- Server Application Update -->
+ <value>Always</value>
+ <!-- User Update -->
+ <value>OnCall</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_Guid">
+ <data type="token">
+ <xs:documentation>128-Bit GUID</xs:documentation>
+ <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
+ </data>
+ </define>
+ <define name="ST_RelationshipId">
+ <data type="string">
+ <xs:documentation>Explicit Relationship ID</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_TrueFalse">
+ <list>
+ <xs:documentation>Boolean Value</xs:documentation>
+ <choice>
+ <!-- True -->
+ <value>t</value>
+ <!-- False -->
+ <value>f</value>
+ <!-- True -->
+ <value>true</value>
+ <!-- False -->
+ <value>false</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TrueFalseBlank">
+ <list>
+ <xs:documentation>Boolean Value with Blank [False] State</xs:documentation>
+ <choice>
+ <!-- Blank – Logical False -->
+ <value/>
+ <!-- Logical True -->
+ <value>t</value>
+ <!-- Logical False -->
+ <value>f</value>
+ <!-- Logical True -->
+ <value>true</value>
+ <!-- Logical False -->
+ <value>false</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_FillType">
+ <list>
+ <xs:documentation>Shape Fill Type</xs:documentation>
+ <choice>
+ <!-- Centered Radial Gradient -->
+ <value>gradientCenter</value>
+ <!-- Solid Fill -->
+ <value>solid</value>
+ <!-- Image Pattern -->
+ <value>pattern</value>
+ <!-- Tiled Image -->
+ <value>tile</value>
+ <!-- Stretch Image to Fit -->
+ <value>frame</value>
+ <!-- Unscaled Gradient -->
+ <value>gradientUnscaled</value>
+ <!-- Radial Gradient -->
+ <value>gradientRadial</value>
+ <!-- Linear Gradient -->
+ <value>gradient</value>
+ <!-- Use Background Fill -->
+ <value>background</value>
+ </choice>
+ </list>
+ </define>
+ <define name="BUILT_IN_ANY_TYPE">
+ <zeroOrMore>
+ <choice>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ </grammar>
+ <resource name="OLEObject" resource="Properties">
+ <element name="OLEObject" tokenid="ooxml:OLEObject_OLEObject"/>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="CT_OLEObject" resource="Properties">
+ <element name="LinkType" tokenid="ooxml:CT_OLEObject_LinkType"/>
+ <element name="LockedField" tokenid="ooxml:CT_OLEObject_LockedField"/>
+ <element name="FieldCodes" tokenid="ooxml:CT_OLEObject_FieldCodes"/>
+ <attribute name="Type" tokenid="ooxml:CT_OLEObject_Type"/>
+ <attribute name="ProgID" tokenid="ooxml:CT_OLEObject_ProgID"/>
+ <attribute name="ShapeID" tokenid="ooxml:CT_OLEObject_ShapeID"/>
+ <attribute name="DrawAspect" tokenid="ooxml:CT_OLEObject_DrawAspect"/>
+ <attribute name="ObjectID" tokenid="ooxml:CT_OLEObject_ObjectID"/>
+ <attribute name="r:id" tokenid="ooxml:CT_OLEObject_r_id"/>
+ <attribute name="UpdateMode" tokenid="ooxml:CT_OLEObject_UpdateMode"/>
+ <action name="end" action="handleOLE"/>
+ </resource>
+ <resource name="ST_RType" resource="List" generated="yes">
+ <value name="arc" tokenid="ooxml:Value_office_ST_RType_arc">arc</value>
+ <value name="callout" tokenid="ooxml:Value_office_ST_RType_callout">callout</value>
+ <value name="connector" tokenid="ooxml:Value_office_ST_RType_connector">connector</value>
+ <value name="align" tokenid="ooxml:Value_office_ST_RType_align">align</value>
+ </resource>
+ <resource name="ST_How" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_office_ST_How_top">top</value>
+ <value name="middle" tokenid="ooxml:Value_office_ST_How_middle">middle</value>
+ <value name="bottom" tokenid="ooxml:Value_office_ST_How_bottom">bottom</value>
+ <value name="left" tokenid="ooxml:Value_office_ST_How_left">left</value>
+ <value name="center" tokenid="ooxml:Value_office_ST_How_center">center</value>
+ <value name="right" tokenid="ooxml:Value_office_ST_How_right">right</value>
+ </resource>
+ <resource name="ST_BWMode" resource="List" generated="yes">
+ <value name="color" tokenid="ooxml:Value_office_ST_BWMode_color">color</value>
+ <value name="auto" tokenid="ooxml:Value_office_ST_BWMode_auto">auto</value>
+ <value name="grayScale" tokenid="ooxml:Value_office_ST_BWMode_grayScale">grayScale</value>
+ <value name="lightGrayscale" tokenid="ooxml:Value_office_ST_BWMode_lightGrayscale">lightGrayscale</value>
+ <value name="inverseGray" tokenid="ooxml:Value_office_ST_BWMode_inverseGray">inverseGray</value>
+ <value name="grayOutline" tokenid="ooxml:Value_office_ST_BWMode_grayOutline">grayOutline</value>
+ <value name="highContrast" tokenid="ooxml:Value_office_ST_BWMode_highContrast">highContrast</value>
+ <value name="black" tokenid="ooxml:Value_office_ST_BWMode_black">black</value>
+ <value name="white" tokenid="ooxml:Value_office_ST_BWMode_white">white</value>
+ <value name="hide" tokenid="ooxml:Value_office_ST_BWMode_hide">hide</value>
+ <value name="undrawn" tokenid="ooxml:Value_office_ST_BWMode_undrawn">undrawn</value>
+ <value name="blackTextAndLines" tokenid="ooxml:Value_office_ST_BWMode_blackTextAndLines">blackTextAndLines</value>
+ </resource>
+ <resource name="ST_ScreenSize" resource="List" generated="yes">
+ <value name="544_376" tokenid="ooxml:Value_office_ST_ScreenSize_544_376">544,376</value>
+ <value name="640_480" tokenid="ooxml:Value_office_ST_ScreenSize_640_480">640,480</value>
+ <value name="720_512" tokenid="ooxml:Value_office_ST_ScreenSize_720_512">720,512</value>
+ <value name="800_600" tokenid="ooxml:Value_office_ST_ScreenSize_800_600">800,600</value>
+ <value name="1024_768" tokenid="ooxml:Value_office_ST_ScreenSize_1024_768">1024,768</value>
+ <value name="1152_862" tokenid="ooxml:Value_office_ST_ScreenSize_1152_862">1152,862</value>
+ </resource>
+ <resource name="ST_InsetMode" resource="List" generated="yes">
+ <value name="auto" tokenid="ooxml:Value_office_ST_InsetMode_auto">auto</value>
+ <value name="custom" tokenid="ooxml:Value_office_ST_InsetMode_custom">custom</value>
+ </resource>
+ <resource name="ST_ColorMode" resource="List" generated="yes">
+ <value name="auto" tokenid="ooxml:Value_office_ST_ColorMode_auto">auto</value>
+ <value name="custom" tokenid="ooxml:Value_office_ST_ColorMode_custom">custom</value>
+ </resource>
+ <resource name="ST_ColorType" resource="String" generated="yes"/>
+ <resource name="ST_ExtrusionType" resource="List" generated="yes">
+ <value name="perspective" tokenid="ooxml:Value_office_ST_ExtrusionType_perspective">perspective</value>
+ <value name="parallel" tokenid="ooxml:Value_office_ST_ExtrusionType_parallel">parallel</value>
+ </resource>
+ <resource name="ST_ExtrusionRender" resource="List" generated="yes">
+ <value name="solid" tokenid="ooxml:Value_office_ST_ExtrusionRender_solid">solid</value>
+ <value name="wireFrame" tokenid="ooxml:Value_office_ST_ExtrusionRender_wireFrame">wireFrame</value>
+ <value name="boundingCube" tokenid="ooxml:Value_office_ST_ExtrusionRender_boundingCube">boundingCube</value>
+ </resource>
+ <resource name="ST_ExtrusionPlane" resource="List" generated="yes">
+ <value name="XY" tokenid="ooxml:Value_office_ST_ExtrusionPlane_XY">XY</value>
+ <value name="ZX" tokenid="ooxml:Value_office_ST_ExtrusionPlane_ZX">ZX</value>
+ <value name="YZ" tokenid="ooxml:Value_office_ST_ExtrusionPlane_YZ">YZ</value>
+ </resource>
+ <resource name="ST_Angle" resource="List" generated="yes">
+ <value name="any" tokenid="ooxml:Value_office_ST_Angle_any">any</value>
+ <value name="30" tokenid="ooxml:Value_office_ST_Angle_30">30</value>
+ <value name="45" tokenid="ooxml:Value_office_ST_Angle_45">45</value>
+ <value name="60" tokenid="ooxml:Value_office_ST_Angle_60">60</value>
+ <value name="90" tokenid="ooxml:Value_office_ST_Angle_90">90</value>
+ <value name="auto" tokenid="ooxml:Value_office_ST_Angle_auto">auto</value>
+ </resource>
+ <resource name="ST_CalloutDrop" resource="String" generated="yes"/>
+ <resource name="ST_CalloutPlacement" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_office_ST_CalloutPlacement_top">top</value>
+ <value name="center" tokenid="ooxml:Value_office_ST_CalloutPlacement_center">center</value>
+ <value name="bottom" tokenid="ooxml:Value_office_ST_CalloutPlacement_bottom">bottom</value>
+ <value name="user" tokenid="ooxml:Value_office_ST_CalloutPlacement_user">user</value>
+ </resource>
+ <resource name="ST_ConnectorType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_office_ST_ConnectorType_none">none</value>
+ <value name="straight" tokenid="ooxml:Value_office_ST_ConnectorType_straight">straight</value>
+ <value name="elbow" tokenid="ooxml:Value_office_ST_ConnectorType_elbow">elbow</value>
+ <value name="curved" tokenid="ooxml:Value_office_ST_ConnectorType_curved">curved</value>
+ </resource>
+ <resource name="ST_HrAlign" resource="List" generated="yes">
+ <value name="left" tokenid="ooxml:Value_office_ST_HrAlign_left">left</value>
+ <value name="right" tokenid="ooxml:Value_office_ST_HrAlign_right">right</value>
+ <value name="center" tokenid="ooxml:Value_office_ST_HrAlign_center">center</value>
+ </resource>
+ <resource name="ST_ConnectType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_office_ST_ConnectType_none">none</value>
+ <value name="rect" tokenid="ooxml:Value_office_ST_ConnectType_rect">rect</value>
+ <value name="segments" tokenid="ooxml:Value_office_ST_ConnectType_segments">segments</value>
+ <value name="custom" tokenid="ooxml:Value_office_ST_ConnectType_custom">custom</value>
+ </resource>
+ <resource name="ST_OLELinkType" resource="List" generated="yes">
+ <value name="Picture" tokenid="ooxml:Value_office_ST_OLELinkType_Picture">Picture</value>
+ <value name="Bitmap" tokenid="ooxml:Value_office_ST_OLELinkType_Bitmap">Bitmap</value>
+ <value name="EnhancedMetaFile" tokenid="ooxml:Value_office_ST_OLELinkType_EnhancedMetaFile">EnhancedMetaFile</value>
+ </resource>
+ <resource name="ST_OLEType" resource="List" generated="yes">
+ <value name="Embed" tokenid="ooxml:Value_office_ST_OLEType_Embed">Embed</value>
+ <value name="Link" tokenid="ooxml:Value_office_ST_OLEType_Link">Link</value>
+ </resource>
+ <resource name="ST_OLEDrawAspect" resource="List" generated="yes">
+ <value name="Content" tokenid="ooxml:Value_office_ST_OLEDrawAspect_Content">Content</value>
+ <value name="Icon" tokenid="ooxml:Value_office_ST_OLEDrawAspect_Icon">Icon</value>
+ </resource>
+ <resource name="ST_OLEUpdateMode" resource="List" generated="yes">
+ <value name="Always" tokenid="ooxml:Value_office_ST_OLEUpdateMode_Always">Always</value>
+ <value name="OnCall" tokenid="ooxml:Value_office_ST_OLEUpdateMode_OnCall">OnCall</value>
+ </resource>
+ <resource name="ST_Guid" resource="String" generated="yes"/>
+ <resource name="ST_RelationshipId" resource="String" generated="yes"/>
+ <resource name="ST_TrueFalse" resource="List" generated="yes">
+ <value name="t" tokenid="ooxml:Value_office_ST_TrueFalse_t">t</value>
+ <value name="f" tokenid="ooxml:Value_office_ST_TrueFalse_f">f</value>
+ <value name="true" tokenid="ooxml:Value_office_ST_TrueFalse_true">true</value>
+ <value name="false" tokenid="ooxml:Value_office_ST_TrueFalse_false">false</value>
+ </resource>
+ <resource name="ST_TrueFalseBlank" resource="List" generated="yes">
+ <value name="" tokenid="ooxml:Value_office_ST_TrueFalseBlank_"/>
+ <value name="t" tokenid="ooxml:Value_office_ST_TrueFalseBlank_t">t</value>
+ <value name="f" tokenid="ooxml:Value_office_ST_TrueFalseBlank_f">f</value>
+ <value name="true" tokenid="ooxml:Value_office_ST_TrueFalseBlank_true">true</value>
+ <value name="false" tokenid="ooxml:Value_office_ST_TrueFalseBlank_false">false</value>
+ </resource>
+ <resource name="ST_FillType" resource="List" generated="yes">
+ <value name="gradientCenter" tokenid="ooxml:Value_office_ST_FillType_gradientCenter">gradientCenter</value>
+ <value name="solid" tokenid="ooxml:Value_office_ST_FillType_solid">solid</value>
+ <value name="pattern" tokenid="ooxml:Value_office_ST_FillType_pattern">pattern</value>
+ <value name="tile" tokenid="ooxml:Value_office_ST_FillType_tile">tile</value>
+ <value name="frame" tokenid="ooxml:Value_office_ST_FillType_frame">frame</value>
+ <value name="gradientUnscaled" tokenid="ooxml:Value_office_ST_FillType_gradientUnscaled">gradientUnscaled</value>
+ <value name="gradientRadial" tokenid="ooxml:Value_office_ST_FillType_gradientRadial">gradientRadial</value>
+ <value name="gradient" tokenid="ooxml:Value_office_ST_FillType_gradient">gradient</value>
+ <value name="background" tokenid="ooxml:Value_office_ST_FillType_background">background</value>
+ </resource>
+ </namespace>
+ <namespace name="vml-wordprocessingDrawing" file="vml-wordprocessingDrawing.rng">
+ <start name="bordertop"/>
+ <start name="borderleft"/>
+ <start name="borderright"/>
+ <start name="borderbottom"/>
+ <start name="wrap"/>
+ <start name="anchorlock"/>
+ <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="urn:schemas-microsoft-com:office:word" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ISO RELAX NG Schema -->
+ <!-- start = bordertop | borderleft | borderright | borderbottom | wrap | anchorlock -->
+ <define name="bordertop">
+ <element name="bordertop">
+ <ref name="CT_Border"/>
+ </element>
+ </define>
+ <define name="borderleft">
+ <element name="borderleft">
+ <ref name="CT_Border"/>
+ </element>
+ </define>
+ <define name="borderright">
+ <element name="borderright">
+ <ref name="CT_Border"/>
+ </element>
+ </define>
+ <define name="borderbottom">
+ <element name="borderbottom">
+ <ref name="CT_Border"/>
+ </element>
+ </define>
+ <define name="CT_Border">
+ <optional>
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Border Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <data type="positiveInteger">
+ <xs:documentation>Border Width</xs:documentation>
+ </data>
+ <xs:documentation>Border Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shadow">
+ <text/>
+ <xs:documentation>Border shadow</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="wrap">
+ <element name="wrap">
+ <ref name="CT_Wrap"/>
+ </element>
+ </define>
+ <define name="CT_Wrap">
+ <optional>
+ <attribute name="type">
+ <ref name="ST_WrapType"/>
+ <xs:documentation>Wrapping type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="side">
+ <ref name="ST_WrapSide"/>
+ <xs:documentation>Wrapping side</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="anchorx">
+ <ref name="ST_HorizontalAnchor"/>
+ <xs:documentation>Horizontal Positioning Base</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="anchory">
+ <ref name="ST_VerticalAnchor"/>
+ <xs:documentation>Vertical Positioning Base</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="anchorlock">
+ <element name="anchorlock">
+ <ref name="CT_AnchorLock"/>
+ </element>
+ </define>
+ <define name="CT_AnchorLock">
+ <empty/>
+ </define>
+ <define name="ST_BorderType">
+ <list>
+ <xs:documentation>Border Type</xs:documentation>
+ <choice>
+ <!-- No Border -->
+ <value>none</value>
+ <!-- Single Line Border -->
+ <value>single</value>
+ <!-- Thick Line Border -->
+ <value>thick</value>
+ <!-- Double Line Border -->
+ <value>double</value>
+ <!-- Hairline Border -->
+ <value>hairline</value>
+ <!-- Dotted Border -->
+ <value>dot</value>
+ <!-- pecifies a line border consisting of a dashed line around the parent object. -->
+ <value>dash</value>
+ <!-- Dot Dash Border -->
+ <value>dotDash</value>
+ <!-- Dash Dot Dot Border -->
+ <value>dashDotDot</value>
+ <!-- Triple Line Border -->
+ <value>triple</value>
+ <!-- Thin Thick Small Gap Border -->
+ <value>thinThickSmall</value>
+ <!-- Small thick-thin lines border -->
+ <value>thickThinSmall</value>
+ <!-- Small thin-thick-thin Lines Border -->
+ <value>thickBetweenThinSmall</value>
+ <!-- Thin Thick Line Border -->
+ <value>thinThick</value>
+ <!-- Thick Thin Line Border -->
+ <value>thickThin</value>
+ <!-- Thin-thick-thin Border -->
+ <value>thickBetweenThin</value>
+ <!-- Thin Thick Large Gap Border -->
+ <value>thinThickLarge</value>
+ <!-- Thick Thin Large Gap Border -->
+ <value>thickThinLarge</value>
+ <!-- Large thin-thick-thin Border -->
+ <value>thickBetweenThinLarge</value>
+ <!-- Wavy Border -->
+ <value>wave</value>
+ <!-- Double Wavy Lines Border -->
+ <value>doubleWave</value>
+ <!-- Small Dash Border -->
+ <value>dashedSmall</value>
+ <!-- Stroked Dash Dot Border -->
+ <value>dashDotStroked</value>
+ <!-- 3D Embossed Border -->
+ <value>threeDEmboss</value>
+ <!-- 3D Engraved Border -->
+ <value>threeDEngrave</value>
+ <!-- Outset Border -->
+ <value>HTMLOutset</value>
+ <!-- Inset Border -->
+ <value>HTMLInset</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_BorderShadow">
+ <list>
+ <xs:documentation>Border Shadow Type</xs:documentation>
+ <choice>
+ <!-- True -->
+ <value>t</value>
+ <!-- True -->
+ <value>true</value>
+ <!-- False -->
+ <value>f</value>
+ <!-- False -->
+ <value>false</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_WrapType">
+ <list>
+ <xs:documentation>Text Wrapping Type</xs:documentation>
+ <choice>
+ <!-- Top and bottom wrapping -->
+ <value>topAndBottom</value>
+ <!-- Square wrapping -->
+ <value>square</value>
+ <!-- No wrapping -->
+ <value>none</value>
+ <!-- Tight wrapping -->
+ <value>tight</value>
+ <!-- Through wrapping -->
+ <value>through</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_WrapSide">
+ <list>
+ <xs:documentation>Text Wrapping Side</xs:documentation>
+ <choice>
+ <!-- Both sides -->
+ <value>both</value>
+ <!-- Left side -->
+ <value>left</value>
+ <!-- Right side -->
+ <value>right</value>
+ <!-- Largest side -->
+ <value>largest</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_HorizontalAnchor">
+ <list>
+ <xs:documentation>Horizontal Anchor Type</xs:documentation>
+ <choice>
+ <!-- Margin -->
+ <value>margin</value>
+ <!-- Page -->
+ <value>page</value>
+ <!-- Text -->
+ <value>text</value>
+ <!-- Character -->
+ <value>char</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_VerticalAnchor">
+ <list>
+ <xs:documentation>Vertical Anchor Type</xs:documentation>
+ <choice>
+ <!-- Margin -->
+ <value>margin</value>
+ <!-- Page -->
+ <value>page</value>
+ <!-- Text -->
+ <value>text</value>
+ <!-- Line -->
+ <value>line</value>
+ </choice>
+ </list>
+ </define>
+ </grammar>
+ <resource name="wrap" resource="Properties">
+ <element name="wrap" tokenid="ooxml:wrap_wrap"/>
+ </resource>
+ <resource name="CT_Wrap" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_Wrap_type"/>
+ <attribute name="side" tokenid="ooxml:CT_Wrap_side"/>
+ <attribute name="anchorx" tokenid="ooxml:CT_Wrap_anchorx"/>
+ <attribute name="anchory" tokenid="ooxml:CT_Wrap_anchory"/>
+ </resource>
+ <resource name="ST_BorderType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_none">none</value>
+ <value name="single" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_single">single</value>
+ <value name="thick" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thick">thick</value>
+ <value name="double" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_double">double</value>
+ <value name="hairline" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_hairline">hairline</value>
+ <value name="dot" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dot">dot</value>
+ <value name="dash" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dash">dash</value>
+ <value name="dotDash" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dotDash">dotDash</value>
+ <value name="dashDotDot" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dashDotDot">dashDotDot</value>
+ <value name="triple" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_triple">triple</value>
+ <value name="thinThickSmall" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thinThickSmall">thinThickSmall</value>
+ <value name="thickThinSmall" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickThinSmall">thickThinSmall</value>
+ <value name="thickBetweenThinSmall" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickBetweenThinSmall">thickBetweenThinSmall</value>
+ <value name="thinThick" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thinThick">thinThick</value>
+ <value name="thickThin" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickThin">thickThin</value>
+ <value name="thickBetweenThin" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickBetweenThin">thickBetweenThin</value>
+ <value name="thinThickLarge" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thinThickLarge">thinThickLarge</value>
+ <value name="thickThinLarge" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickThinLarge">thickThinLarge</value>
+ <value name="thickBetweenThinLarge" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_thickBetweenThinLarge">thickBetweenThinLarge</value>
+ <value name="wave" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_wave">wave</value>
+ <value name="doubleWave" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_doubleWave">doubleWave</value>
+ <value name="dashedSmall" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dashedSmall">dashedSmall</value>
+ <value name="dashDotStroked" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_dashDotStroked">dashDotStroked</value>
+ <value name="threeDEmboss" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_threeDEmboss">threeDEmboss</value>
+ <value name="threeDEngrave" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_threeDEngrave">threeDEngrave</value>
+ <value name="HTMLOutset" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_HTMLOutset">HTMLOutset</value>
+ <value name="HTMLInset" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderType_HTMLInset">HTMLInset</value>
+ </resource>
+ <resource name="ST_BorderShadow" resource="List" generated="yes">
+ <value name="t" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderShadow_t">t</value>
+ <value name="true" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderShadow_true">true</value>
+ <value name="f" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderShadow_f">f</value>
+ <value name="false" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_BorderShadow_false">false</value>
+ </resource>
+ <resource name="ST_WrapType" resource="List" generated="yes">
+ <value name="topAndBottom" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapType_topAndBottom">topAndBottom</value>
+ <value name="square" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapType_square">square</value>
+ <value name="none" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapType_none">none</value>
+ <value name="tight" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapType_tight">tight</value>
+ <value name="through" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapType_through">through</value>
+ </resource>
+ <resource name="ST_WrapSide" resource="List" generated="yes">
+ <value name="both" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapSide_both">both</value>
+ <value name="left" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapSide_left">left</value>
+ <value name="right" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapSide_right">right</value>
+ <value name="largest" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_WrapSide_largest">largest</value>
+ </resource>
+ <resource name="ST_HorizontalAnchor" resource="List" generated="yes">
+ <value name="margin" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_HorizontalAnchor_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_HorizontalAnchor_page">page</value>
+ <value name="text" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_HorizontalAnchor_text">text</value>
+ <value name="char" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_HorizontalAnchor_char">char</value>
+ </resource>
+ <resource name="ST_VerticalAnchor" resource="List" generated="yes">
+ <value name="margin" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_VerticalAnchor_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_VerticalAnchor_page">page</value>
+ <value name="text" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_VerticalAnchor_text">text</value>
+ <value name="line" tokenid="ooxml:Value_vml_wordprocessingDrawing_ST_VerticalAnchor_line">line</value>
+ </resource>
+ </namespace>
+ <namespace name="wml" file="wml.rng">
+ <start name="recipients"/>
+ <start name="txbxContent"/>
+ <start name="comments"/>
+ <start name="footnotes"/>
+ <start name="endnotes"/>
+ <start name="hdr"/>
+ <start name="ftr"/>
+ <start name="settings"/>
+ <start name="webSettings"/>
+ <start name="fonts"/>
+ <start name="numbering"/>
+ <start name="styles"/>
+ <start name="document"/>
+ <start name="glossaryDocument"/>
+ <grammar xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:rel="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/wordprocessingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" attributeFormDefault="qualified">
+ <!-- ISO RELAX NG Schema -->
+ <include href="shared-customXmlSchemaProperties.rng"/>
+ <include href="shared-math.rng"/>
+ <include href="dml-wordprocessingDrawing.rng"/>
+ <include href="shared-relationshipReference.rng"/>
+ <!-- start = recipients | txbxContent | comments | footnotes | endnotes | hdr | ftr | settings | webSettings | fonts | numbering | styles | document | glossaryDocument -->
+ <define name="CT_Empty">
+ <empty/>
+ </define>
+ <define name="ST_OnOff">
+ <list>
+ <xs:documentation>On/Off Value</xs:documentation>
+ <choice>
+ <!-- True -->
+ <value>true</value>
+ <!-- False -->
+ <value>false</value>
+ <!-- True -->
+ <value>on</value>
+ <!-- False -->
+ <value>off</value>
+ <!-- False -->
+ <value>0</value>
+ <!-- True -->
+ <value>1</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_OnOff">
+ <attribute name="val">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>On/Off Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_LongHexNumber">
+ <data type="hexBinary">
+ <xs:documentation>Four Digit Hexadecimal Number Value</xs:documentation>
+ <param name="length">4</param>
+ </data>
+ </define>
+ <define name="CT_LongHexNumber">
+ <attribute name="val">
+ <ref name="ST_LongHexNumber"/>
+ <xs:documentation>Long Hexadecimal Number Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_ShortHexNumber">
+ <data type="hexBinary">
+ <xs:documentation>Two Digit Hexadecimal Number Value</xs:documentation>
+ <param name="length">2</param>
+ </data>
+ </define>
+ <define name="CT_ShortHexNumber">
+ <attribute name="val">
+ <ref name="ST_ShortHexNumber"/>
+ <xs:documentation>Two Digit Hexadecimal Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_UcharHexNumber">
+ <data type="hexBinary">
+ <xs:documentation>Two Digit Hexadecimal Number Value</xs:documentation>
+ <param name="length">1</param>
+ </data>
+ </define>
+ <define name="CT_UcharHexNumber">
+ <attribute name="val">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_DecimalNumber">
+ <data type="integer">
+ <xs:documentation>Decimal Number Value</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_DecimalNumber">
+ <attribute name="val">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Decimal Number Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_UnsignedDecimalNumber">
+ <data type="unsignedLong">
+ <xs:documentation>Unsigned Decimal Number Value</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_TwipsMeasure">
+ <data type="unsignedLong">
+ <xs:documentation>Measurement in Twentieths of a Point</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_TwipsMeasure">
+ <attribute name="val">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Measurement in Twentieths of a Point</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_SignedTwipsMeasure">
+ <data type="integer">
+ <xs:documentation>Signed Measurement in Twentieths of a Point</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_SignedTwipsMeasure">
+ <attribute name="val">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Positive or Negative Value in Twentieths of a Point</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_PixelsMeasure">
+ <data type="unsignedLong">
+ <xs:documentation>Measurement in Pixels</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_PixelsMeasure">
+ <attribute name="val">
+ <ref name="ST_PixelsMeasure"/>
+ <xs:documentation>Measurement in Pixels</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_HpsMeasure">
+ <data type="unsignedLong">
+ <xs:documentation>Measurement in Half-Points</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_HpsMeasure">
+ <attribute name="val">
+ <ref name="ST_HpsMeasure"/>
+ <xs:documentation>Half Point Measurement</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_SignedHpsMeasure">
+ <data type="integer">
+ <xs:documentation>Signed Measurement in Half-Points</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_SignedHpsMeasure">
+ <attribute name="val">
+ <ref name="ST_SignedHpsMeasure"/>
+ <xs:documentation>Signed Half-Point Measurement</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_DateTime">
+ <data type="dateTime">
+ <xs:documentation>Standard Date and Time Storage Format</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_MacroName">
+ <data type="string">
+ <xs:documentation>Script Subroutine Name Value</xs:documentation>
+ <param name="maxLength">33</param>
+ </data>
+ </define>
+ <define name="CT_MacroName">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Name of Script Function</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_EighthPointMeasure">
+ <data type="unsignedLong">
+ <xs:documentation>Measurement in Eighths of a Point</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_PointMeasure">
+ <data type="unsignedLong">
+ <xs:documentation>Measurement in Points</xs:documentation>
+ </data>
+ </define>
+ <define name="ST_String">
+ <data type="string">
+ <xs:documentation>String</xs:documentation>
+ </data>
+ </define>
+ <define name="CT_String">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>String Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TextScale">
+ <data type="integer">
+ <xs:documentation>Text Expansion/Compression Percentage</xs:documentation>
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">600</param>
+ </data>
+ </define>
+ <define name="CT_TextScale">
+ <attribute name="val">
+ <ref name="ST_TextScale"/>
+ <xs:documentation>Text Expansion/Compression Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_HighlightColor">
+ <list>
+ <xs:documentation>Text Highlight Colors</xs:documentation>
+ <choice>
+ <!-- Black Highlighting Color -->
+ <value>black</value>
+ <!-- Blue Highlighting Color -->
+ <value>blue</value>
+ <!-- Cyan Highlighting Color -->
+ <value>cyan</value>
+ <!-- Green Highlighting Color -->
+ <value>green</value>
+ <!-- Magenta Highlighting Color -->
+ <value>magenta</value>
+ <!-- Red Highlighting Color -->
+ <value>red</value>
+ <!-- Yellow Highlighting Color -->
+ <value>yellow</value>
+ <!-- White Highlighting Color -->
+ <value>white</value>
+ <!-- Dark Blue Highlighting Color -->
+ <value>darkBlue</value>
+ <!-- Dark Cyan Highlighting Color -->
+ <value>darkCyan</value>
+ <!-- Dark Green Highlighting Color -->
+ <value>darkGreen</value>
+ <!-- Dark Magenta Highlighting Color -->
+ <value>darkMagenta</value>
+ <!-- Dark Red Highlighting Color -->
+ <value>darkRed</value>
+ <!-- Dark Yellow Highlighting Color -->
+ <value>darkYellow</value>
+ <!-- Dark Gray Highlighting Color -->
+ <value>darkGray</value>
+ <!-- Light Gray Highlighting Color -->
+ <value>lightGray</value>
+ <!-- No Text Highlighting -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Highlight">
+ <attribute name="val">
+ <ref name="ST_HighlightColor"/>
+ <xs:documentation>Highlighting Color</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_HexColorAuto">
+ <list>
+ <xs:documentation>‘Automatic’ Color Value</xs:documentation>
+ <!-- Automatically Determined Color -->
+ <value>auto</value>
+ </list>
+ </define>
+ <define name="ST_HexColorRGB">
+ <data type="hexBinary">
+ <xs:documentation>Hexadecimal Color Value</xs:documentation>
+ <param name="length">3</param>
+ </data>
+ </define>
+ <define name="ST_HexColor">
+ <choice>
+ <ref name="ST_HexColorAuto"/>
+ <ref name="ST_HexColorRGB"/>
+ </choice>
+ </define>
+ <!-- Union -->
+ <define name="CT_Color">
+ <attribute name="val">
+ <ref name="ST_HexColor"/>
+ <xs:documentation>Run Content Color</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="themeColor">
+ <ref name="ST_ThemeColor"/>
+ <xs:documentation>Run Content Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeTint">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Run Content Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeShade">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Run Content Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_LangCode">
+ <data type="hexBinary">
+ <xs:documentation>Two Digit Hexadecimal Language Code</xs:documentation>
+ <param name="length">2</param>
+ </data>
+ </define>
+ <define name="ST_Lang">
+ <choice>
+ <ref name="ST_LangCode"/>
+ <ref name="ST_String"/>
+ </choice>
+ </define>
+ <!-- Union -->
+ <define name="CT_Lang">
+ <attribute name="val">
+ <ref name="ST_Lang"/>
+ <xs:documentation>Language Code</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Guid">
+ <data type="token">
+ <xs:documentation>128-Bit GUID</xs:documentation>
+ <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
+ </data>
+ </define>
+ <define name="CT_Guid">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>GUID Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Underline">
+ <list>
+ <xs:documentation>Underline Patterns</xs:documentation>
+ <choice>
+ <!-- Single Underline -->
+ <value>single</value>
+ <!-- Underline Non-Space Characters Only -->
+ <value>words</value>
+ <!-- Double Underline -->
+ <value>double</value>
+ <!-- Thick Underline -->
+ <value>thick</value>
+ <!-- Dotted Underline -->
+ <value>dotted</value>
+ <!-- Thick Dotted Underline -->
+ <value>dottedHeavy</value>
+ <!-- Dashed Underline -->
+ <value>dash</value>
+ <!-- Thick Dashed Underline -->
+ <value>dashedHeavy</value>
+ <!-- Long Dashed Underline -->
+ <value>dashLong</value>
+ <!-- Thick Long Dashed Underline -->
+ <value>dashLongHeavy</value>
+ <!-- Dash-Dot Underline -->
+ <value>dotDash</value>
+ <!-- Thick Dash-Dot Underline -->
+ <value>dashDotHeavy</value>
+ <!-- Dash-Dot-Dot Underline -->
+ <value>dotDotDash</value>
+ <!-- Thick Dash-Dot-Dot Underline -->
+ <value>dashDotDotHeavy</value>
+ <!-- Wave Underline -->
+ <value>wave</value>
+ <!-- Heavy Wave Underline -->
+ <value>wavyHeavy</value>
+ <!-- Double Wave Underline -->
+ <value>wavyDouble</value>
+ <!-- No Underline -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Underline">
+ <optional><attribute name="val"><ref name="ST_Underline"/><xs:documentation>Underline Style</xs:documentation></attribute>ST_String
+ </optional>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Underline Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeColor">
+ <text/>
+ <xs:documentation>Underline Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeTint">
+ <text/>
+ <xs:documentation>Underline Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeShade">
+ <text/>
+ <xs:documentation>Underline Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_TextEffect">
+ <list>
+ <xs:documentation>Animated Text Effects</xs:documentation>
+ <choice>
+ <!-- Blinking Background Animation -->
+ <value>blinkBackground</value>
+ <!-- Colored Lights Animation -->
+ <value>lights</value>
+ <!-- Black Dashed Line Animation -->
+ <value>antsBlack</value>
+ <!-- Marching Red Ants -->
+ <value>antsRed</value>
+ <!-- Shimmer Animation -->
+ <value>shimmer</value>
+ <!-- Sparkling Lights Animation -->
+ <value>sparkle</value>
+ <!-- No Animation -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TextEffect">
+ <attribute name="val">
+ <ref name="ST_TextEffect"/>
+ <xs:documentation>Animated Text Effect Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Border">
+ <list>
+ <xs:documentation>Border Styles</xs:documentation>
+ <choice>
+ <!-- No Border -->
+ <value>nil</value>
+ <!-- No Border -->
+ <value>none</value>
+ <!-- Single Line Border -->
+ <value>single</value>
+ <!-- Single Line Border -->
+ <value>thick</value>
+ <!-- Double Line Border -->
+ <value>double</value>
+ <!-- Dotted Line Border -->
+ <value>dotted</value>
+ <!-- Dashed Line Border -->
+ <value>dashed</value>
+ <!-- Dot Dash Line Border -->
+ <value>dotDash</value>
+ <!-- Dot Dot Dash Line Border -->
+ <value>dotDotDash</value>
+ <!-- Triple Line Border -->
+ <value>triple</value>
+ <!-- Thin, Thick Line Border -->
+ <value>thinThickSmallGap</value>
+ <!-- Thick, Thin Line Border -->
+ <value>thickThinSmallGap</value>
+ <!-- Thin, Thick, Thin Line Border -->
+ <value>thinThickThinSmallGap</value>
+ <!-- Thin, Thick Line Border -->
+ <value>thinThickMediumGap</value>
+ <!-- Thick, Thin Line Border -->
+ <value>thickThinMediumGap</value>
+ <!-- Thin, Thick, Thin Line Border -->
+ <value>thinThickThinMediumGap</value>
+ <!-- Thin, Thick Line Border -->
+ <value>thinThickLargeGap</value>
+ <!-- Thick, Thin Line Border -->
+ <value>thickThinLargeGap</value>
+ <!-- Thin, Thick, Thin Line Border -->
+ <value>thinThickThinLargeGap</value>
+ <!-- Wavy Line Border -->
+ <value>wave</value>
+ <!-- Double Wave Line Border -->
+ <value>doubleWave</value>
+ <!-- Dashed Line Border -->
+ <value>dashSmallGap</value>
+ <!-- Dash Dot Strokes Line Border -->
+ <value>dashDotStroked</value>
+ <!-- 3D Embossed Line Border -->
+ <value>threeDEmboss</value>
+ <!-- 3D Engraved Line Border -->
+ <value>threeDEngrave</value>
+ <!-- Outset Line Border -->
+ <value>outset</value>
+ <!-- Inset Line Border -->
+ <value>inset</value>
+ <!-- Apples Art Border -->
+ <value>apples</value>
+ <!-- Arched Scallops Art Border -->
+ <value>archedScallops</value>
+ <!-- Baby Pacifier Art Border -->
+ <value>babyPacifier</value>
+ <!-- Baby Rattle Art Border -->
+ <value>babyRattle</value>
+ <!-- Three Color Balloons Art Border -->
+ <value>balloons3Colors</value>
+ <!-- Hot Air Balloons Art Border -->
+ <value>balloonsHotAir</value>
+ <!-- Black Dash Art Border -->
+ <value>basicBlackDashes</value>
+ <!-- Black Dot Art Border -->
+ <value>basicBlackDots</value>
+ <!-- Black Square Art Border -->
+ <value>basicBlackSquares</value>
+ <!-- Thin Line Art Border -->
+ <value>basicThinLines</value>
+ <!-- White Dash Art Border -->
+ <value>basicWhiteDashes</value>
+ <!-- White Dot Art Border -->
+ <value>basicWhiteDots</value>
+ <!-- White Square Art Border -->
+ <value>basicWhiteSquares</value>
+ <!-- Wide Inline Art Border -->
+ <value>basicWideInline</value>
+ <!-- Wide Midline Art Border -->
+ <value>basicWideMidline</value>
+ <!-- Wide Outline Art Border -->
+ <value>basicWideOutline</value>
+ <!-- Bats Art Border -->
+ <value>bats</value>
+ <!-- Birds Art Border -->
+ <value>birds</value>
+ <!-- Birds Flying Art Border -->
+ <value>birdsFlight</value>
+ <!-- Cabin Art Border -->
+ <value>cabins</value>
+ <!-- Cake Art Border -->
+ <value>cakeSlice</value>
+ <!-- Candy Corn Art Border -->
+ <value>candyCorn</value>
+ <!-- Knot Work Art Border -->
+ <value>celticKnotwork</value>
+ <!-- Certificate Banner Art Border -->
+ <value>certificateBanner</value>
+ <!-- Chain Link Art Border -->
+ <value>chainLink</value>
+ <!-- Champagne Bottle Art Border -->
+ <value>champagneBottle</value>
+ <!-- Black and White Bar Art Border -->
+ <value>checkedBarBlack</value>
+ <!-- Color Checked Bar Art Border -->
+ <value>checkedBarColor</value>
+ <!-- Checkerboard Art Border -->
+ <value>checkered</value>
+ <!-- Christmas Tree Art Border -->
+ <value>christmasTree</value>
+ <!-- Circles And Lines Art Border -->
+ <value>circlesLines</value>
+ <!-- Circles and Rectangles Art Border -->
+ <value>circlesRectangles</value>
+ <!-- Wave Art Border -->
+ <value>classicalWave</value>
+ <!-- Clocks Art Border -->
+ <value>clocks</value>
+ <!-- Compass Art Border -->
+ <value>compass</value>
+ <!-- Confetti Art Border -->
+ <value>confetti</value>
+ <!-- Confetti Art Border -->
+ <value>confettiGrays</value>
+ <!-- Confetti Art Border -->
+ <value>confettiOutline</value>
+ <!-- Confetti Streamers Art Border -->
+ <value>confettiStreamers</value>
+ <!-- Confetti Art Border -->
+ <value>confettiWhite</value>
+ <!-- Corner Triangle Art Border -->
+ <value>cornerTriangles</value>
+ <!-- Dashed Line Art Border -->
+ <value>couponCutoutDashes</value>
+ <!-- Dotted Line Art Border -->
+ <value>couponCutoutDots</value>
+ <!-- Maze Art Border -->
+ <value>crazyMaze</value>
+ <!-- Butterfly Art Border -->
+ <value>creaturesButterfly</value>
+ <!-- Fish Art Border -->
+ <value>creaturesFish</value>
+ <!-- Insects Art Border -->
+ <value>creaturesInsects</value>
+ <!-- Ladybug Art Border -->
+ <value>creaturesLadyBug</value>
+ <!-- Cross-stitch Art Border -->
+ <value>crossStitch</value>
+ <!-- Cupid Art Border -->
+ <value>cup</value>
+ <!-- Archway Art Border -->
+ <value>decoArch</value>
+ <!-- Color Archway Art Border -->
+ <value>decoArchColor</value>
+ <!-- Blocks Art Border -->
+ <value>decoBlocks</value>
+ <!-- Gray Diamond Art Border -->
+ <value>diamondsGray</value>
+ <!-- Double D Art Border -->
+ <value>doubleD</value>
+ <!-- Diamond Art Border -->
+ <value>doubleDiamonds</value>
+ <!-- Earth Art Border -->
+ <value>earth1</value>
+ <!-- Earth Art Border -->
+ <value>earth2</value>
+ <!-- Shadowed Square Art Border -->
+ <value>eclipsingSquares1</value>
+ <!-- Shadowed Square Art Border -->
+ <value>eclipsingSquares2</value>
+ <!-- Painted Egg Art Border -->
+ <value>eggsBlack</value>
+ <!-- Fans Art Border -->
+ <value>fans</value>
+ <!-- Film Reel Art Border -->
+ <value>film</value>
+ <!-- Firecracker Art Border -->
+ <value>firecrackers</value>
+ <!-- Flowers Art Border -->
+ <value>flowersBlockPrint</value>
+ <!-- Daisy Art Border -->
+ <value>flowersDaisies</value>
+ <!-- Flowers Art Border -->
+ <value>flowersModern1</value>
+ <!-- Flowers Art Border -->
+ <value>flowersModern2</value>
+ <!-- Pansy Art Border -->
+ <value>flowersPansy</value>
+ <!-- Red Rose Art Border -->
+ <value>flowersRedRose</value>
+ <!-- Roses Art Border -->
+ <value>flowersRoses</value>
+ <!-- Flowers in a Teacup Art Border -->
+ <value>flowersTeacup</value>
+ <!-- Small Flower Art Border -->
+ <value>flowersTiny</value>
+ <!-- Gems Art Border -->
+ <value>gems</value>
+ <!-- Gingerbread Man Art Border -->
+ <value>gingerbreadMan</value>
+ <!-- Triangle Gradient Art Border -->
+ <value>gradient</value>
+ <!-- Handmade Art Border -->
+ <value>handmade1</value>
+ <!-- Handmade Art Border -->
+ <value>handmade2</value>
+ <!-- Heart-Shaped Balloon Art Border -->
+ <value>heartBalloon</value>
+ <!-- Gray Heart Art Border -->
+ <value>heartGray</value>
+ <!-- Hearts Art Border -->
+ <value>hearts</value>
+ <!-- Pattern Art Border -->
+ <value>heebieJeebies</value>
+ <!-- Holly Art Border -->
+ <value>holly</value>
+ <!-- House Art Border -->
+ <value>houseFunky</value>
+ <!-- Circular Art Border -->
+ <value>hypnotic</value>
+ <!-- Ice Cream Cone Art Border -->
+ <value>iceCreamCones</value>
+ <!-- Light Bulb Art Border -->
+ <value>lightBulb</value>
+ <!-- Lightning Art Border -->
+ <value>lightning1</value>
+ <!-- Lightning Art Border -->
+ <value>lightning2</value>
+ <!-- Map Pins Art Border -->
+ <value>mapPins</value>
+ <!-- Maple Leaf Art Border -->
+ <value>mapleLeaf</value>
+ <!-- Muffin Art Border -->
+ <value>mapleMuffins</value>
+ <!-- Marquee Art Border -->
+ <value>marquee</value>
+ <!-- Marquee Art Border -->
+ <value>marqueeToothed</value>
+ <!-- Moon Art Border -->
+ <value>moons</value>
+ <!-- Mosaic Art Border -->
+ <value>mosaic</value>
+ <!-- Musical Note Art Border -->
+ <value>musicNotes</value>
+ <!-- Patterned Art Border -->
+ <value>northwest</value>
+ <!-- Oval Art Border -->
+ <value>ovals</value>
+ <!-- Package Art Border -->
+ <value>packages</value>
+ <!-- Black Palm Tree Art Border -->
+ <value>palmsBlack</value>
+ <!-- Color Palm Tree Art Border -->
+ <value>palmsColor</value>
+ <!-- Paper Clip Art Border -->
+ <value>paperClips</value>
+ <!-- Papyrus Art Border -->
+ <value>papyrus</value>
+ <!-- Party Favor Art Border -->
+ <value>partyFavor</value>
+ <!-- Party Glass Art Border -->
+ <value>partyGlass</value>
+ <!-- Pencils Art Border -->
+ <value>pencils</value>
+ <!-- Character Art Border -->
+ <value>people</value>
+ <!-- Waving Character Border -->
+ <value>peopleWaving</value>
+ <!-- Character With Hat Art Border -->
+ <value>peopleHats</value>
+ <!-- Poinsettia Art Border -->
+ <value>poinsettias</value>
+ <!-- Postage Stamp Art Border -->
+ <value>postageStamp</value>
+ <!-- Pumpkin Art Border -->
+ <value>pumpkin1</value>
+ <!-- Push Pin Art Border -->
+ <value>pushPinNote2</value>
+ <!-- Push Pin Art Border -->
+ <value>pushPinNote1</value>
+ <!-- Pyramid Art Border -->
+ <value>pyramids</value>
+ <!-- Pyramid Art Border -->
+ <value>pyramidsAbove</value>
+ <!-- Quadrants Art Border -->
+ <value>quadrants</value>
+ <!-- Rings Art Border -->
+ <value>rings</value>
+ <!-- Safari Art Border -->
+ <value>safari</value>
+ <!-- Saw tooth Art Border -->
+ <value>sawtooth</value>
+ <!-- Gray Saw tooth Art Border -->
+ <value>sawtoothGray</value>
+ <!-- Scared Cat Art Border -->
+ <value>scaredCat</value>
+ <!-- Umbrella Art Border -->
+ <value>seattle</value>
+ <!-- Shadowed Squares Art Border -->
+ <value>shadowedSquares</value>
+ <!-- Shark Tooth Art Border -->
+ <value>sharksTeeth</value>
+ <!-- Bird Tracks Art Border -->
+ <value>shorebirdTracks</value>
+ <!-- Rocket Art Border -->
+ <value>skyrocket</value>
+ <!-- Snowflake Art Border -->
+ <value>snowflakeFancy</value>
+ <!-- Snowflake Art Border -->
+ <value>snowflakes</value>
+ <!-- Sombrero Art Border -->
+ <value>sombrero</value>
+ <!-- Southwest-themed Art Border -->
+ <value>southwest</value>
+ <!-- Stars Art Border -->
+ <value>stars</value>
+ <!-- Stars On Top Art Border -->
+ <value>starsTop</value>
+ <!-- 3-D Stars Art Border -->
+ <value>stars3d</value>
+ <!-- Stars Art Border -->
+ <value>starsBlack</value>
+ <!-- Stars With Shadows Art Border -->
+ <value>starsShadowed</value>
+ <!-- Sun Art Border -->
+ <value>sun</value>
+ <!-- Whirligig Art Border -->
+ <value>swirligig</value>
+ <!-- Torn Paper Art Border -->
+ <value>tornPaper</value>
+ <!-- Black Torn Paper Art Border -->
+ <value>tornPaperBlack</value>
+ <!-- Tree Art Border -->
+ <value>trees</value>
+ <!-- Triangle Art Border -->
+ <value>triangleParty</value>
+ <!-- Triangles Art Border -->
+ <value>triangles</value>
+ <!-- Tribal Art Border One -->
+ <value>tribal1</value>
+ <!-- Tribal Art Border Two -->
+ <value>tribal2</value>
+ <!-- Tribal Art Border Three -->
+ <value>tribal3</value>
+ <!-- Tribal Art Border Four -->
+ <value>tribal4</value>
+ <!-- Tribal Art Border Five -->
+ <value>tribal5</value>
+ <!-- Tribal Art Border Six -->
+ <value>tribal6</value>
+ <!-- Twisted Lines Art Border -->
+ <value>twistedLines1</value>
+ <!-- Twisted Lines Art Border -->
+ <value>twistedLines2</value>
+ <!-- Vine Art Border -->
+ <value>vine</value>
+ <!-- Wavy Line Art Border -->
+ <value>waveline</value>
+ <!-- Weaving Angles Art Border -->
+ <value>weavingAngles</value>
+ <!-- Weaving Braid Art Border -->
+ <value>weavingBraid</value>
+ <!-- Weaving Ribbon Art Border -->
+ <value>weavingRibbon</value>
+ <!-- Weaving Strips Art Border -->
+ <value>weavingStrips</value>
+ <!-- White Flowers Art Border -->
+ <value>whiteFlowers</value>
+ <!-- Woodwork Art Border -->
+ <value>woodwork</value>
+ <!-- Crisscross Art Border -->
+ <value>xIllusions</value>
+ <!-- Triangle Art Border -->
+ <value>zanyTriangles</value>
+ <!-- Zigzag Art Border -->
+ <value>zigZag</value>
+ <!-- Zigzag stitch -->
+ <value>zigZagStitch</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Border">
+ <attribute name="val">
+ <ref name="ST_Border"/>
+ <xs:documentation>Border Style</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="color">
+ <ref name="ST_HexColor"/>
+ <xs:documentation>Border Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeColor">
+ <ref name="ST_ThemeColor"/>
+ <xs:documentation>Border Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeTint">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Border Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeShade">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Border Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sz">
+ <ref name="ST_EighthPointMeasure"/>
+ <xs:documentation>Border Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="space">
+ <ref name="ST_PointMeasure"/>
+ <xs:documentation>Border Spacing Measurement</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shadow">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Border Shadow</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frame">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Create Frame Effect</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_Shd">
+ <list>
+ <xs:documentation>Shading Patterns</xs:documentation>
+ <choice>
+ <!-- No Pattern -->
+ <value>nil</value>
+ <!-- No Pattern -->
+ <value>clear</value>
+ <!-- 100% Fill Pattern -->
+ <value>solid</value>
+ <!-- Horizontal Stripe Pattern -->
+ <value>horzStripe</value>
+ <!-- Vertical Stripe Pattern -->
+ <value>vertStripe</value>
+ <!-- Reverse Diagonal Stripe Pattern -->
+ <value>reverseDiagStripe</value>
+ <!-- Diagonal Stripe Pattern -->
+ <value>diagStripe</value>
+ <!-- Horizontal Cross Pattern -->
+ <value>horzCross</value>
+ <!-- Diagonal Cross Pattern -->
+ <value>diagCross</value>
+ <!-- Thin Horizontal Stripe Pattern -->
+ <value>thinHorzStripe</value>
+ <!-- Thin Vertical Stripe Pattern -->
+ <value>thinVertStripe</value>
+ <!-- Thin Reverse Diagonal Stripe Pattern -->
+ <value>thinReverseDiagStripe</value>
+ <!-- Thin Diagonal Stripe Pattern -->
+ <value>thinDiagStripe</value>
+ <!-- Thin Horizontal Cross Pattern -->
+ <value>thinHorzCross</value>
+ <!-- Thin Diagonal Cross Pattern -->
+ <value>thinDiagCross</value>
+ <!-- 5% Fill Pattern -->
+ <value>pct5</value>
+ <!-- 10% Fill Pattern -->
+ <value>pct10</value>
+ <!-- 12.5% Fill Pattern -->
+ <value>pct12</value>
+ <!-- 15% Fill Pattern -->
+ <value>pct15</value>
+ <!-- 20% Fill Pattern -->
+ <value>pct20</value>
+ <!-- 25% Fill Pattern -->
+ <value>pct25</value>
+ <!-- 30% Fill Pattern -->
+ <value>pct30</value>
+ <!-- 35% Fill Pattern -->
+ <value>pct35</value>
+ <!-- 37.5% Fill Pattern -->
+ <value>pct37</value>
+ <!-- 40% Fill Pattern -->
+ <value>pct40</value>
+ <!-- 45% Fill Pattern -->
+ <value>pct45</value>
+ <!-- 50% Fill Pattern -->
+ <value>pct50</value>
+ <!-- 55% Fill Pattern -->
+ <value>pct55</value>
+ <!-- 60% Fill Pattern -->
+ <value>pct60</value>
+ <!-- 62.5% Fill Pattern -->
+ <value>pct62</value>
+ <!-- 65% Fill Pattern -->
+ <value>pct65</value>
+ <!-- 70% Fill Pattern -->
+ <value>pct70</value>
+ <!-- 75% Fill Pattern -->
+ <value>pct75</value>
+ <!-- 80% Fill Pattern -->
+ <value>pct80</value>
+ <!-- 85% Fill Pattern -->
+ <value>pct85</value>
+ <!-- 87.5% Fill Pattern -->
+ <value>pct87</value>
+ <!-- 90% Fill Pattern -->
+ <value>pct90</value>
+ <!-- 95% Fill Pattern -->
+ <value>pct95</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Shd">
+ <attribute name="val">
+ <ref name="ST_Shd"/>
+ <xs:documentation>Shading Pattern</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="color">
+ <ref name="ST_HexColor"/>
+ <xs:documentation>Shading Pattern Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeColor">
+ <ref name="ST_ThemeColor"/>
+ <xs:documentation>Shading Pattern Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeTint">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Shading Pattern Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeShade">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Shading Pattern Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fill">
+ <ref name="ST_HexColor"/>
+ <xs:documentation>Shading Background Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeFill">
+ <ref name="ST_ThemeColor"/>
+ <xs:documentation>Shading Background Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeFillTint">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Shading Background Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeFillShade">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Shading Background Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_VerticalAlignRun">
+ <list>
+ <xs:documentation>Vertical Positioning Location</xs:documentation>
+ <choice>
+ <!-- Regular Vertical Positioning -->
+ <value>baseline</value>
+ <!-- Superscript -->
+ <value>superscript</value>
+ <!-- Subscript -->
+ <value>subscript</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_VerticalAlignRun">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Subscript/Superscript Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FitText">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Fit Text Run ID</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_Em">
+ <list>
+ <xs:documentation>Emphasis Mark Type</xs:documentation>
+ <choice>
+ <!-- No Emphasis Mark -->
+ <value>none</value>
+ <!-- Dot Emphasis Mark Above Characters -->
+ <value>dot</value>
+ <!-- Comma Emphasis Mark Above Characters -->
+ <value>comma</value>
+ <!-- Circle Emphasis Mark Above Characters -->
+ <value>circle</value>
+ <!-- Dot Emphasis Mark Below Characters -->
+ <value>underDot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Em">
+ <attribute name="val">
+ <ref name="ST_Em"/>
+ <xs:documentation>Emphasis Mark Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Language">
+ <optional>
+ <attribute name="val">
+ <ref name="ST_Lang"/>
+ <xs:documentation>Latin Language</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="eastAsia">
+ <ref name="ST_Lang"/>
+ <xs:documentation>East Asian Language</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bidi">
+ <ref name="ST_Lang"/>
+ <xs:documentation>Complex Script Language</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_CombineBrackets">
+ <list>
+ <xs:documentation>Two Lines in One Enclosing Character Type</xs:documentation>
+ <choice>
+ <!-- No Enclosing Brackets -->
+ <value>none</value>
+ <!-- Round Brackets -->
+ <value>round</value>
+ <!-- Square Brackets -->
+ <value>square</value>
+ <!-- Angle Brackets -->
+ <value>angle</value>
+ <!-- Curly Brackets -->
+ <value>curly</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_EastAsianLayout">
+ <optional>
+ <attribute name="id">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>East Asian Typography Run ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="combine">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Two Lines in One</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="combineBrackets">
+ <ref name="ST_CombineBrackets"/>
+ <xs:documentation>Display Brackets Around Two Lines in One</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Horizontal in Vertical (Rotate Text)</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vertCompress">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Compress Rotated Text to Line Height</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_XAlign">
+ <list>
+ <xs:documentation>Horizontal Alignment Location</xs:documentation>
+ <choice>
+ <!-- Left Aligned Horizontally -->
+ <value>left</value>
+ <!-- Centered Horizontally -->
+ <value>center</value>
+ <!-- Right Aligned Horizontally -->
+ <value>right</value>
+ <!-- Inside -->
+ <value>inside</value>
+ <!-- Outside -->
+ <value>outside</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_YAlign">
+ <list>
+ <xs:documentation>Vertical Alignment Location</xs:documentation>
+ <choice>
+ <!-- In line With Text -->
+ <value>inline</value>
+ <!-- Top -->
+ <value>top</value>
+ <!-- Centered Vertically -->
+ <value>center</value>
+ <!-- Bottom -->
+ <value>bottom</value>
+ <!-- Inside Anchor Extents -->
+ <value>inside</value>
+ <!-- Outside Anchor Extents -->
+ <value>outside</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_HeightRule">
+ <list>
+ <xs:documentation>Height Rule</xs:documentation>
+ <choice>
+ <!-- Determine Height Based On Contents -->
+ <value>auto</value>
+ <!-- Exact Height -->
+ <value>exact</value>
+ <!-- Minimum Height -->
+ <value>atLeast</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_Wrap">
+ <list>
+ <xs:documentation>Text Wrapping around Text Frame Type</xs:documentation>
+ <choice>
+ <!-- Default Text Wrapping Around Frame -->
+ <value>auto</value>
+ <!-- No Text Wrapping Beside Frame -->
+ <value>notBeside</value>
+ <!-- Allow Text Wrapping Around Frame -->
+ <value>around</value>
+ <!-- Tight Text Wrapping Around Frame -->
+ <value>tight</value>
+ <!-- Through Text Wrapping Around Frame -->
+ <value>through</value>
+ <!-- No Text Wrapping Around Frame -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_VAnchor">
+ <list>
+ <xs:documentation>Vertical Anchor Location</xs:documentation>
+ <choice>
+ <!-- Relative To Vertical Text Extents -->
+ <value>text</value>
+ <!-- Relative To Margin -->
+ <value>margin</value>
+ <!-- Relative To Page -->
+ <value>page</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_HAnchor">
+ <list>
+ <xs:documentation>Horizontal Anchor Location</xs:documentation>
+ <choice>
+ <!-- Relative to Text Extents -->
+ <value>text</value>
+ <!-- Relative To Margin -->
+ <value>margin</value>
+ <!-- Relative to Page -->
+ <value>page</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_DropCap">
+ <list>
+ <xs:documentation>Text Frame Drop Cap Location</xs:documentation>
+ <choice>
+ <!-- Not Drop Cap -->
+ <value>none</value>
+ <!-- Drop Cap Inside Margin -->
+ <value>drop</value>
+ <!-- Drop Cap Outside Margin -->
+ <value>margin</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FramePr">
+ <optional>
+ <attribute name="dropCap">
+ <ref name="ST_DropCap"/>
+ <xs:documentation>Drop Cap Frame</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lines">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Drop Cap Vertical Height in Lines</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="w">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Frame Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="h">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Frame Height</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vSpace">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Vertical Frame Padding</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hSpace">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Horizontal Frame Padding</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="wrap">
+ <ref name="ST_Wrap"/>
+ <xs:documentation>Text Wrapping Around Frame</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hAnchor">
+ <ref name="ST_HAnchor"/>
+ <xs:documentation>Frame Horizontal Positioning Base</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vAnchor">
+ <ref name="ST_VAnchor"/>
+ <xs:documentation>Frame Vertical Positioning Base</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Absolute Horizontal Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xAlign">
+ <ref name="ST_XAlign"/>
+ <xs:documentation>Relative Horizontal Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Absolute Vertical Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yAlign">
+ <ref name="ST_YAlign"/>
+ <xs:documentation>Relative Vertical Position</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hRule">
+ <ref name="ST_HeightRule"/>
+ <xs:documentation>Frame Height Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="anchorLock">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Lock Frame Anchor to Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_TabJc">
+ <list>
+ <xs:documentation>Custom Tab Stop Type</xs:documentation>
+ <choice>
+ <!-- No Tab Stop -->
+ <value>clear</value>
+ <!-- Left Tab -->
+ <value>left</value>
+ <!-- Centered Tab -->
+ <value>center</value>
+ <!-- Right Tab -->
+ <value>right</value>
+ <!-- Decimal Tab -->
+ <value>decimal</value>
+ <!-- Bar Tab -->
+ <value>bar</value>
+ <!-- List Tab -->
+ <value>num</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_TabTlc">
+ <list>
+ <xs:documentation>Custom Tab Stop Leader Character</xs:documentation>
+ <choice>
+ <!-- No tab stop leader -->
+ <value>none</value>
+ <!-- Dotted leader line -->
+ <value>dot</value>
+ <!-- Dashed tab stop leader line -->
+ <value>hyphen</value>
+ <!-- Solid leader line -->
+ <value>underscore</value>
+ <!-- Heavy solid leader line -->
+ <value>heavy</value>
+ <!-- Middle dot leader line -->
+ <value>middleDot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TabStop">
+ <attribute name="val">
+ <ref name="ST_TabJc"/>
+ <xs:documentation>Tab Stop Type</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="leader">
+ <ref name="ST_TabTlc"/>
+ <xs:documentation>Tab Leader Character</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="pos">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Tab Stop Position</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_LineSpacingRule">
+ <list>
+ <xs:documentation>Line Spacing Rule</xs:documentation>
+ <choice>
+ <!-- Automatically Determined Line Height -->
+ <value>auto</value>
+ <!-- Exact Line Height -->
+ <value>exact</value>
+ <!-- Minimum Line Height -->
+ <value>atLeast</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Spacing">
+ <optional>
+ <attribute name="before">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Spacing Above Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="beforeLines">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Spacing Above Paragraph IN Line Units</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="beforeAutospacing">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Automatically Determine Spacing Above Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="after">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Spacing Below Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="afterLines">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Spacing Below Paragraph in Line Units</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="afterAutospacing">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Automatically Determine Spacing Below Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="line">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Spacing Between Lines in Paragraph</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lineRule">
+ <ref name="ST_LineSpacingRule"/>
+ <xs:documentation>Type of Spacing Between Lines</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Ind">
+ <optional>
+ <attribute name="left">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Left Indentation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="leftChars">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Left Indentation in Character Units</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="right">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Right Indentation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rightChars">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Right Indentation in Character Units</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hanging">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Indentation Removed from First Line</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hangingChars">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Indentation Removed From First Line in Character Units</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="firstLine">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Additional First Line Indentation</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="firstLineChars">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Additional First Line Indentation in Character Units</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_Jc">
+ <list>
+ <xs:documentation>Horizontal Alignment Type</xs:documentation>
+ <choice>
+ <!-- Align Left -->
+ <value>left</value>
+ <!-- Align Center -->
+ <value>center</value>
+ <!-- Align Right -->
+ <value>right</value>
+ <!-- Justified -->
+ <value>both</value>
+ <!-- Medium Kashida Length -->
+ <value>mediumKashida</value>
+ <!-- Distribute All Characters Equally -->
+ <value>distribute</value>
+ <!-- Align to List Tab -->
+ <value>numTab</value>
+ <!-- Widest Kashida Length -->
+ <value>highKashida</value>
+ <!-- Low Kashida Length -->
+ <value>lowKashida</value>
+ <!-- Thai Language Justification -->
+ <value>thaiDistribute</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Jc">
+ <attribute name="val">
+ <ref name="ST_Jc"/>
+ <xs:documentation>Alignment Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_View">
+ <list>
+ <xs:documentation>Document View Values</xs:documentation>
+ <choice>
+ <!-- Default View -->
+ <value>none</value>
+ <!-- Print Layout View -->
+ <value>print</value>
+ <!-- Outline View -->
+ <value>outline</value>
+ <!-- Master Document View -->
+ <value>masterPages</value>
+ <!-- Draft View -->
+ <value>normal</value>
+ <!-- Web Page View -->
+ <value>web</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_View">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Document View Setting Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Zoom">
+ <list>
+ <xs:documentation>Magnification Preset Values</xs:documentation>
+ <choice>
+ <!-- No Preset Magnification -->
+ <value>none</value>
+ <!-- Display One Full Page -->
+ <value>fullPage</value>
+ <!-- Display Page Width -->
+ <value>bestFit</value>
+ <!-- Display Text Width -->
+ <value>textFit</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Zoom">
+ <optional>
+ <attribute name="val">
+ <ref name="ST_Zoom"/>
+ <xs:documentation>Zoom Type</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="percent">
+ <ref name="ST_Percentage"/>
+ <xs:documentation>Zoom Percentage</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_WritingStyle">
+ <attribute name="lang">
+ <text/>
+ <xs:documentation>Writing Style Language</xs:documentation>
+ </attribute>
+ <attribute name="vendorID">
+ <text/>
+ <xs:documentation>Grammatical Engine ID</xs:documentation>
+ </attribute>
+ <attribute name="dllVersion">
+ <text/>
+ <xs:documentation>Grammatical Check Engine Version</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="nlCheck">
+ <text/>
+ <xs:documentation>Natural Language Grammar Check</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="checkStyle">
+ <text/>
+ <xs:documentation>Check Stylistic Rules With Grammar</xs:documentation>
+ </attribute>
+ <attribute name="appName">
+ <text/>
+ <xs:documentation>Application Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Proof">
+ <list>
+ <xs:documentation>Proofing State Values</xs:documentation>
+ <choice>
+ <!-- Check Completed -->
+ <value>clean</value>
+ <!-- Check Not Completed -->
+ <value>dirty</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Proof">
+ <optional>
+ <attribute name="spelling">
+ <text/>
+ <xs:documentation>Spell Checking State</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="grammar">
+ <text/>
+ <xs:documentation>Grammatical Checking State</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_DocType">
+ <list>
+ <xs:documentation>Document Classification Values</xs:documentation>
+ <choice>
+ <!-- Default Document -->
+ <value>notSpecified</value>
+ <!-- Letter -->
+ <value>letter</value>
+ <!-- E-Mail Message -->
+ <value>eMail</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_DocType">
+ <attribute name="val">
+ <ref name="ST_DocType"/>
+ <xs:documentation>Document Classification Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_DocProtect">
+ <list>
+ <xs:documentation>Document Protection Types</xs:documentation>
+ <choice>
+ <!-- No Editing Restrictions -->
+ <value>none</value>
+ <!-- Allow No Editing -->
+ <value>readOnly</value>
+ <!-- Allow Editing of Comments -->
+ <value>comments</value>
+ <!-- Allow Editing With Revision Tracking -->
+ <value>trackedChanges</value>
+ <!-- Allow Editing of Form Fields -->
+ <value>forms</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_CryptProv">
+ <list>
+ <xs:documentation>Cryptographic Provider Types</xs:documentation>
+ <choice>
+ <!-- AES Provider -->
+ <value>rsaAES</value>
+ <!-- Any Provider -->
+ <value>rsaFull</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_AlgClass">
+ <list>
+ <xs:documentation>Cryptographic Algorithm Classes</xs:documentation>
+ <!-- Hashing -->
+ <value>hash</value>
+ </list>
+ </define>
+ <define name="ST_AlgType">
+ <list>
+ <xs:documentation>Cryptographic Algorithm Types</xs:documentation>
+ <!-- Any Type -->
+ <value>typeAny</value>
+ </list>
+ </define>
+ <define name="AG_Password">
+ <attribute name="cryptProviderType">
+ <ref name="ST_CryptProv"/>
+ <xs:documentation>Cryptographic Provider Type</xs:documentation>
+ </attribute>
+ <attribute name="cryptAlgorithmClass">
+ <ref name="ST_AlgClass"/>
+ <xs:documentation>Cryptographic Algorithm Class</xs:documentation>
+ </attribute>
+ <attribute name="cryptAlgorithmType">
+ <ref name="ST_AlgType"/>
+ <xs:documentation>Cryptographic Algorithm Type</xs:documentation>
+ </attribute>
+ <attribute name="cryptAlgorithmSid">
+ <text/>
+ <xs:documentation>Cryptographic Hashing Algorithm</xs:documentation>
+ </attribute>
+ <attribute name="cryptSpinCount">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Iterations to Run Hashing Algorithm</xs:documentation>
+ </attribute>
+ <attribute name="cryptProvider">
+ <text/>
+ <xs:documentation>Cryptographic Provider</xs:documentation>
+ </attribute>
+ <attribute name="algIdExt">
+ <text/>
+ <xs:documentation>Cryptographic Algorithm Extensibility</xs:documentation>
+ </attribute>
+ <attribute name="algIdExtSource">
+ <text/>
+ <xs:documentation>Algorithm Extensibility Source</xs:documentation>
+ </attribute>
+ <attribute name="cryptProviderTypeExt">
+ <text/>
+ <xs:documentation>Cryptographic Provider Type Extensibility</xs:documentation>
+ </attribute>
+ <attribute name="cryptProviderTypeExtSource">
+ <text/>
+ <xs:documentation>Provider Type Extensibility Source</xs:documentation>
+ </attribute>
+ <attribute name="hash">
+ <data type="base64Binary">
+ <xs:documentation>Password Hash</xs:documentation>
+ </data>
+ <xs:documentation>Password Hash</xs:documentation>
+ </attribute>
+ <attribute name="salt">
+ <data type="base64Binary">
+ <xs:documentation>Salt for Password Verifier</xs:documentation>
+ </data>
+ <xs:documentation>Salt for Password Verifier</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DocProtect">
+ <optional>
+ <attribute name="edit">
+ <ref name="ST_DocProtect"/>
+ <xs:documentation>Document Editing Restrictions</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="formatting">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Only Allow Formatting With Unlocked Styles</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="enforcement">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Enforce Document Protection Settings</xs:documentation>
+ </attribute>
+ <ref name="AG_Password"/>
+ </define>
+ <define name="ST_MailMergeDocType">
+ <list>
+ <xs:documentation>Source Document Types</xs:documentation>
+ <choice>
+ <!-- Catalog Source Document -->
+ <value>catalog</value>
+ <!-- Envelope Source Document -->
+ <value>envelopes</value>
+ <!-- Mailing Label Source Document -->
+ <value>mailingLabels</value>
+ <!-- Form Letter Source Document -->
+ <value>formLetters</value>
+ <!-- E-Mail Source Document -->
+ <value>email</value>
+ <!-- Fax Source Document -->
+ <value>fax</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MailMergeDocType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Mail Merge Source Document Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_MailMergeDataType">
+ <list>
+ <xs:documentation>Mail Merge Data Source Type Values</xs:documentation>
+ <choice>
+ <!-- Text File Data Source -->
+ <value>textFile</value>
+ <!-- Database Data Source -->
+ <value>database</value>
+ <!-- Spreadsheet Data Source -->
+ <value>spreadsheet</value>
+ <!-- Query Data Source -->
+ <value>query</value>
+ <!-- Open Database Connectivity Data Source -->
+ <value>odbc</value>
+ <!-- Office Data Source Object Data Source -->
+ <value>native</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MailMergeDataType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_MailMergeDest">
+ <list>
+ <xs:documentation>Merged Document Destination Types</xs:documentation>
+ <choice>
+ <!-- Send Merged Documents to New Documents -->
+ <value>newDocument</value>
+ <!-- Send Merged Documents to Printer -->
+ <value>printer</value>
+ <!-- Send Merged Documents as E-mail Messages -->
+ <value>email</value>
+ <!-- Send Merged Documents as Faxes -->
+ <value>fax</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MailMergeDest">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Mail Merge Merged Document Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_MailMergeOdsoFMDFieldType">
+ <list>
+ <xs:documentation>Merge Field Mapping Types</xs:documentation>
+ <choice>
+ <!-- Field Not Mapped -->
+ <value>null</value>
+ <!-- Field Mapping to Data Source Column -->
+ <value>dbColumn</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MailMergeOdsoFMDFieldType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Merge Field Mapping Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TrackChangesView">
+ <optional>
+ <attribute name="markup">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Display Visual Indicator Of Markup Area</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="comments">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Display Comments</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="insDel">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Display Content Revisions</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="formatting">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Display Formatting Revisions</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="inkAnnotations">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Display Ink Annotations</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Kinsoku">
+ <attribute name="lang">
+ <ref name="ST_Lang"/>
+ <xs:documentation>Language For Which Custom Line Breaking Rule Applies</xs:documentation>
+ </attribute>
+ <attribute name="val">
+ <ref name="ST_String"/>
+ <xs:documentation>Characters For Custom Line Breaking Rule</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TextDirection">
+ <list>
+ <xs:documentation>Text Flow Direction</xs:documentation>
+ <choice>
+ <!-- Left to Right, Top to Bottom -->
+ <value>lrTb</value>
+ <!-- Top to Bottom, Right to Left -->
+ <value>tbRl</value>
+ <!-- Bottom to Top, Left to Right -->
+ <value>btLr</value>
+ <!-- Left to Right, Top to Bottom Rotated -->
+ <value>lrTbV</value>
+ <!-- Top to Bottom, Right to Left Rotated -->
+ <value>tbRlV</value>
+ <!-- Top to Bottom, Left to Right Rotated -->
+ <value>tbLrV</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TextDirection">
+ <attribute name="val">
+ <ref name="ST_TextDirection"/>
+ <xs:documentation>Direction of Text Flow</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TextAlignment">
+ <list>
+ <xs:documentation>Vertical Text Alignment Types</xs:documentation>
+ <choice>
+ <!-- Align Text at Top -->
+ <value>top</value>
+ <!-- Align Text at Center -->
+ <value>center</value>
+ <!-- Align Text at Baseline -->
+ <value>baseline</value>
+ <!-- Align Text at Bottom -->
+ <value>bottom</value>
+ <!-- Automatically Determine Alignment -->
+ <value>auto</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TextAlignment">
+ <attribute name="val">
+ <ref name="ST_TextAlignment"/>
+ <xs:documentation>Vertical Character Alignment Position</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_DisplacedByCustomXml">
+ <list>
+ <xs:documentation>Location of Custom XML Markup Displacing an Annotation</xs:documentation>
+ <choice>
+ <!-- Displaced by Next Custom XML Markup Tag -->
+ <value>next</value>
+ <!-- Displaced by Previous Custom XML Markup Tag -->
+ <value>prev</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_AnnotationVMerge">
+ <list>
+ <xs:documentation>Table Cell Vertical Merge Revision Type</xs:documentation>
+ <choice>
+ <!-- Vertically Merged Cell -->
+ <value>cont</value>
+ <!-- Vertically Split Cell -->
+ <value>rest</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Markup">
+ <attribute name="id">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Annotation Identifier</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TrackChange">
+ <ref name="CT_Markup"/>
+ <attribute name="author">
+ <ref name="ST_String"/>
+ <xs:documentation>Annotation Author</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="date">
+ <ref name="ST_DateTime"/>
+ <xs:documentation>Annotation Date</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_CellMergeTrackChange">
+ <ref name="CT_TrackChange"/>
+ <optional>
+ <attribute name="vMerge">
+ <ref name="ST_AnnotationVMerge"/>
+ <xs:documentation>Revised Vertical Merge Setting</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vMergeOrig">
+ <ref name="ST_AnnotationVMerge"/>
+ <xs:documentation>Vertical Merge Setting Removed by Revision</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_TrackChangeRange">
+ <ref name="CT_TrackChange"/>
+ <optional>
+ <attribute name="displacedByCustomXml">
+ <ref name="ST_DisplacedByCustomXml"/>
+ <xs:documentation>Annotation Marker Displaced By Custom XML Markup</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_MarkupRange">
+ <ref name="CT_Markup"/>
+ <optional>
+ <attribute name="displacedByCustomXml">
+ <ref name="ST_DisplacedByCustomXml"/>
+ <xs:documentation>Annotation Marker Relocated For Custom XML Markup</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_MarkupRangeBookmark">
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Annotation Identifier</xs:documentation>
+ </attribute>
+ <ref name="CT_MarkupRange"/>
+ </define>
+ <define name="CT_BookmarkRange">
+ <ref name="CT_MarkupRangeBookmark"/>
+ <optional>
+ <attribute name="colFirst">
+ <text/>
+ <xs:documentation>First Table Column Covered By Bookmark</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colLast">
+ <text/>
+ <xs:documentation>Last Table Column Covered By Bookmark</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Bookmark">
+ <ref name="CT_BookmarkRange"/>
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Bookmark Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_MoveBookmark">
+ <ref name="CT_Bookmark"/>
+ <attribute name="author">
+ <text/>
+ <xs:documentation>Annotation Author</xs:documentation>
+ </attribute>
+ <attribute name="date">
+ <text/>
+ <xs:documentation>Annotation Date</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Comment">
+ <attribute name="id">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Annotation Identifier</xs:documentation>
+ </attribute>
+ <ref name="CT_TrackChange"/>
+ <zeroOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </zeroOrMore>
+ <optional>
+ <attribute name="initials">
+ <ref name="ST_String"/>
+ <xs:documentation>Initials of Comment Author</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_TrackChangeNumbering">
+ <ref name="CT_TrackChange"/>
+ <optional>
+ <attribute name="original">
+ <text/>
+ <xs:documentation>Previous Numbering Value</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_TblPrExChange">
+ <ref name="CT_TrackChange"/>
+ <element name="tblPrEx">
+ <ref name="CT_TblPrExBase"/>
+ </element>
+ </define>
+ <define name="CT_TcPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="tcPr">
+ <ref name="CT_TcPrInner"/>
+ </element>
+ </define>
+ <define name="CT_TrPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="trPr">
+ <ref name="CT_TrPrBase"/>
+ </element>
+ </define>
+ <define name="CT_TblGridChange">
+ <ref name="CT_Markup"/>
+ <element name="tblGrid">
+ <ref name="CT_TblGridBase"/>
+ </element>
+ </define>
+ <define name="CT_TblPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="tblPr">
+ <ref name="CT_TblPrBase"/>
+ </element>
+ </define>
+ <define name="CT_SectPrChange">
+ <ref name="CT_TrackChange"/>
+ <optional>
+ <element name="sectPr">
+ <ref name="CT_SectPrBase"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_PPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="pPr">
+ <ref name="CT_PPrBase"/>
+ </element>
+ </define>
+ <define name="CT_RPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="rPr">
+ <ref name="CT_RPrOriginal"/>
+ </element>
+ </define>
+ <define name="CT_ParaRPrChange">
+ <ref name="CT_TrackChange"/>
+ <element name="rPr">
+ <ref name="CT_ParaRPrOriginal"/>
+ </element>
+ </define>
+ <define name="CT_RunTrackChange">
+ <ref name="CT_TrackChange"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="EG_ContentRunContent"/>
+ <ref name="EG_OMathMathElements"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="EG_CellMarkupElements">
+ <choice>
+ <optional>
+ <element name="cellIns">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cellDel">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cellMerge">
+ <ref name="CT_CellMergeTrackChange"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+ <define name="EG_RangeMarkupElements">
+ <choice>
+ <element name="bookmarkStart">
+ <ref name="CT_Bookmark"/>
+ </element>
+ <element name="bookmarkEnd">
+ <ref name="CT_MarkupRangeBookmark"/>
+ </element>
+ <element name="moveFromRangeStart">
+ <ref name="CT_MoveBookmark"/>
+ </element>
+ <element name="moveFromRangeEnd">
+ <ref name="CT_MarkupRange"/>
+ </element>
+ <element name="moveToRangeStart">
+ <ref name="CT_MoveBookmark"/>
+ </element>
+ <element name="moveToRangeEnd">
+ <ref name="CT_MarkupRange"/>
+ </element>
+ <element name="commentRangeStart">
+ <ref name="CT_MarkupRange"/>
+ </element>
+ <element name="commentRangeEnd">
+ <ref name="CT_MarkupRange"/>
+ </element>
+ <element name="customXmlInsRangeStart">
+ <ref name="CT_TrackChange"/>
+ </element>
+ <element name="customXmlInsRangeEnd">
+ <ref name="CT_Markup"/>
+ </element>
+ <element name="customXmlDelRangeStart">
+ <ref name="CT_TrackChange"/>
+ </element>
+ <element name="customXmlDelRangeEnd">
+ <ref name="CT_Markup"/>
+ </element>
+ <element name="customXmlMoveFromRangeStart">
+ <ref name="CT_TrackChange"/>
+ </element>
+ <element name="customXmlMoveFromRangeEnd">
+ <ref name="CT_Markup"/>
+ </element>
+ <element name="customXmlMoveToRangeStart">
+ <ref name="CT_TrackChange"/>
+ </element>
+ <element name="customXmlMoveToRangeEnd">
+ <ref name="CT_Markup"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_NumPr">
+ <optional>
+ <element name="ilvl">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numId">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numberingChange">
+ <ref name="CT_TrackChangeNumbering"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ins">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_PBdr">
+ <optional>
+ <element name="top">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="between">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bar">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Tabs">
+ <oneOrMore>
+ <element name="tab">
+ <ref name="CT_TabStop"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="ST_TextboxTightWrap">
+ <list>
+ <xs:documentation>Lines To Tight Wrap Within Text Box</xs:documentation>
+ <choice>
+ <!-- Do Not Tight Wrap -->
+ <value>none</value>
+ <!-- Tight Wrap All Lines -->
+ <value>allLines</value>
+ <!-- Tight Wrap First and Last Lines -->
+ <value>firstAndLastLine</value>
+ <!-- Tight Wrap First Line -->
+ <value>firstLineOnly</value>
+ <!-- Tight Wrap Last Line -->
+ <value>lastLineOnly</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TextboxTightWrap">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Lines to Tight Wrap to Paragraph Extents</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_PPrBase">
+ <optional>
+ <element name="pStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="keepNext">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="keepLines">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pageBreakBefore">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="framePr">
+ <ref name="CT_FramePr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="widowControl">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numPr">
+ <ref name="CT_NumPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressLineNumbers">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pBdr">
+ <ref name="CT_PBdr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shd">
+ <ref name="CT_Shd"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tabs">
+ <ref name="CT_Tabs"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressAutoHyphens">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="kinsoku">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wordWrap">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="overflowPunct">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="topLinePunct">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoSpaceDE">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoSpaceDN">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bidi">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="adjustRightInd">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="snapToGrid">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="spacing">
+ <ref name="CT_Spacing"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ind">
+ <ref name="CT_Ind"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="contextualSpacing">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mirrorIndents">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressOverlap">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="jc">
+ <ref name="CT_Jc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="textDirection">
+ <ref name="CT_TextDirection"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="textAlignment">
+ <ref name="CT_TextAlignment"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="textboxTightWrap">
+ <ref name="CT_TextboxTightWrap"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="outlineLvl">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="divId">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cnfStyle">
+ <ref name="CT_Cnf"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_PPr">
+ <ref name="CT_PPrBase"/>
+ <group>
+ <optional>
+ <element name="rPr">
+ <ref name="CT_ParaRPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sectPr">
+ <ref name="CT_SectPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pPrChange">
+ <ref name="CT_PPrChange"/>
+ </element>
+ </optional>
+ </group>
+ </define>
+ <define name="CT_Control">
+ <optional>
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Unique Name for Embedded Control</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shapeid">
+ <text/>
+ <xs:documentation>Associated VML Data Reference</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Background">
+ <ref name="CT_PictureBase"/>
+ <optional>
+ <attribute name="color">
+ <text/>
+ <xs:documentation>Background Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeColor">
+ <text/>
+ <xs:documentation>Background Theme Color</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeTint">
+ <text/>
+ <xs:documentation>Border Theme Color Tint</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="themeShade">
+ <text/>
+ <xs:documentation>Border Theme Color Shade</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Rel">
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </define>
+ <define name="CT_PictureBase">
+ <oneOrMore>
+ <optional>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
+ </oneOrMore>
+ </define>
+ <define name="CT_Object">
+ <ref name="CT_PictureBase"/>
+ <optional>
+ <element name="control">
+ <ref name="CT_Control"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="dxaOrig">
+ <text/>
+ <xs:documentation>Original Image Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dyaOrig">
+ <text/>
+ <xs:documentation>Original Image Height</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Picture">
+ <ref name="CT_PictureBase"/>
+ <group>
+ <optional>
+ <element name="movie">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="control">
+ <ref name="CT_Control"/>
+ </element>
+ </optional>
+ </group>
+ </define>
+ <define name="CT_Drawing">
+ <oneOrMore>
+ <choice>
+ <optional>
+ <ref name="anchor"/>
+ </optional>
+ <optional>
+ <ref name="inline"/>
+ </optional>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="CT_SimpleField">
+ <group>
+ <optional>
+ <element name="fldData">
+ <ref name="CT_Text"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="instr">
+ <text/>
+ <xs:documentation>Field Codes</xs:documentation>
+ </attribute>
+ <attribute name="fldLock">
+ <text/>
+ <xs:documentation>Field Should Not Be Recalculated</xs:documentation>
+ </attribute>
+ <attribute name="dirty">
+ <text/>
+ <xs:documentation>Field Result Invalidated</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_FldCharType">
+ <list>
+ <xs:documentation>Complex Field Character Type</xs:documentation>
+ <choice>
+ <!-- Start Character -->
+ <value>begin</value>
+ <!-- Separator Character -->
+ <value>separate</value>
+ <!-- End Character -->
+ <value>end</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_InfoTextType">
+ <list>
+ <xs:documentation>Help or Status Text Type</xs:documentation>
+ <choice>
+ <!-- Literal Text -->
+ <value>text</value>
+ <!-- Glossary Document Entry -->
+ <value>autoText</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_FFHelpTextVal">
+ <data type="string">
+ <xs:documentation>Help Text Value</xs:documentation>
+ <param name="maxLength">256</param>
+ </data>
+ </define>
+ <define name="ST_FFStatusTextVal">
+ <data type="string">
+ <xs:documentation>Status Text Value</xs:documentation>
+ <param name="maxLength">140</param>
+ </data>
+ </define>
+ <define name="ST_FFName">
+ <data type="string">
+ <xs:documentation>Form Field Name Value</xs:documentation>
+ <param name="maxLength">65</param>
+ </data>
+ </define>
+ <define name="ST_FFTextType">
+ <list>
+ <xs:documentation>Text Box Form Field Type Values</xs:documentation>
+ <choice>
+ <!-- Text Box -->
+ <value>regular</value>
+ <!-- Number -->
+ <value>number</value>
+ <!-- Date -->
+ <value>date</value>
+ <!-- Current Time Display -->
+ <value>currentTime</value>
+ <!-- Current Date Display -->
+ <value>currentDate</value>
+ <!-- Field Calculation -->
+ <value>calculated</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FFTextType">
+ <attribute name="val">
+ <ref name="ST_FFName"/>
+ <xs:documentation>Text Box Form Field Type Values</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FFName">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Form Field Name Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FldChar">
+ <choice>
+ <optional>
+ <element name="fldData">
+ <ref name="CT_Text"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ffData">
+ <ref name="CT_FFData"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numberingChange">
+ <ref name="CT_TrackChangeNumbering"/>
+ </element>
+ </optional>
+ </choice>
+ <attribute name="fldCharType">
+ <ref name="ST_FldCharType"/>
+ <xs:documentation>Field Character Type</xs:documentation>
+ </attribute>
+ <attribute name="fldLock">
+ <text/>
+ <xs:documentation>Field Should Not Be Recalculated</xs:documentation>
+ </attribute>
+ <attribute name="dirty">
+ <text/>
+ <xs:documentation>Field Result Invalidated</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Hyperlink">
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ <optional>
+ <attribute name="tgtFrame">
+ <text/>
+ <xs:documentation>Hyperlink Target Frame</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tooltip">
+ <text/>
+ <xs:documentation>Associated String</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="docLocation">
+ <text/>
+ <xs:documentation>Location in Target Document</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="history">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Add To Viewed Hyperlinks</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="anchor">
+ <text/>
+ <xs:documentation>Hyperlink Anchor</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </define>
+ <define name="CT_FFData">
+ <oneOrMore>
+ <choice>
+ <element name="name">
+ <ref name="CT_FFName"/>
+ </element>
+ <element name="enabled">
+ <ref name="CT_OnOff"/>
+ </element>
+ <element name="calcOnExit">
+ <ref name="CT_OnOff"/>
+ </element>
+ <optional>
+ <element name="entryMacro">
+ <ref name="CT_MacroName"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="exitMacro">
+ <ref name="CT_MacroName"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="helpText">
+ <ref name="CT_FFHelpText"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="statusText">
+ <ref name="CT_FFStatusText"/>
+ </element>
+ </optional>
+ <choice>
+ <element name="checkBox">
+ <ref name="CT_FFCheckBox"/>
+ </element>
+ <element name="ddList">
+ <ref name="CT_FFDDList"/>
+ </element>
+ <element name="textInput">
+ <ref name="CT_FFTextInput"/>
+ </element>
+ </choice>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="CT_FFHelpText">
+ <attribute name="type">
+ <ref name="ST_InfoTextType"/>
+ <xs:documentation>Help Text Type</xs:documentation>
+ </attribute>
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Help Text Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FFStatusText">
+ <attribute name="type">
+ <ref name="ST_InfoTextType"/>
+ <xs:documentation>Status Text Type</xs:documentation>
+ </attribute>
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Status Text Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FFCheckBox">
+ <choice>
+ <element name="size">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ <element name="sizeAuto">
+ <ref name="CT_OnOff"/>
+ </element>
+ </choice>
+ <optional>
+ <element name="default">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="checked">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_FFDDList">
+ <optional>
+ <element name="result">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="default">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="listEntry">
+ <ref name="CT_String"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_FFTextInput">
+ <optional>
+ <element name="type">
+ <ref name="CT_FFTextType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="default">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="maxLength">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="format">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_SectionMark">
+ <list>
+ <xs:documentation>Section Type</xs:documentation>
+ <choice>
+ <!-- Next Page Section Break -->
+ <value>nextPage</value>
+ <!-- Column Section Break -->
+ <value>nextColumn</value>
+ <!-- Continuous Section Break -->
+ <value>continuous</value>
+ <!-- Even Page Section Break -->
+ <value>evenPage</value>
+ <!-- Odd Page Section Break -->
+ <value>oddPage</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_SectType">
+ <attribute name="val">
+ <ref name="ST_SectionMark"/>
+ <xs:documentation>Section Type Setting</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_PaperSource">
+ <attribute name="first">
+ <text/>
+ <xs:documentation>First Page Printer Tray Code</xs:documentation>
+ </attribute>
+ <attribute name="other">
+ <text/>
+ <xs:documentation>Non-First Page Printer Tray Code</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_NumberFormat">
+ <list>
+ <xs:documentation>Numbering Format</xs:documentation>
+ <choice>
+ <!-- Decimal Numbers -->
+ <value>decimal</value>
+ <!-- Uppercase Roman Numerals -->
+ <value>upperRoman</value>
+ <!-- Lowercase Roman Numerals -->
+ <value>lowerRoman</value>
+ <!-- Uppercase Latin Alphabet -->
+ <value>upperLetter</value>
+ <!-- Lowercase Latin Alphabet -->
+ <value>lowerLetter</value>
+ <!-- Ordinal -->
+ <value>ordinal</value>
+ <!-- Cardinal Text -->
+ <value>cardinalText</value>
+ <!-- Ordinal Text -->
+ <value>ordinalText</value>
+ <!-- Hexadecimal Numbering -->
+ <value>hex</value>
+ <!-- Chicago Manual of Style -->
+ <value>chicago</value>
+ <!-- Ideographs -->
+ <value>ideographDigital</value>
+ <!-- Japanese Counting System -->
+ <value>japaneseCounting</value>
+ <!-- AIUEO Order Hiragana -->
+ <value>aiueo</value>
+ <!-- Iroha Ordered Katakana -->
+ <value>iroha</value>
+ <!-- Double Byte Arabic Numerals -->
+ <value>decimalFullWidth</value>
+ <!-- Single Byte Arabic Numerals -->
+ <value>decimalHalfWidth</value>
+ <!-- Japanese Legal Numbering -->
+ <value>japaneseLegal</value>
+ <!-- Japanese Digital Ten Thousand Counting System -->
+ <value>japaneseDigitalTenThousand</value>
+ <!-- Decimal Numbers Enclosed in a Circle -->
+ <value>decimalEnclosedCircle</value>
+ <!-- Double Byte Arabic Numerals Alternate -->
+ <value>decimalFullWidth2</value>
+ <!-- Full-Width AIUEO Order Hiragana -->
+ <value>aiueoFullWidth</value>
+ <!-- Full-Width Iroha Ordered Katakana -->
+ <value>irohaFullWidth</value>
+ <!-- Initial Zero Arabic Numerals -->
+ <value>decimalZero</value>
+ <!-- Bullet -->
+ <value>bullet</value>
+ <!-- Korean Ganada Numbering -->
+ <value>ganada</value>
+ <!-- Korean Chosung Numbering -->
+ <value>chosung</value>
+ <!-- Decimal Numbers Followed by a Period -->
+ <value>decimalEnclosedFullstop</value>
+ <!-- Decimal Numbers Enclosed in Parenthesis -->
+ <value>decimalEnclosedParen</value>
+ <!-- Decimal Numbers Enclosed in a Circle -->
+ <value>decimalEnclosedCircleChinese</value>
+ <!-- Ideographs Enclosed in a Circle -->
+ <value>ideographEnclosedCircle</value>
+ <!-- Traditional Ideograph Format -->
+ <value>ideographTraditional</value>
+ <!-- Zodiac Ideograph Format -->
+ <value>ideographZodiac</value>
+ <!-- Traditional Zodiac Ideograph Format -->
+ <value>ideographZodiacTraditional</value>
+ <!-- Taiwanese Counting System -->
+ <value>taiwaneseCounting</value>
+ <!-- Traditional Legal Ideograph Format -->
+ <value>ideographLegalTraditional</value>
+ <!-- Taiwanese Counting Thousand System -->
+ <value>taiwaneseCountingThousand</value>
+ <!-- Taiwanese Digital Counting System -->
+ <value>taiwaneseDigital</value>
+ <!-- Chinese Counting System -->
+ <value>chineseCounting</value>
+ <!-- Chinese Legal Simplified Format -->
+ <value>chineseLegalSimplified</value>
+ <!-- Chinese Counting Thousand System -->
+ <value>chineseCountingThousand</value>
+ <!-- Korean Digital Counting System -->
+ <value>koreanDigital</value>
+ <!-- Korean Counting System -->
+ <value>koreanCounting</value>
+ <!-- Korean Legal Numbering -->
+ <value>koreanLegal</value>
+ <!-- Korean Digital Counting System Alternate -->
+ <value>koreanDigital2</value>
+ <!-- Vietnamese Numerals -->
+ <value>vietnameseCounting</value>
+ <!-- Lowercase Russian Alphabet -->
+ <value>russianLower</value>
+ <!-- Uppercase Russian Alphabet -->
+ <value>russianUpper</value>
+ <!-- No Numbering -->
+ <value>none</value>
+ <!-- Number With Dashes -->
+ <value>numberInDash</value>
+ <!-- Hebrew Numerals -->
+ <value>hebrew1</value>
+ <!-- Hebrew Alphabet -->
+ <value>hebrew2</value>
+ <!-- Arabic Alphabet -->
+ <value>arabicAlpha</value>
+ <!-- Arabic Abjad Numerals -->
+ <value>arabicAbjad</value>
+ <!-- Hindi Vowels -->
+ <value>hindiVowels</value>
+ <!-- Hindi Consonants -->
+ <value>hindiConsonants</value>
+ <!-- Hindi Numbers -->
+ <value>hindiNumbers</value>
+ <!-- Hindi Counting System -->
+ <value>hindiCounting</value>
+ <!-- Thai Letters -->
+ <value>thaiLetters</value>
+ <!-- Thai Numerals -->
+ <value>thaiNumbers</value>
+ <!-- Thai Counting System -->
+ <value>thaiCounting</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_PageOrientation">
+ <list>
+ <xs:documentation>Page Orientation</xs:documentation>
+ <choice>
+ <!-- Portrait Mode -->
+ <value>portrait</value>
+ <!-- Landscape Mode -->
+ <value>landscape</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PageSz">
+ <optional>
+ <attribute name="w">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Page Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="h">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Page Height</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orient">
+ <ref name="ST_PageOrientation"/>
+ <xs:documentation>Page Orientation</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="code">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Printer Paper Code</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_PageMar">
+ <attribute name="top">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Top Margin Spacing</xs:documentation>
+ </attribute>
+ <attribute name="right">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Right Margin Spacing</xs:documentation>
+ </attribute>
+ <attribute name="bottom">
+ <ref name="ST_SignedTwipsMeasure"/>
+ <xs:documentation>Page Bottom Spacing</xs:documentation>
+ </attribute>
+ <attribute name="left">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Left Margin Spacing</xs:documentation>
+ </attribute>
+ <attribute name="header">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Spacing to Top of Header</xs:documentation>
+ </attribute>
+ <attribute name="footer">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Spacing to Bottom of Footer</xs:documentation>
+ </attribute>
+ <attribute name="gutter">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Page Gutter Spacing</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_PageBorderZOrder">
+ <list>
+ <xs:documentation>Page Border Z-Order</xs:documentation>
+ <choice>
+ <!-- Page Border Ahead of Text -->
+ <value>front</value>
+ <!-- Page Border Behind Text -->
+ <value>back</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_PageBorderDisplay">
+ <list>
+ <xs:documentation>Page Border Display Options</xs:documentation>
+ <choice>
+ <!-- Display Page Border on All Pages -->
+ <value>allPages</value>
+ <!-- Display Page Border on First Page -->
+ <value>firstPage</value>
+ <!-- Display Page Border on All Pages Except First -->
+ <value>notFirstPage</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_PageBorderOffset">
+ <list>
+ <xs:documentation>Page Border Positioning Base</xs:documentation>
+ <choice>
+ <!-- Page Border Is Positioned Relative to Page Edges -->
+ <value>page</value>
+ <!-- Page Border Is Positioned Relative to Text Extents -->
+ <value>text</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PageBorders">
+ <group>
+ <optional>
+ <element name="top">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ </group>
+ <optional>
+ <attribute name="zOrder">
+ <ref name="ST_PageBorderZOrder"/>
+ <xs:documentation>Z-Ordering of Page Border</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="display">
+ <ref name="ST_PageBorderDisplay"/>
+ <xs:documentation>Pages to Display Page Borders</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offsetFrom">
+ <ref name="ST_PageBorderOffset"/>
+ <xs:documentation>Page Border Positioning</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_ChapterSep">
+ <list>
+ <xs:documentation>Chapter Separator Types</xs:documentation>
+ <choice>
+ <!-- Hyphen Chapter Separator -->
+ <value>hyphen</value>
+ <!-- Period Chapter Separator -->
+ <value>period</value>
+ <!-- Colon Chapter Separator -->
+ <value>colon</value>
+ <!-- Em Dash Chapter Separator -->
+ <value>emDash</value>
+ <!-- En Dash Chapter Separator -->
+ <value>enDash</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_LineNumberRestart">
+ <list>
+ <xs:documentation>Line Numbering Restart Position</xs:documentation>
+ <choice>
+ <!-- Restart Line Numbering on Each Page -->
+ <value>newPage</value>
+ <!-- Restart Line Numbering for Each Section -->
+ <value>newSection</value>
+ <!-- Continue Line Numbering From Previous Section -->
+ <value>continuous</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_LineNumber">
+ <optional>
+ <attribute name="countBy">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Line Number Increments to Display</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="start">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Line Numbering Starting Value</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="distance">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Distance Between Text and Line Numbering</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="restart">
+ <ref name="ST_LineNumberRestart"/>
+ <xs:documentation>Line Numbering Restart Setting</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_PageNumber">
+ <optional>
+ <attribute name="fmt">
+ <ref name="ST_NumberFormat"/>
+ <xs:documentation>Page Number Format</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="start">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Starting Page Number</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="chapStyle">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Chapter Heading Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="chapSep">
+ <ref name="ST_ChapterSep"/>
+ <xs:documentation>Chapter Separator Character</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Column">
+ <optional>
+ <attribute name="w">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Column Width</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="space">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Space Before Following Column</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Columns">
+ <zeroOrMore>
+ <element name="col">
+ <ref name="CT_Column"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <attribute name="equalWidth">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Equal Column Widths</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="space">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Spacing Between Equal Width Columns</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="num">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Number of Equal Width Columns</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sep">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Draw Line Between Columns</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_VerticalJc">
+ <list>
+ <xs:documentation>Vertical Alignment Type</xs:documentation>
+ <choice>
+ <!-- Align Top -->
+ <value>top</value>
+ <!-- Align Center -->
+ <value>center</value>
+ <!-- Vertical Justification -->
+ <value>both</value>
+ <!-- Align Bottom -->
+ <value>bottom</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_VerticalJc">
+ <attribute name="val">
+ <ref name="ST_VerticalJc"/>
+ <xs:documentation>Vertical Alignment Setting</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_DocGrid">
+ <list>
+ <xs:documentation>Document Grid Types</xs:documentation>
+ <choice>
+ <!-- No Document Grid -->
+ <value>default</value>
+ <!-- Line Grid Only -->
+ <value>lines</value>
+ <!-- Line and Character Grid -->
+ <value>linesAndChars</value>
+ <!-- Character Grid Only -->
+ <value>snapToChars</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_DocGrid">
+ <attribute name="type">
+ <ref name="ST_DocGrid"/>
+ <xs:documentation>Document Grid Type</xs:documentation>
+ </attribute>
+ <attribute name="linePitch">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Document Grid Line Pitch</xs:documentation>
+ </attribute>
+ <attribute name="charSpace">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Document Grid Character Pitch</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_HdrFtr">
+ <list>
+ <xs:documentation>Header or Footer Type</xs:documentation>
+ <choice>
+ <!-- Even Numbered Pages Only -->
+ <value>even</value>
+ <!-- Default Header or Footer -->
+ <value>default</value>
+ <!-- First Page Only -->
+ <value>first</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_FtnEdn">
+ <list>
+ <xs:documentation>Footnote or Endnote Type</xs:documentation>
+ <choice>
+ <!-- Normal Footnote/Endnote -->
+ <value>normal</value>
+ <!-- Separator -->
+ <value>separator</value>
+ <!-- Continuation Separator -->
+ <value>continuationSeparator</value>
+ <!-- Continuation Notice Separator -->
+ <value>continuationNotice</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_HdrFtrRef">
+ <attribute name="type">
+ <ref name="ST_HdrFtr"/>
+ <xs:documentation>Header or Footer Type</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="EG_HdrFtrReferences">
+ <choice>
+ <optional>
+ <element name="headerReference">
+ <ref name="CT_HdrFtrRef"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="footerReference">
+ <ref name="CT_HdrFtrRef"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+ <define name="CT_HdrFtr">
+ <oneOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </oneOrMore>
+ </define>
+ <define name="EG_SectPrContents">
+ <optional>
+ <element name="footnotePr">
+ <ref name="CT_FtnProps"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="endnotePr">
+ <ref name="CT_EdnProps"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="type">
+ <ref name="CT_SectType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pgSz">
+ <ref name="CT_PageSz"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pgMar">
+ <ref name="CT_PageMar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="paperSrc">
+ <ref name="CT_PaperSource"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pgBorders">
+ <ref name="CT_PageBorders"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lnNumType">
+ <ref name="CT_LineNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pgNumType">
+ <ref name="CT_PageNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cols">
+ <ref name="CT_Columns"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="formProt">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vAlign">
+ <ref name="CT_VerticalJc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noEndnote">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="titlePg">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="textDirection">
+ <ref name="CT_TextDirection"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bidi">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rtlGutter">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="docGrid">
+ <ref name="CT_DocGrid"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printerSettings">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ </define>
+ <define name="AG_SectPrAttributes">
+ <attribute name="rsidRPr">
+ <text/>
+ <xs:documentation>Physical Section Mark Character Revision ID</xs:documentation>
+ </attribute>
+ <attribute name="rsidDel">
+ <text/>
+ <xs:documentation>Section Deletion Revision ID</xs:documentation>
+ </attribute>
+ <attribute name="rsidR">
+ <text/>
+ <xs:documentation>Section Addition Revision ID</xs:documentation>
+ </attribute>
+ <attribute name="rsidSect">
+ <text/>
+ <xs:documentation>Section Properties Revision ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SectPrBase">
+ <optional>
+ <ref name="EG_SectPrContents"/>
+ </optional>
+ <ref name="AG_SectPrAttributes"/>
+ </define>
+ <define name="CT_SectPr">
+ <group>
+ <zeroOrMore>
+ <ref name="EG_HdrFtrReferences"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="EG_SectPrContents"/>
+ </optional>
+ <optional>
+ <element name="sectPrChange">
+ <ref name="CT_SectPrChange"/>
+ </element>
+ </optional>
+ </group>
+ <ref name="AG_SectPrAttributes"/>
+ </define>
+ <define name="ST_BrType">
+ <list>
+ <xs:documentation>Break Types</xs:documentation>
+ <choice>
+ <!-- Page Break -->
+ <value>page</value>
+ <!-- Column Break -->
+ <value>column</value>
+ <!-- Line Break -->
+ <value>textWrapping</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_BrClear">
+ <list>
+ <xs:documentation>Line Break Text Wrapping Restart Location</xs:documentation>
+ <choice>
+ <!-- Restart On Next Line -->
+ <value>none</value>
+ <!-- Restart In Next Text Region When In Leftmost Position -->
+ <value>left</value>
+ <!-- Restart In Next Text Region When In Rightmost Position -->
+ <value>right</value>
+ <!-- Restart On Next Full Line -->
+ <value>all</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Br">
+ <optional>
+ <attribute name="type">
+ <ref name="ST_BrType"/>
+ <xs:documentation>Break Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="clear">
+ <ref name="ST_BrClear"/>
+ <xs:documentation>Restart Location For Text Wrapping Break</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_PTabAlignment">
+ <list>
+ <xs:documentation>Absolute Position Tab Alignment</xs:documentation>
+ <choice>
+ <!-- Left -->
+ <value>left</value>
+ <!-- Center -->
+ <value>center</value>
+ <!-- Right -->
+ <value>right</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_PTabRelativeTo">
+ <list>
+ <xs:documentation>Absolute Position Tab Positioning Base</xs:documentation>
+ <choice>
+ <!-- Relative To Text Margins -->
+ <value>margin</value>
+ <!-- Relative To Indents -->
+ <value>indent</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_PTabLeader">
+ <list>
+ <xs:documentation>Absolute Position Tab Leader Character</xs:documentation>
+ <choice>
+ <!-- No Leader Character -->
+ <value>none</value>
+ <!-- Dot Leader Character -->
+ <value>dot</value>
+ <!-- Hyphen Leader Character -->
+ <value>hyphen</value>
+ <!-- Underscore Leader Character -->
+ <value>underscore</value>
+ <!-- Centered Dot Leader Character -->
+ <value>middleDot</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_PTab">
+ <attribute name="alignment">
+ <ref name="ST_PTabAlignment"/>
+ <xs:documentation>Positional Tab Stop Alignment</xs:documentation>
+ </attribute>
+ <attribute name="relativeTo">
+ <ref name="ST_PTabRelativeTo"/>
+ <xs:documentation>Positional Tab Base</xs:documentation>
+ </attribute>
+ <attribute name="leader">
+ <ref name="ST_PTabLeader"/>
+ <xs:documentation>Tab Leader Character</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Sym">
+ <attribute name="font">
+ <text/>
+ <xs:documentation>Symbol Character Font</xs:documentation>
+ </attribute>
+ <attribute name="char">
+ <ref name="ST_ShortHexNumber"/>
+ <xs:documentation>Symbol Character Code</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_ProofErr">
+ <list>
+ <xs:documentation>Proofing Error Type</xs:documentation>
+ <choice>
+ <!-- Start of Region Marked as Spelling Error -->
+ <value>spellStart</value>
+ <!-- End of Region Marked as Spelling Error -->
+ <value>spellEnd</value>
+ <!-- Start of Region Marked as Grammatical Error -->
+ <value>gramStart</value>
+ <!-- End of Region Marked as Grammatical Error -->
+ <value>gramEnd</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_ProofErr">
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Proofing Error Anchor Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_EdGrp">
+ <list>
+ <xs:documentation>Range Permision Editing Group</xs:documentation>
+ <choice>
+ <!-- No Users Have Editing Permissions -->
+ <value>none</value>
+ <!-- All Users Have Editing Permissions -->
+ <value>everyone</value>
+ <!-- Administrator Group -->
+ <value>administrators</value>
+ <!-- Contributors Group -->
+ <value>contributors</value>
+ <!-- Editors Group -->
+ <value>editors</value>
+ <!-- Owners Group -->
+ <value>owners</value>
+ <!-- Current Group -->
+ <value>current</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Perm">
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Annotation ID</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="displacedByCustomXml">
+ <text/>
+ <xs:documentation>Annotation Displaced By Custom XML Markup</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_PermStart">
+ <ref name="CT_Perm"/>
+ <optional>
+ <attribute name="edGrp">
+ <text/>
+ <xs:documentation>Editor Group For Range Permission</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ed">
+ <text/>
+ <xs:documentation>Single User For Range Permission</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colFirst">
+ <text/>
+ <xs:documentation>First Table Column Covered By Range Permission</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colLast">
+ <text/>
+ <xs:documentation>Last Table Column Covered By Range Permission</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Text">
+ <ref name="ST_String"/>
+ <optional>
+ <attribute name="xml:space">
+ <text/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_FtnEdnRefChar">
+ <empty/>
+ </define>
+ <define name="CT_FtnEdnSep">
+ <empty/>
+ </define>
+ <define name="CT_FtnEdnCont">
+ <empty/>
+ </define>
+ <define name="CT_PgNum">
+ <empty/>
+ </define>
+ <define name="CT_Cr">
+ <empty/>
+ </define>
+ <define name="CT_Tab">
+ <empty/>
+ </define>
+ <define name="EG_RunInnerContent">
+ <choice>
+ <element name="br">
+ <ref name="CT_Br"/>
+ </element>
+ <element name="t">
+ <ref name="CT_Text"/>
+ </element>
+ <element name="delText">
+ <ref name="CT_Text"/>
+ </element>
+ <element name="instrText">
+ <ref name="CT_Text"/>
+ </element>
+ <element name="delInstrText">
+ <ref name="CT_Text"/>
+ </element>
+ <element name="noBreakHyphen">
+ <ref name="CT_Empty"/>
+ </element>
+ <optional>
+ <element name="softHyphen">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dayShort">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="monthShort">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="yearShort">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dayLong">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="monthLong">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="yearLong">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="annotationRef">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="footnoteRef">
+ <ref name="CT_FtnEdnRefChar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="endnoteRef">
+ <ref name="CT_FtnEdnRefChar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="separator">
+ <ref name="CT_FtnEdnSep"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="continuationSeparator">
+ <ref name="CT_FtnEdnCont"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sym">
+ <ref name="CT_Sym"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pgNum">
+ <ref name="CT_PgNum"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cr">
+ <ref name="CT_Cr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tab">
+ <ref name="CT_Tab"/>
+ </element>
+ </optional>
+ <element name="object">
+ <ref name="CT_Object"/>
+ </element>
+ <element name="pict">
+ <ref name="CT_Picture"/>
+ </element>
+ <element name="fldChar">
+ <ref name="CT_FldChar"/>
+ </element>
+ <element name="ruby">
+ <ref name="CT_Ruby"/>
+ </element>
+ <element name="footnoteReference">
+ <ref name="CT_FtnEdnRef"/>
+ </element>
+ <element name="endnoteReference">
+ <ref name="CT_FtnEdnRef"/>
+ </element>
+ <element name="commentReference">
+ <ref name="CT_CommentRef"/>
+ </element>
+ <element name="drawing">
+ <ref name="CT_Drawing"/>
+ </element>
+ <optional>
+ <element name="ptab">
+ <ref name="CT_PTab"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lastRenderedPageBreak">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+ <define name="CT_R">
+ <group>
+ <optional>
+ <ref name="EG_RPr"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_RunInnerContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="rsidRPr">
+ <text/>
+ <xs:documentation>Revision Identifier for Run Properties</xs:documentation>
+ </attribute>
+ <attribute name="rsidDel">
+ <text/>
+ <xs:documentation>Revision Identifier for Run Deletion</xs:documentation>
+ </attribute>
+ <attribute name="rsidR">
+ <text/>
+ <xs:documentation>Revision Identifier for Run</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Hint">
+ <list>
+ <xs:documentation>Font Type Hint</xs:documentation>
+ <choice>
+ <!-- High ANSI Font -->
+ <value>default</value>
+ <!-- East Asian Font -->
+ <value>eastAsia</value>
+ <!-- Complex Script Font -->
+ <value>cs</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_Theme">
+ <list>
+ <xs:documentation>Theme Font</xs:documentation>
+ <choice>
+ <!-- Major East Asian Theme Font -->
+ <value>majorEastAsia</value>
+ <!-- Major Complex Script Theme Font -->
+ <value>majorBidi</value>
+ <!-- Major ASCII Theme Font -->
+ <value>majorAscii</value>
+ <!-- Major High ANSI Theme Font -->
+ <value>majorHAnsi</value>
+ <!-- Minor East Asian Theme Font -->
+ <value>minorEastAsia</value>
+ <!-- Minor Complex Script Theme Font -->
+ <value>minorBidi</value>
+ <!-- Minor ASCII Theme Font -->
+ <value>minorAscii</value>
+ <!-- Minor High ANSI Theme Font -->
+ <value>minorHAnsi</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Fonts">
+ <attribute name="hint">
+ <ref name="ST_Hint"/>
+ <xs:documentation>Font Content Type</xs:documentation>
+ </attribute>
+ <attribute name="ascii">
+ <ref name="ST_String"/>
+ <xs:documentation>ASCII Font</xs:documentation>
+ </attribute>
+ <attribute name="hAnsi">
+ <ref name="ST_String"/>
+ <xs:documentation>High ANSI Font</xs:documentation>
+ </attribute>
+ <attribute name="eastAsia">
+ <ref name="ST_String"/>
+ <xs:documentation>East Asian Font</xs:documentation>
+ </attribute>
+ <attribute name="cs">
+ <ref name="ST_String"/>
+ <xs:documentation>Complex Script Font</xs:documentation>
+ </attribute>
+ <attribute name="asciiTheme">
+ <ref name="ST_Theme"/>
+ <xs:documentation>ASCII Theme Font</xs:documentation>
+ </attribute>
+ <attribute name="hAnsiTheme">
+ <ref name="ST_Theme"/>
+ <xs:documentation>High ANSI Theme Font</xs:documentation>
+ </attribute>
+ <attribute name="eastAsiaTheme">
+ <ref name="ST_Theme"/>
+ <xs:documentation>East Asian Theme Font</xs:documentation>
+ </attribute>
+ <attribute name="cstheme">
+ <ref name="ST_Theme"/>
+ <xs:documentation>Complex Script Theme Font</xs:documentation>
+ </attribute>
+ </define>
+ <define name="EG_RPrBase">
+ <optional>
+ <element name="rStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rFonts">
+ <ref name="CT_Fonts"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="b">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bCs">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="i">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="iCs">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="caps">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="smallCaps">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="strike">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dstrike">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="outline">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shadow">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="emboss">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="imprint">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noProof">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="snapToGrid">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vanish">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="webHidden">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="color">
+ <ref name="CT_Color"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="spacing">
+ <ref name="CT_SignedTwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="w">
+ <ref name="CT_TextScale"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="kern">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="position">
+ <ref name="CT_SignedHpsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sz">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="szCs">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="highlight">
+ <ref name="CT_Highlight"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="u">
+ <ref name="CT_Underline"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="effect">
+ <ref name="CT_TextEffect"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bdr">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shd">
+ <ref name="CT_Shd"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="fitText">
+ <ref name="CT_FitText"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vertAlign">
+ <ref name="CT_VerticalAlignRun"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rtl">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cs">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="em">
+ <ref name="CT_Em"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lang">
+ <ref name="CT_Language"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="eastAsianLayout">
+ <ref name="CT_EastAsianLayout"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="specVanish">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="oMath">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="EG_RPrContent">
+ <optional>
+ <ref name="EG_RPrBase"/>
+ </optional>
+ <optional>
+ <element name="rPrChange">
+ <ref name="CT_RPrChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_RPr">
+ <optional>
+ <ref name="EG_RPrContent"/>
+ </optional>
+ </define>
+ <define name="EG_RPr">
+ <optional>
+ <element name="rPr">
+ <ref name="CT_RPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="EG_RPrMath">
+ <choice>
+ <ref name="EG_RPr"/>
+ <element name="ins">
+ <ref name="CT_RPrChange"/>
+ </element>
+ <element name="del">
+ <ref name="CT_RPrChange"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_RPrOriginal">
+ <zeroOrMore>
+ <ref name="EG_RPrBase"/>
+ </zeroOrMore>
+ </define>
+ <define name="CT_ParaRPrOriginal">
+ <optional>
+ <ref name="EG_ParaRPrTrackChanges"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_RPrBase"/>
+ </zeroOrMore>
+ </define>
+ <define name="CT_ParaRPr">
+ <optional>
+ <ref name="EG_ParaRPrTrackChanges"/>
+ </optional>
+ <optional>
+ <ref name="EG_RPrBase"/>
+ </optional>
+ <optional>
+ <element name="rPrChange">
+ <ref name="CT_ParaRPrChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_ParaTrackChange">
+ <ref name="CT_TrackChange"/>
+ </define>
+ <define name="EG_ParaRPrTrackChanges">
+ <optional>
+ <element name="ins">
+ <ref name="CT_ParaTrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="del">
+ <ref name="CT_ParaTrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="moveFrom">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="moveTo">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_AltChunk">
+ <optional>
+ <element name="altChunkPr">
+ <ref name="CT_AltChunkPr"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_AltChunkPr">
+ <optional>
+ <element name="matchSrc">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_RubyAlign">
+ <list>
+ <xs:documentation>Phonetic Guide Text Alignment</xs:documentation>
+ <choice>
+ <!-- Center -->
+ <value>center</value>
+ <!-- Distribute All Characters -->
+ <value>distributeLetter</value>
+ <!-- Distribute all Characters w/ Additional Space On Either Side -->
+ <value>distributeSpace</value>
+ <!-- Left Aligned -->
+ <value>left</value>
+ <!-- Right Aligned -->
+ <value>right</value>
+ <!-- Vertically Aligned to Right of Base Text -->
+ <value>rightVertical</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_RubyAlign">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Phonetic Guide Text Alignment Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_RubyPr">
+ <element name="rubyAlign">
+ <ref name="CT_RubyAlign"/>
+ </element>
+ <element name="hps">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ <element name="hpsRaise">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ <element name="hpsBaseText">
+ <ref name="CT_HpsMeasure"/>
+ </element>
+ <element name="lid">
+ <ref name="CT_Lang"/>
+ </element>
+ <optional>
+ <element name="dirty">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="EG_RubyContent">
+ <choice>
+ <element name="r">
+ <ref name="CT_R"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_RunLevelElts"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_RubyContent">
+ <zeroOrMore>
+ <ref name="EG_RubyContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="CT_Ruby">
+ <element name="rubyPr">
+ <ref name="CT_RubyPr"/>
+ </element>
+ <element name="rt">
+ <ref name="CT_RubyContent"/>
+ </element>
+ <element name="rubyBase">
+ <ref name="CT_RubyContent"/>
+ </element>
+ </define>
+ <define name="ST_Lock">
+ <list>
+ <xs:documentation>Locking Types</xs:documentation>
+ <choice>
+ <!-- SDT Cannot Be Deleted -->
+ <value>sdtLocked</value>
+ <!-- Contents Cannot Be Edited At Runtime -->
+ <value>contentLocked</value>
+ <!-- No Locking -->
+ <value>unlocked</value>
+ <!-- Contents Cannot Be Edited At Runtime And SDT Cannot Be Deleted -->
+ <value>sdtContentLocked</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Lock">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Locking Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SdtListItem">
+ <attribute name="displayText">
+ <text/>
+ <xs:documentation>List Entry Display Text</xs:documentation>
+ </attribute>
+ <attribute name="value">
+ <text/>
+ <xs:documentation>List Entry Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_SdtDateMappingType">
+ <list>
+ <xs:documentation>Date Storage Format Types</xs:documentation>
+ <choice>
+ <!-- Same As Display -->
+ <value>text</value>
+ <!-- XML Schema Date Format -->
+ <value>date</value>
+ <!-- XML Schema DateTime Format -->
+ <value>dateTime</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_SdtDateMappingType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Date Storage Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_CalendarType">
+ <list>
+ <xs:documentation>Calendar Types</xs:documentation>
+ <choice>
+ <!-- Gregorian -->
+ <value>gregorian</value>
+ <!-- Hijri -->
+ <value>hijri</value>
+ <!-- Hebrew -->
+ <value>hebrew</value>
+ <!-- Taiwan -->
+ <value>taiwan</value>
+ <!-- Japanese Emperor Era -->
+ <value>japan</value>
+ <!-- Thai -->
+ <value>thai</value>
+ <!-- Korean Tangun Era -->
+ <value>korea</value>
+ <!-- Saka Era -->
+ <value>saka</value>
+ <!-- Gregorian transliterated English -->
+ <value>gregorianXlitEnglish</value>
+ <!-- Gregorian transliterated French -->
+ <value>gregorianXlitFrench</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_CalendarType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Calendar Type Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SdtDate">
+ <group>
+ <optional>
+ <element name="dateFormat">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lid">
+ <ref name="CT_Lang"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="storeMappedDataAs">
+ <ref name="CT_SdtDateMappingType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="calendar">
+ <ref name="CT_CalendarType"/>
+ </element>
+ </optional>
+ </group>
+ <optional>
+ <attribute name="fullDate">
+ <text/>
+ <xs:documentation>Last Known Date in XML Schema DateTime Format</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_SdtComboBox">
+ <zeroOrMore>
+ <element name="listItem">
+ <ref name="CT_SdtListItem"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <attribute name="lastValue">
+ <text/>
+ <xs:documentation>Combo Box Last Saved Value</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_SdtDocPart">
+ <optional>
+ <element name="docPartGallery">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="docPartCategory">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="docPartUnique">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SdtDropDownList">
+ <zeroOrMore>
+ <element name="listItem">
+ <ref name="CT_SdtListItem"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <attribute name="lastValue">
+ <text/>
+ <xs:documentation>Drop-down List Last Saved Value</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Placeholder">
+ <element name="docPart">
+ <ref name="CT_String"/>
+ </element>
+ </define>
+ <define name="CT_SdtText">
+ <attribute name="multiLine">
+ <text/>
+ <xs:documentation>Allow Soft Line Breaks</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DataBinding">
+ <attribute name="prefixMappings">
+ <text/>
+ <xs:documentation>XML Namespace Prefix Mappings</xs:documentation>
+ </attribute>
+ <attribute name="xpath">
+ <text/>
+ <xs:documentation>XPath</xs:documentation>
+ </attribute>
+ <attribute name="storeItemID">
+ <text/>
+ <xs:documentation>Custom XML Data Storage ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SdtPr">
+ <oneOrMore>
+ <choice>
+ <optional>
+ <element name="rPr">
+ <ref name="CT_RPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="alias">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lock">
+ <ref name="CT_Lock"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="placeholder">
+ <ref name="CT_Placeholder"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="showingPlcHdr">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dataBinding">
+ <ref name="CT_DataBinding"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="temporary">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="id">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tag">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <choice>
+ <element name="equation">
+ <ref name="CT_Empty"/>
+ </element>
+ <element name="comboBox">
+ <ref name="CT_SdtComboBox"/>
+ </element>
+ <element name="date">
+ <ref name="CT_SdtDate"/>
+ </element>
+ <element name="docPartObj">
+ <ref name="CT_SdtDocPart"/>
+ </element>
+ <element name="docPartList">
+ <ref name="CT_SdtDocPart"/>
+ </element>
+ <element name="dropDownList">
+ <ref name="CT_SdtDropDownList"/>
+ </element>
+ <element name="picture">
+ <ref name="CT_Empty"/>
+ </element>
+ <element name="richText">
+ <ref name="CT_Empty"/>
+ </element>
+ <element name="text">
+ <ref name="CT_SdtText"/>
+ </element>
+ <element name="citation">
+ <ref name="CT_Empty"/>
+ </element>
+ <element name="group">
+ <ref name="CT_Empty"/>
+ </element>
+ <element name="bibliography">
+ <ref name="CT_Empty"/>
+ </element>
+ </choice>
+ </optional>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="CT_SdtEndPr">
+ <oneOrMore>
+ <optional>
+ <element name="rPr">
+ <ref name="CT_RPr"/>
+ </element>
+ </optional>
+ </oneOrMore>
+ </define>
+ <define name="EG_ContentRunContent">
+ <choice>
+ <element name="customXml">
+ <ref name="CT_CustomXmlRun"/>
+ </element>
+ <element name="smartTag">
+ <ref name="CT_SmartTagRun"/>
+ </element>
+ <element name="sdt">
+ <ref name="CT_SdtRun"/>
+ </element>
+ <element name="r">
+ <ref name="CT_R"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_RunLevelElts"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_SdtContentRun">
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="EG_ContentBlockContent">
+ <choice>
+ <element name="customXml">
+ <ref name="CT_CustomXmlBlock"/>
+ </element>
+ <element name="sdt">
+ <ref name="CT_SdtBlock"/>
+ </element>
+ <zeroOrMore>
+ <element name="p">
+ <ref name="CT_P"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="tbl">
+ <ref name="CT_Tbl"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="EG_RunLevelElts"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_SdtContentBlock">
+ <zeroOrMore>
+ <ref name="EG_ContentBlockContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="EG_ContentRowContent">
+ <choice>
+ <zeroOrMore>
+ <element name="tr">
+ <ref name="CT_Row"/>
+ </element>
+ </zeroOrMore>
+ <element name="customXml">
+ <ref name="CT_CustomXmlRow"/>
+ </element>
+ <element name="sdt">
+ <ref name="CT_SdtRow"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_RunLevelElts"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_SdtContentRow">
+ <zeroOrMore>
+ <ref name="EG_ContentRowContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="EG_ContentCellContent">
+ <choice>
+ <zeroOrMore>
+ <element name="tc">
+ <ref name="CT_Tc"/>
+ </element>
+ </zeroOrMore>
+ <element name="customXml">
+ <ref name="CT_CustomXmlCell"/>
+ </element>
+ <element name="sdt">
+ <ref name="CT_SdtCell"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_RunLevelElts"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_SdtContentCell">
+ <zeroOrMore>
+ <ref name="EG_ContentCellContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="CT_SdtBlock">
+ <optional>
+ <element name="sdtPr">
+ <ref name="CT_SdtPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtEndPr">
+ <ref name="CT_SdtEndPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtContent">
+ <ref name="CT_SdtContentBlock"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SdtRun">
+ <optional>
+ <element name="sdtPr">
+ <ref name="CT_SdtPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtEndPr">
+ <ref name="CT_SdtEndPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtContent">
+ <ref name="CT_SdtContentRun"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SdtCell">
+ <optional>
+ <element name="sdtPr">
+ <ref name="CT_SdtPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtEndPr">
+ <ref name="CT_SdtEndPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtContent">
+ <ref name="CT_SdtContentCell"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_SdtRow">
+ <optional>
+ <element name="sdtPr">
+ <ref name="CT_SdtPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtEndPr">
+ <ref name="CT_SdtEndPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sdtContent">
+ <ref name="CT_SdtContentRow"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Attr">
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Namespace</xs:documentation>
+ </attribute>
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Name</xs:documentation>
+ </attribute>
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomXmlRun">
+ <group>
+ <optional>
+ <element name="customXmlPr">
+ <ref name="CT_CustomXmlPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Custom XML Markup Namespace</xs:documentation>
+ </attribute>
+ <attribute name="element">
+ <text/>
+ <xs:documentation>Element name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SmartTagRun">
+ <group>
+ <optional>
+ <element name="smartTagPr">
+ <ref name="CT_SmartTagPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Smart Tag Namespace</xs:documentation>
+ </attribute>
+ <attribute name="element">
+ <text/>
+ <xs:documentation>Smart Tag Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomXmlBlock">
+ <group>
+ <optional>
+ <element name="customXmlPr">
+ <ref name="CT_CustomXmlPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_ContentBlockContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Custom XML Element Namespace</xs:documentation>
+ </attribute>
+ <attribute name="element">
+ <text/>
+ <xs:documentation>Custom XML Element Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomXmlPr">
+ <optional>
+ <element name="placeholder">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="attr">
+ <ref name="CT_Attr"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_CustomXmlRow">
+ <group>
+ <optional>
+ <element name="customXmlPr">
+ <ref name="CT_CustomXmlPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_ContentRowContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Custom XML Element Namespace</xs:documentation>
+ </attribute>
+ <attribute name="element">
+ <text/>
+ <xs:documentation>Custom XML Element Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CustomXmlCell">
+ <group>
+ <optional>
+ <element name="customXmlPr">
+ <ref name="CT_CustomXmlPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_ContentCellContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="uri">
+ <text/>
+ <xs:documentation>Custom XML Element Namespace</xs:documentation>
+ </attribute>
+ <attribute name="element">
+ <text/>
+ <xs:documentation>Custom XML Element Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SmartTagPr">
+ <zeroOrMore>
+ <element name="attr">
+ <ref name="CT_Attr"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="EG_PContent">
+ <choice>
+ <zeroOrMore>
+ <ref name="EG_ContentRunContent"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="fldSimple">
+ <ref name="CT_SimpleField"/>
+ </element>
+ </zeroOrMore>
+ <element name="hyperlink">
+ <ref name="CT_Hyperlink"/>
+ </element>
+ <element name="subDoc">
+ <ref name="CT_Rel"/>
+ </element>
+ </choice>
+ </define>
+ <define name="CT_P">
+ <group>
+ <optional>
+ <element name="pPr">
+ <ref name="CT_PPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_PContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="rsidRPr">
+ <text/>
+ <xs:documentation>Revision Identifier for Paragraph Glyph Formatting</xs:documentation>
+ </attribute>
+ <attribute name="rsidR">
+ <text/>
+ <xs:documentation>Revision Identifier for Paragraph</xs:documentation>
+ </attribute>
+ <attribute name="rsidDel">
+ <text/>
+ <xs:documentation>Revision Identifier for Paragraph Deletion</xs:documentation>
+ </attribute>
+ <attribute name="rsidP">
+ <text/>
+ <xs:documentation>Revision Identifier for Paragraph Properties</xs:documentation>
+ </attribute>
+ <attribute name="rsidRDefault">
+ <text/>
+ <xs:documentation>Default Revision Identifier for Runs</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TblWidth">
+ <list>
+ <xs:documentation>Table Width Units</xs:documentation>
+ <choice>
+ <!-- No Width -->
+ <value>nil</value>
+ <!-- Width in Fiftieths of a Percent -->
+ <value>pct</value>
+ <!-- Width in Twentieths of a Point -->
+ <value>dxa</value>
+ <!-- Automatically Determined Width -->
+ <value>auto</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Height">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Table Row Height</xs:documentation>
+ </attribute>
+ <attribute name="hRule">
+ <text/>
+ <xs:documentation>Table Row Height Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TblWidth">
+ <attribute name="w">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Table Width Value</xs:documentation>
+ </attribute>
+ <attribute name="type">
+ <ref name="ST_TblWidth"/>
+ <xs:documentation>Table Width Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TblGridCol">
+ <attribute name="w">
+ <ref name="ST_TwipsMeasure"/>
+ <xs:documentation>Grid Column Width</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TblGridBase">
+ <zeroOrMore>
+ <element name="gridCol">
+ <ref name="CT_TblGridCol"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_TblGrid">
+ <ref name="CT_TblGridBase"/>
+ <optional>
+ <element name="tblGridChange">
+ <ref name="CT_TblGridChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TcBorders">
+ <optional>
+ <element name="top">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="insideH">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="insideV">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tl2br">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tr2bl">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TcMar">
+ <optional>
+ <element name="top">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_Merge">
+ <list>
+ <xs:documentation>Merged Cell Type</xs:documentation>
+ <choice>
+ <!-- Continue Merged Region -->
+ <value>continue</value>
+ <!-- Start/Restart Merged Region -->
+ <value>restart</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_VMerge">
+ <attribute name="val">
+ <ref name="ST_Merge"/>
+ <xs:documentation>Vertical Merge Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_HMerge">
+ <attribute name="val">
+ <ref name="ST_Merge"/>
+ <xs:documentation>Horizontal Merge Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TcPrBase">
+ <optional>
+ <element name="cnfStyle">
+ <ref name="CT_Cnf"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcW">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="gridSpan">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hMerge">
+ <ref name="CT_HMerge"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vMerge">
+ <ref name="CT_VMerge"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcBorders">
+ <ref name="CT_TcBorders"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shd">
+ <ref name="CT_Shd"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noWrap">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcMar">
+ <ref name="CT_TcMar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="textDirection">
+ <ref name="CT_TextDirection"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcFitText">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="vAlign">
+ <ref name="CT_VerticalJc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hideMark">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TcPr">
+ <ref name="CT_TcPrInner"/>
+ <optional>
+ <element name="tcPrChange">
+ <ref name="CT_TcPrChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TcPrInner">
+ <ref name="CT_TcPrBase"/>
+ <optional>
+ <ref name="EG_CellMarkupElements"/>
+ </optional>
+ </define>
+ <define name="CT_Tc">
+ <optional>
+ <element name="tcPr">
+ <ref name="CT_TcPr"/>
+ </element>
+ </optional>
+ <oneOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </oneOrMore>
+ </define>
+ <define name="ST_Cnf">
+ <data type="string">
+ <xs:documentation>Conditional Formatting Bitmask</xs:documentation>
+ <param name="length">12</param>
+ <param name="pattern">[01]*</param>
+ </data>
+ </define>
+ <define name="CT_Cnf">
+ <attribute name="val">
+ <ref name="ST_Cnf"/>
+ <xs:documentation>Conditional Formatting Bit Mask</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TrPrBase">
+ <oneOrMore>
+ <choice>
+ <optional>
+ <element name="cnfStyle">
+ <ref name="CT_Cnf"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="divId">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="gridBefore">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="gridAfter">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wBefore">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wAfter">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cantSplit">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trHeight">
+ <ref name="CT_Height"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblHeader">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblCellSpacing">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="jc">
+ <ref name="CT_Jc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hidden">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="CT_TrPr">
+ <ref name="CT_TrPrBase"/>
+ <group>
+ <optional>
+ <element name="ins">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="del">
+ <ref name="CT_TrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trPrChange">
+ <ref name="CT_TrPrChange"/>
+ </element>
+ </optional>
+ </group>
+ </define>
+ <define name="CT_Row">
+ <group>
+ <optional>
+ <element name="tblPrEx">
+ <ref name="CT_TblPrEx"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trPr">
+ <ref name="CT_TrPr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_ContentCellContent"/>
+ </zeroOrMore>
+ </group>
+ <attribute name="rsidRPr">
+ <text/>
+ <xs:documentation>Revision Identifier for Table Row Glyph Formatting</xs:documentation>
+ </attribute>
+ <attribute name="rsidR">
+ <text/>
+ <xs:documentation>Revision Identifier for Table Row</xs:documentation>
+ </attribute>
+ <attribute name="rsidDel">
+ <text/>
+ <xs:documentation>Revision Identifier for Table Row Deletion</xs:documentation>
+ </attribute>
+ <attribute name="rsidTr">
+ <text/>
+ <xs:documentation>Revision Identifier for Table Row Properties</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TblLayoutType">
+ <list>
+ <xs:documentation>Table Layout Type</xs:documentation>
+ <choice>
+ <!-- Fixed Width Table Layout -->
+ <value>fixed</value>
+ <!-- AutoFit Table Layout -->
+ <value>autofit</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TblLayoutType">
+ <attribute name="type">
+ <text/>
+ <xs:documentation>Table Layout Setting</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_TblOverlap">
+ <list>
+ <xs:documentation>Table Overlap Setting</xs:documentation>
+ <choice>
+ <!-- Floating Table Cannot Overlap -->
+ <value>never</value>
+ <!-- Floating Table Can Overlap -->
+ <value>overlap</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TblOverlap">
+ <attribute name="val">
+ <ref name="ST_TblOverlap"/>
+ <xs:documentation>Floating Table Overlap Setting</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TblPPr">
+ <attribute name="leftFromText">
+ <text/>
+ <xs:documentation>Distance From Left of Table to Text</xs:documentation>
+ </attribute>
+ <attribute name="rightFromText">
+ <text/>
+ <xs:documentation>(Distance From Right of Table to Text</xs:documentation>
+ </attribute>
+ <attribute name="topFromText">
+ <text/>
+ <xs:documentation>Distance From Top of Table to Text</xs:documentation>
+ </attribute>
+ <attribute name="bottomFromText">
+ <text/>
+ <xs:documentation>Distance From Bottom of Table to Text</xs:documentation>
+ </attribute>
+ <attribute name="vertAnchor">
+ <text/>
+ <xs:documentation>Table Vertical Anchor</xs:documentation>
+ </attribute>
+ <attribute name="horzAnchor">
+ <text/>
+ <xs:documentation>Table Horizontal Anchor</xs:documentation>
+ </attribute>
+ <attribute name="tblpXSpec">
+ <text/>
+ <xs:documentation>Relative Horizontal Alignment From Anchor</xs:documentation>
+ </attribute>
+ <attribute name="tblpX">
+ <text/>
+ <xs:documentation>Absolute Horizontal Distance From Anchor</xs:documentation>
+ </attribute>
+ <attribute name="tblpYSpec">
+ <text/>
+ <xs:documentation>Relative Vertical Alignment from Anchor</xs:documentation>
+ </attribute>
+ <attribute name="tblpY">
+ <text/>
+ <xs:documentation>Absolute Vertical Distance From Anchor</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_TblCellMar">
+ <optional>
+ <element name="top">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TblBorders">
+ <optional>
+ <element name="top">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="insideH">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="insideV">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TblPrBase">
+ <optional>
+ <element name="tblStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblpPr">
+ <ref name="CT_TblPPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblOverlap">
+ <ref name="CT_TblOverlap"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bidiVisual">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblStyleRowBandSize">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblStyleColBandSize">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblW">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="jc">
+ <ref name="CT_Jc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblCellSpacing">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblInd">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblBorders">
+ <ref name="CT_TblBorders"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shd">
+ <ref name="CT_Shd"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblLayout">
+ <ref name="CT_TblLayoutType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblCellMar">
+ <ref name="CT_TblCellMar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblLook">
+ <ref name="CT_ShortHexNumber"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TblPr">
+ <ref name="CT_TblPrBase"/>
+ <optional>
+ <element name="tblPrChange">
+ <ref name="CT_TblPrChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TblPrExBase">
+ <optional>
+ <element name="tblW">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="jc">
+ <ref name="CT_Jc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblCellSpacing">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblInd">
+ <ref name="CT_TblWidth"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblBorders">
+ <ref name="CT_TblBorders"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shd">
+ <ref name="CT_Shd"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblLayout">
+ <ref name="CT_TblLayoutType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblCellMar">
+ <ref name="CT_TblCellMar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblLook">
+ <ref name="CT_ShortHexNumber"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_TblPrEx">
+ <ref name="CT_TblPrExBase"/>
+ <optional>
+ <element name="tblPrExChange">
+ <ref name="CT_TblPrExChange"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Tbl">
+ <zeroOrMore>
+ <ref name="EG_RangeMarkupElements"/>
+ </zeroOrMore>
+ <element name="tblPr">
+ <ref name="CT_TblPr"/>
+ </element>
+ <element name="tblGrid">
+ <ref name="CT_TblGrid"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_ContentRowContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="ST_FtnPos">
+ <list>
+ <xs:documentation>Footnote Positioning Location</xs:documentation>
+ <choice>
+ <!-- Footnotes Positioned at Page Bottom -->
+ <value>pageBottom</value>
+ <!-- Footnotes Positioned Beneath Text -->
+ <value>beneathText</value>
+ <!-- Footnotes Positioned At End of Section -->
+ <value>sectEnd</value>
+ <!-- Footnotes Positioned At End of Document -->
+ <value>docEnd</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FtnPos">
+ <attribute name="val">
+ <ref name="ST_FtnPos"/>
+ <xs:documentation>Footnote Position Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_EdnPos">
+ <list>
+ <xs:documentation>Endnote Positioning Location</xs:documentation>
+ <choice>
+ <!-- Endnotes Positioned at End of Section -->
+ <value>sectEnd</value>
+ <!-- Endnotes Positioned at End of Document -->
+ <value>docEnd</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_EdnPos">
+ <attribute name="val">
+ <ref name="ST_EdnPos"/>
+ <xs:documentation>Endnote Position Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_NumFmt">
+ <attribute name="val">
+ <ref name="ST_NumberFormat"/>
+ <xs:documentation>Numbering Format Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_RestartNumber">
+ <list>
+ <xs:documentation>Footnote/Endnote Numbering Restart Locations</xs:documentation>
+ <choice>
+ <!-- Continue Numbering From Previous Section -->
+ <value>continuous</value>
+ <!-- Restart Numbering For Each Section -->
+ <value>eachSect</value>
+ <!-- Restart Numbering On Each Page -->
+ <value>eachPage</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_NumRestart">
+ <attribute name="val">
+ <ref name="ST_RestartNumber"/>
+ <xs:documentation>Automatic Numbering Restart Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FtnEdnRef">
+ <optional>
+ <attribute name="customMarkFollows">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Suppress Footnote/Endnote Reference Mark</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Footnote/Endnote ID Reference</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FtnEdnSepRef">
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Footnote/Endnote ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FtnEdn">
+ <oneOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </oneOrMore>
+ <optional>
+ <attribute name="type">
+ <ref name="ST_FtnEdn"/>
+ <xs:documentation>Footnote/Endnote Type</xs:documentation>
+ </attribute>
+ </optional>
+ <attribute name="id">
+ <text/>
+ <xs:documentation>Footnote/Endnote ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_CommentRef">
+ <ref name="CT_Markup"/>
+ </define>
+ <define name="EG_FtnEdnNumProps">
+ <optional>
+ <element name="numStart">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numRestart">
+ <ref name="CT_NumRestart"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_FtnProps">
+ <optional>
+ <element name="pos">
+ <ref name="CT_FtnPos"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numFmt">
+ <ref name="CT_NumFmt"/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="EG_FtnEdnNumProps"/>
+ </optional>
+ </define>
+ <define name="CT_EdnProps">
+ <optional>
+ <element name="pos">
+ <ref name="CT_EdnPos"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numFmt">
+ <ref name="CT_NumFmt"/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="EG_FtnEdnNumProps"/>
+ </optional>
+ </define>
+ <define name="CT_FtnDocProps">
+ <ref name="CT_FtnProps"/>
+ <zeroOrMore>
+ <element name="footnote">
+ <ref name="CT_FtnEdnSepRef"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_EdnDocProps">
+ <ref name="CT_EdnProps"/>
+ <zeroOrMore>
+ <element name="endnote">
+ <ref name="CT_FtnEdnSepRef"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_RecipientData">
+ <optional>
+ <element name="active">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <element name="column">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ <element name="uniqueTag">
+ <data type="base64Binary">
+ <xs:documentation>Unique Value for Record</xs:documentation>
+ </data>
+ </element>
+ </define>
+ <define name="CT_Recipients">
+ <oneOrMore>
+ <element name="recipientData">
+ <ref name="CT_RecipientData"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="recipients">
+ <element name="recipients">
+ <ref name="CT_Recipients"/>
+ </element>
+ </define>
+ <define name="CT_OdsoFieldMapData">
+ <optional>
+ <element name="type">
+ <ref name="CT_MailMergeOdsoFMDFieldType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="name">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mappedName">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="column">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lid">
+ <ref name="CT_Lang"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dynamicAddress">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_MailMergeSourceType">
+ <list>
+ <xs:documentation>Mail Merge ODSO Data Source Types</xs:documentation>
+ <choice>
+ <!-- Database Data Source -->
+ <value>database</value>
+ <!-- Address Book Data Source -->
+ <value>addressBook</value>
+ <!-- Alternate Document Format Data Source -->
+ <value>document1</value>
+ <!-- Alternate Document Format Data Source Two -->
+ <value>document2</value>
+ <!-- Text File Data Source -->
+ <value>text</value>
+ <!-- E-Mail Program Data Source -->
+ <value>email</value>
+ <!-- Native Data Souce -->
+ <value>native</value>
+ <!-- Legacy Document Format Data Source -->
+ <value>legacy</value>
+ <!-- Aggregate Data Source -->
+ <value>master</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MailMergeSourceType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Data Source Type Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Odso">
+ <optional>
+ <element name="udl">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="table">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="src">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="colDelim">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="type">
+ <ref name="CT_MailMergeSourceType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="fHdr">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="fieldMapData">
+ <ref name="CT_OdsoFieldMapData"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="recipientData">
+ <ref name="CT_Rel"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_MailMerge">
+ <element name="mainDocumentType">
+ <ref name="CT_MailMergeDocType"/>
+ </element>
+ <optional>
+ <element name="linkToQuery">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <element name="dataType">
+ <ref name="CT_MailMergeDataType"/>
+ </element>
+ <optional>
+ <element name="connectString">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="query">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="dataSource">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="headerSource">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotSuppressBlankLines">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="destination">
+ <ref name="CT_MailMergeDest"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="addressFieldName">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mailSubject">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mailAsAttachment">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="viewMergedData">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="activeRecord">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="checkErrors">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="odso">
+ <ref name="CT_Odso"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_TargetScreenSz">
+ <list>
+ <xs:documentation>Target Screen Sizes for Generated Web Pages</xs:documentation>
+ <choice>
+ <!-- Optimize for 544x376 -->
+ <value>544x376</value>
+ <!-- Optimize for 640x480 -->
+ <value>640x480</value>
+ <!-- Optimize for 720x512 -->
+ <value>720x512</value>
+ <!-- Optimize for 800x600 -->
+ <value>800x600</value>
+ <!-- Optimize for 1024x768 -->
+ <value>1024x768</value>
+ <!-- Optimize for 1152x882 -->
+ <value>1152x882</value>
+ <!-- Optimize for 1152x900 -->
+ <value>1152x900</value>
+ <!-- Optimize for 1280x1024 -->
+ <value>1280x1024</value>
+ <!-- Optimize for 1600x1200 -->
+ <value>1600x1200</value>
+ <!-- Optimize for 1800x1440 -->
+ <value>1800x1440</value>
+ <!-- Optimize for 1920x1200 -->
+ <value>1920x1200</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_TargetScreenSz">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Target Screen Size Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Compat">
+ <optional>
+ <element name="useSingleBorderforContiguousCells">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wpJustification">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noTabHangInd">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noLeading">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="spaceForUL">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noColumnBalance">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="balanceSingleByteDoubleByteWidth">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noExtraLineSpacing">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotLeaveBackslashAlone">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ulTrailSpace">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotExpandShiftReturn">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="spacingInWholePoints">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lineWrapLikeWord6">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printBodyTextBeforeHeader">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printColBlack">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wpSpaceWidth">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="showBreaksInFrames">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="subFontBySize">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressBottomSpacing">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressTopSpacing">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressSpacingAtTopOfPage">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressTopSpacingWP">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suppressSpBfAfterPgBrk">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="swapBordersFacingPages">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="convMailMergeEsc">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="truncateFontHeightsLikeWP6">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mwSmallCaps">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="usePrinterMetrics">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotSuppressParagraphBorders">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="wrapTrailSpaces">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="footnoteLayoutLikeWW8">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shapeLayoutLikeWW8">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="alignTablesRowByRow">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="forgetLastTabAlignment">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="adjustLineHeightInTable">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoSpaceLikeWord95">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noSpaceRaiseLower">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotUseHTMLParagraphAutoSpacing">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="layoutRawTableWidth">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="layoutTableRowsApart">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useWord97LineBreakRules">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotBreakWrappedTables">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotSnapToGridInCell">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="selectFldWithFirstOrLastChar">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="applyBreakingRules">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotWrapTextWithPunct">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotUseEastAsianBreakRules">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useWord2002TableStyleRules">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="growAutofit">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useFELayout">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useNormalStyleForList">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotUseIndentAsNumberingTabStop">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useAltKinsokuLineBreakRules">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="allowSpaceOfSameStyleInTable">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotSuppressIndentation">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotAutofitConstrainedTables">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autofitToFirstFixedWidthCell">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="underlineTabInNumList">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="displayHangulFixedWidth">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="splitPgBreakAndParaMark">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotVertAlignCellWithSp">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotBreakConstrainedForcedTable">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotVertAlignInTxbx">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useAnsiKerningPairs">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cachedColBalance">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_DocVar">
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Document Variable Name</xs:documentation>
+ </attribute>
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Document Variable Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DocVars">
+ <zeroOrMore>
+ <element name="docVar">
+ <ref name="CT_DocVar"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_DocRsids">
+ <optional>
+ <element name="rsidRoot">
+ <ref name="CT_LongHexNumber"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="rsid">
+ <ref name="CT_LongHexNumber"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="ST_CharacterSpacing">
+ <list>
+ <xs:documentation>Character-Level Whitespace Compression Settings</xs:documentation>
+ <choice>
+ <!-- Do Not Compress Whitespace -->
+ <value>doNotCompress</value>
+ <!-- Compress Whitespace From Punctuation Characters -->
+ <value>compressPunctuation</value>
+ <!-- Compress Whitespace From Both Japanese Kana And Punctuation Characters -->
+ <value>compressPunctuationAndJapaneseKana</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_CharacterSpacing">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_SaveThroughXslt">
+ <optional>
+ <attribute name="r:id">
+ <ref name="ST_String"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="solutionID">
+ <text/>
+ <xs:documentation>Local Identifier for XSL Transform</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_RPrDefault">
+ <optional>
+ <element name="rPr">
+ <ref name="CT_RPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_PPrDefault">
+ <optional>
+ <element name="pPr">
+ <ref name="CT_PPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_DocDefaults">
+ <optional>
+ <element name="rPrDefault">
+ <ref name="CT_RPrDefault"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pPrDefault">
+ <ref name="CT_PPrDefault"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_ColorSchemeIndex">
+ <list>
+ <xs:documentation>Theme Color Reference</xs:documentation>
+ <choice>
+ <!-- Dark 1 Theme Color Reference -->
+ <value>dark1</value>
+ <!-- Light 1 Theme Color Reference -->
+ <value>light1</value>
+ <!-- Dark 2 Theme Color Reference -->
+ <value>dark2</value>
+ <!-- Light 2 Theme Color Reference -->
+ <value>light2</value>
+ <!-- Accent 1 Theme Color Reference -->
+ <value>accent1</value>
+ <!-- Accent 2 Theme Color Reference -->
+ <value>accent2</value>
+ <!-- Accent 3 Theme Color Reference -->
+ <value>accent3</value>
+ <!-- Accent4 Theme Color Reference -->
+ <value>accent4</value>
+ <!-- Accent5 Theme Color Reference -->
+ <value>accent5</value>
+ <!-- Accent 6 Theme Color Reference -->
+ <value>accent6</value>
+ <!-- Hyperlink Theme Color Reference -->
+ <value>hyperlink</value>
+ <!-- Followed Hyperlink Theme Color Reference -->
+ <value>followedHyperlink</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_ColorSchemeMapping">
+ <attribute name="bg1">
+ <text/>
+ <xs:documentation>Background 1 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="t1">
+ <text/>
+ <xs:documentation>Text 1 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="bg2">
+ <text/>
+ <xs:documentation>Background 2 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="t2">
+ <text/>
+ <xs:documentation>Text 2 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent1">
+ <text/>
+ <xs:documentation>Accent 1 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent2">
+ <text/>
+ <xs:documentation>Accent 2 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent3">
+ <text/>
+ <xs:documentation>Accent3 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent4">
+ <text/>
+ <xs:documentation>Accent4 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent5">
+ <text/>
+ <xs:documentation>Accent5 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="accent6">
+ <text/>
+ <xs:documentation>Accent6 Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="hyperlink">
+ <text/>
+ <xs:documentation>Hyperlink Theme Color Mapping</xs:documentation>
+ </attribute>
+ <attribute name="followedHyperlink">
+ <text/>
+ <xs:documentation>Followed Hyperlink Theme Color Mapping</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_ReadingModeInkLockDown">
+ <attribute name="actualPg">
+ <text/>
+ <xs:documentation>Use Actual Pages, Not Virtual Pages</xs:documentation>
+ </attribute>
+ <attribute name="w">
+ <text/>
+ <xs:documentation>Virtual Page Width</xs:documentation>
+ </attribute>
+ <attribute name="h">
+ <text/>
+ <xs:documentation>Virtual Page Height</xs:documentation>
+ </attribute>
+ <attribute name="fontSz">
+ <text/>
+ <xs:documentation>Font Size Scaling</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_WriteProtection">
+ <optional>
+ <attribute name="recommended">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Recommend Write Protection in User Interface</xs:documentation>
+ </attribute>
+ </optional>
+ <ref name="AG_Password"/>
+ </define>
+ <define name="CT_Settings">
+ <optional>
+ <element name="writeProtection">
+ <ref name="CT_WriteProtection"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="view">
+ <ref name="CT_View"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="zoom">
+ <ref name="CT_Zoom"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="removePersonalInformation">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="removeDateAndTime">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotDisplayPageBoundaries">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="displayBackgroundShape">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printPostScriptOverText">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printFractionalCharacterWidth">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printFormsData">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedTrueTypeFonts">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedSystemFonts">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveSubsetFonts">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveFormsData">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mirrorMargins">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="alignBordersAndEdges">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bordersDoNotSurroundHeader">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bordersDoNotSurroundFooter">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="gutterAtTop">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hideSpellingErrors">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hideGrammaticalErrors">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="activeWritingStyle">
+ <ref name="CT_WritingStyle"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="proofState">
+ <ref name="CT_Proof"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="formsDesign">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="attachedTemplate">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="linkStyles">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="stylePaneFormatFilter">
+ <ref name="CT_ShortHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="stylePaneSortMethod">
+ <ref name="CT_ShortHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="documentType">
+ <ref name="CT_DocType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mailMerge">
+ <ref name="CT_MailMerge"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="revisionView">
+ <ref name="CT_TrackChangesView"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trackRevisions">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotTrackMoves">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotTrackFormatting">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="documentProtection">
+ <ref name="CT_DocProtect"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoFormatOverride">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="styleLockTheme">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="styleLockQFSet">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="defaultTabStop">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoHyphenation">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="consecutiveHyphenLimit">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hyphenationZone">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotHyphenateCaps">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="showEnvelope">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="summaryLength">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="clickAndTypeStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="defaultTableStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="evenAndOddHeaders">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bookFoldRevPrinting">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bookFoldPrinting">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bookFoldPrintingSheets">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="drawingGridHorizontalSpacing">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="drawingGridVerticalSpacing">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="displayHorizontalDrawingGridEvery">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="displayVerticalDrawingGridEvery">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotUseMarginsForDrawingGridOrigin">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="drawingGridHorizontalOrigin">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="drawingGridVerticalOrigin">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotShadeFormData">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noPunctuationKerning">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="characterSpacingControl">
+ <ref name="CT_CharacterSpacing"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="printTwoOnOne">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="strictFirstAndLastChars">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noLineBreaksAfter">
+ <ref name="CT_Kinsoku"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noLineBreaksBefore">
+ <ref name="CT_Kinsoku"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="savePreviewPicture">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotValidateAgainstSchema">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveInvalidXml">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ignoreMixedContent">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="alwaysShowPlaceholderText">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotDemarcateInvalidXml">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveXmlDataOnly">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="useXSLTWhenSaving">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveThroughXslt">
+ <ref name="CT_SaveThroughXslt"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="showXMLTags">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="alwaysMergeEmptyNamespace">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="updateFields">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hdrShapeDefaults">
+ <ref name="CT_ShapeDefaults"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="footnotePr">
+ <ref name="CT_FtnDocProps"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="endnotePr">
+ <ref name="CT_EdnDocProps"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="compat">
+ <ref name="CT_Compat"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="docVars">
+ <ref name="CT_DocVars"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rsids">
+ <ref name="CT_DocRsids"/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="mathPr"/>
+ </optional>
+ <optional>
+ <element name="uiCompat97To2003">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="attachedSchema">
+ <ref name="CT_String"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="themeFontLang">
+ <ref name="CT_Language"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="clrSchemeMapping">
+ <ref name="CT_ColorSchemeMapping"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotIncludeSubdocsInStats">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotAutoCompressPictures">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="forceUpgrade">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="captions">
+ <ref name="CT_Captions"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="readModeInkLockDown">
+ <ref name="CT_ReadingModeInkLockDown"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="smartTagType">
+ <ref name="CT_SmartTagType"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <ref name="schemaLibrary"/>
+ </optional>
+ <optional>
+ <element name="shapeDefaults">
+ <ref name="CT_ShapeDefaults"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotEmbedSmartTags">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="decimalSymbol">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="listSeparator">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_WebSettings">
+ <optional>
+ <element name="frameset">
+ <ref name="CT_Frameset"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="divs">
+ <ref name="CT_Divs"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="encoding">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="optimizeForBrowser">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="relyOnVML">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="allowPNG">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotRelyOnCSS">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotSaveAsSingleFile">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotOrganizeInFolder">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="doNotUseLongFileNames">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pixelsPerInch">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="targetScreenSz">
+ <ref name="CT_TargetScreenSz"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="saveSmartTagsAsXml">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_FrameScrollbar">
+ <list>
+ <xs:documentation>Frame Scrollbar Visibility</xs:documentation>
+ <choice>
+ <!-- Always Show Scrollbar -->
+ <value>on</value>
+ <!-- Never Show Scrollbar -->
+ <value>off</value>
+ <!-- Automatically Show Scrollbar As Needed -->
+ <value>auto</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FrameScrollbar">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Scrollbar Display Option Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Frame">
+ <optional>
+ <element name="sz">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="name">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sourceFileName">
+ <ref name="CT_Rel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="marW">
+ <ref name="CT_PixelsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="marH">
+ <ref name="CT_PixelsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="scrollbar">
+ <ref name="CT_FrameScrollbar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noResizeAllowed">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="linkedToFile">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_FrameLayout">
+ <list>
+ <xs:documentation>Frameset Layout Order</xs:documentation>
+ <choice>
+ <!-- Stack Frames Vertically -->
+ <value>rows</value>
+ <!-- Stack Frames Horizontally -->
+ <value>cols</value>
+ <!-- Do Not Stack Frames -->
+ <value>none</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FrameLayout">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Frameset Layout Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FramesetSplitbar">
+ <optional>
+ <element name="w">
+ <ref name="CT_TwipsMeasure"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="color">
+ <ref name="CT_Color"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="noBorder">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="flatBorders">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Frameset">
+ <optional>
+ <element name="sz">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="framesetSplitbar">
+ <ref name="CT_FramesetSplitbar"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="frameLayout">
+ <ref name="CT_FrameLayout"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <zeroOrMore>
+ <element name="frameset">
+ <ref name="CT_Frameset"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="frame">
+ <ref name="CT_Frame"/>
+ </element>
+ </zeroOrMore>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="CT_NumPicBullet">
+ <element name="pict">
+ <ref name="CT_Picture"/>
+ </element>
+ <attribute name="numPicBulletId">
+ <text/>
+ <xs:documentation>Picture Numbering Symbol ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_LevelSuffix">
+ <list>
+ <xs:documentation>Content Between Numbering Symbol and Paragraph Text</xs:documentation>
+ <choice>
+ <!-- Tab Between Numbering and Text -->
+ <value>tab</value>
+ <!-- Space Between Numbering and Text -->
+ <value>space</value>
+ <!-- Nothing Between Numbering and Text -->
+ <value>nothing</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_LevelSuffix">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Character Type Between Numbering and Text</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_LevelText">
+ <optional>
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Level Text</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="null">
+ <text/>
+ <xs:documentation>Level Text Is Null Character</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_LvlLegacy">
+ <optional>
+ <attribute name="legacy">
+ <text/>
+ <xs:documentation>Use Legacy Numbering Properties</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="legacySpace">
+ <text/>
+ <xs:documentation>Legacy Spacing</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="legacyIndent">
+ <text/>
+ <xs:documentation>Legacy Indent</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_Lvl">
+ <group>
+ <optional>
+ <element name="start">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numFmt">
+ <ref name="CT_NumFmt"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lvlRestart">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pStyle">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="isLgl">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="suff">
+ <ref name="CT_LevelSuffix"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lvlText">
+ <ref name="CT_LevelText"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lvlPicBulletId">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="legacy">
+ <ref name="CT_LvlLegacy"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lvlJc">
+ <ref name="CT_Jc"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pPr">
+ <ref name="CT_PPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rPr">
+ <ref name="CT_RPr"/>
+ </element>
+ </optional>
+ </group>
+ <attribute name="ilvl">
+ <text/>
+ <xs:documentation>Numbering Level</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="tplc">
+ <text/>
+ <xs:documentation>Template Code</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tentative">
+ <text/>
+ <xs:documentation>Tentative Numbering</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_MultiLevelType">
+ <list>
+ <xs:documentation>Numbering Definition Type</xs:documentation>
+ <choice>
+ <!-- Single Level Numbering Definition -->
+ <value>singleLevel</value>
+ <!-- Multilevel Numbering Definition -->
+ <value>multilevel</value>
+ <!-- Hybrid Multilevel Numbering Definition -->
+ <value>hybridMultilevel</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_MultiLevelType">
+ <attribute name="val">
+ <ref name="ST_MultiLevelType"/>
+ <xs:documentation>Abstract Numbering Definition Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_AbstractNum">
+ <group>
+ <optional>
+ <element name="nsid">
+ <ref name="CT_LongHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="multiLevelType">
+ <ref name="CT_MultiLevelType"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tmpl">
+ <ref name="CT_LongHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="name">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="styleLink">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="numStyleLink">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="lvl">
+ <ref name="CT_Lvl"/>
+ </element>
+ </zeroOrMore>
+ </group>
+ <attribute name="abstractNumId">
+ <text/>
+ <xs:documentation>Abstract Numbering Definition ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_NumLvl">
+ <group>
+ <optional>
+ <element name="startOverride">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="lvl">
+ <ref name="CT_Lvl"/>
+ </element>
+ </optional>
+ </group>
+ <attribute name="ilvl">
+ <text/>
+ <xs:documentation>Numbering Level ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Num">
+ <group>
+ <element name="abstractNumId">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ <zeroOrMore>
+ <element name="lvlOverride">
+ <ref name="CT_NumLvl"/>
+ </element>
+ </zeroOrMore>
+ </group>
+ <attribute name="numId">
+ <text/>
+ <xs:documentation>Numbering Definition Instance ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Numbering">
+ <zeroOrMore>
+ <element name="numPicBullet">
+ <ref name="CT_NumPicBullet"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="abstractNum">
+ <ref name="CT_AbstractNum"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="num">
+ <ref name="CT_Num"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="numIdMacAtCleanup">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ </define>
+ <define name="ST_TblStyleOverrideType">
+ <list>
+ <xs:documentation>Conditional Table Style Formatting Types</xs:documentation>
+ <choice>
+ <!-- Whole table formatting -->
+ <value>wholeTable</value>
+ <!-- First Row Conditional Formatting -->
+ <value>firstRow</value>
+ <!-- Last table row formatting -->
+ <value>lastRow</value>
+ <!-- First Column Conditional Formatting -->
+ <value>firstCol</value>
+ <!-- Last table column formatting -->
+ <value>lastCol</value>
+ <!-- Banded Column Conditional Formatting -->
+ <value>band1Vert</value>
+ <!-- Even Column Stripe Conditional Formatting -->
+ <value>band2Vert</value>
+ <!-- Banded Row Conditional Formatting -->
+ <value>band1Horz</value>
+ <!-- Even Row Stripe Conditional Formatting -->
+ <value>band2Horz</value>
+ <!-- Top right table cell formatting -->
+ <value>neCell</value>
+ <!-- Top left table cell formatting -->
+ <value>nwCell</value>
+ <!-- Bottom right table cell formatting -->
+ <value>seCell</value>
+ <!-- Bottom left table cell formatting -->
+ <value>swCell</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Style_tblStylePr">
+ <group>
+ <optional>
+ <element name="pPr">
+ <ref name="CT_PPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rPr">
+ <ref name="EG_RPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblPr">
+ <ref name="CT_TblPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trPr">
+ <ref name="CT_TrPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcPr">
+ <ref name="CT_TcPrBase"/>
+ </element>
+ </optional>
+ </group>
+ <attribute name="type">
+ <ref name="ST_TblStyleOverrideType"/>
+ <xs:documentation>Table Style Conditional Formatting Type</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Style_TblPr">
+ <ref name="CT_TblPrBase"/>
+ </define>
+ <define name="CT_Style_TrPr">
+ <ref name="CT_TrPrBase"/>
+ </define>
+ <define name="CT_Style_TcPr">
+ <ref name="CT_TcPrBase"/>
+ </define>
+ <define name="ST_StyleType">
+ <list>
+ <xs:documentation>Style Types</xs:documentation>
+ <choice>
+ <!-- Paragraph Style -->
+ <value>paragraph</value>
+ <!-- Character Style -->
+ <value>character</value>
+ <!-- Table Style -->
+ <value>table</value>
+ <!-- Numbering Style -->
+ <value>numbering</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Style">
+ <group>
+ <optional>
+ <element name="name">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="aliases">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="basedOn">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="next">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="link">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="autoRedefine">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hidden">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="uiPriority">
+ <ref name="CT_DecimalNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="semiHidden">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="unhideWhenUsed">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="qFormat">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="locked">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="personal">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="personalCompose">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="personalReply">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rsid">
+ <ref name="CT_LongHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pPr">
+ <ref name="CT_PPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rPr">
+ <ref name="EG_RPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tblPr">
+ <ref name="CT_TblPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="trPr">
+ <ref name="CT_TrPrBase"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="tcPr">
+ <ref name="CT_TcPrBase"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="tblStylePr">
+ <ref name="CT_Style_tblStylePr"/>
+ </element>
+ </zeroOrMore>
+ </group>
+ <optional>
+ <attribute name="type">
+ <ref name="ST_StyleType"/>
+ <xs:documentation>Style Type</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="styleId">
+ <ref name="ST_String"/>
+ <xs:documentation>Style ID</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="default">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Default Style</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="customStyle">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>User-Defined Style</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_LsdException">
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Primary Style Name</xs:documentation>
+ </attribute>
+ <attribute name="locked">
+ <text/>
+ <xs:documentation>Latent Style Locking Setting</xs:documentation>
+ </attribute>
+ <attribute name="uiPriority">
+ <text/>
+ <xs:documentation>Override default sorting order</xs:documentation>
+ </attribute>
+ <attribute name="semiHidden">
+ <text/>
+ <xs:documentation>Semi hidden text override</xs:documentation>
+ </attribute>
+ <attribute name="unhideWhenUsed">
+ <text/>
+ <xs:documentation>Unhide when used</xs:documentation>
+ </attribute>
+ <attribute name="qFormat">
+ <text/>
+ <xs:documentation>Latent Style Primary Style Setting</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_LatentStyles">
+ <zeroOrMore>
+ <element name="lsdException">
+ <ref name="CT_LsdException"/>
+ </element>
+ </zeroOrMore>
+ <attribute name="defLockedState">
+ <text/>
+ <xs:documentation>Default Style Locking Setting</xs:documentation>
+ </attribute>
+ <attribute name="defUIPriority">
+ <text/>
+ <xs:documentation>Default User Interface Priority Setting</xs:documentation>
+ </attribute>
+ <attribute name="defSemiHidden">
+ <text/>
+ <xs:documentation>Default Semi-Hidden Setting</xs:documentation>
+ </attribute>
+ <attribute name="defUnhideWhenUsed">
+ <text/>
+ <xs:documentation>Default Hidden Until Used Setting</xs:documentation>
+ </attribute>
+ <attribute name="defQFormat">
+ <text/>
+ <xs:documentation>Default Primary Style Setting</xs:documentation>
+ </attribute>
+ <attribute name="count">
+ <text/>
+ <xs:documentation>Latent Style Count</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Styles">
+ <optional>
+ <element name="docDefaults">
+ <ref name="CT_DocDefaults"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="latentStyles">
+ <ref name="CT_LatentStyles"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="style">
+ <ref name="CT_Style"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="ST_Panose">
+ <data type="hexBinary">
+ <xs:documentation>Panose-1 Number</xs:documentation>
+ <param name="length">10</param>
+ </data>
+ </define>
+ <define name="CT_Panose">
+ <attribute name="val">
+ <ref name="ST_Panose"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_FontFamily">
+ <list>
+ <xs:documentation>Font Family Value</xs:documentation>
+ <choice>
+ <!-- Novelty Font -->
+ <value>decorative</value>
+ <!-- Monospace Font -->
+ <value>modern</value>
+ <!-- Proportional Font With Serifs -->
+ <value>roman</value>
+ <!-- Script Font -->
+ <value>script</value>
+ <!-- Proportional Font Without Serifs -->
+ <value>swiss</value>
+ <!-- No Font Family -->
+ <value>auto</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_FontFamily">
+ <attribute name="val">
+ <ref name="ST_FontFamily"/>
+ <xs:documentation>Font Family Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_Pitch">
+ <list>
+ <xs:documentation>Font Pitch Value</xs:documentation>
+ <choice>
+ <!-- Fixed Width -->
+ <value>fixed</value>
+ <!-- Proportional Width -->
+ <value>variable</value>
+ <!-- Default -->
+ <value>default</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Pitch">
+ <attribute name="val">
+ <ref name="ST_Pitch"/>
+ <xs:documentation>Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FontSig">
+ <attribute name="usb0">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>First 32 Bits of Unicode Subset Bitfield</xs:documentation>
+ </attribute>
+ <attribute name="usb1">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Second 32 Bits of Unicode Subset Bitfield</xs:documentation>
+ </attribute>
+ <attribute name="usb2">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Third 32 Bits of Unicode Subset Bitfield</xs:documentation>
+ </attribute>
+ <attribute name="usb3">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Fourth 32 Bits of Unicode Subset Bitfield</xs:documentation>
+ </attribute>
+ <attribute name="csb0">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Lower 32 Bits of Code Page Bit Field</xs:documentation>
+ </attribute>
+ <attribute name="csb1">
+ <ref name="ST_UcharHexNumber"/>
+ <xs:documentation>Upper 32 Bits of Code Page Bit Field</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FontRel">
+ <ref name="CT_Rel"/>
+ <attribute name="fontKey">
+ <text/>
+ <xs:documentation>Embedded Font Obfuscation Key</xs:documentation>
+ </attribute>
+ <attribute name="subsetted">
+ <text/>
+ <xs:documentation>Embedded Font Is Subsetted</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Font">
+ <group>
+ <optional>
+ <element name="altName">
+ <ref name="CT_String"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="panose1">
+ <ref name="CT_Panose"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="charset">
+ <ref name="CT_UcharHexNumber"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="family">
+ <ref name="CT_FontFamily"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="notTrueType">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="pitch">
+ <ref name="CT_Pitch"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sig">
+ <ref name="CT_FontSig"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedRegular">
+ <ref name="CT_FontRel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedBold">
+ <ref name="CT_FontRel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedItalic">
+ <ref name="CT_FontRel"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="embedBoldItalic">
+ <ref name="CT_FontRel"/>
+ </element>
+ </optional>
+ </group>
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Primary Font Name</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_FontsList">
+ <zeroOrMore>
+ <element name="font">
+ <ref name="CT_Font"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="CT_DivBdr">
+ <optional>
+ <element name="top">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="left">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bottom">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="right">
+ <ref name="CT_Border"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Div">
+ <group>
+ <optional>
+ <element name="blockQuote">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bodyDiv">
+ <ref name="CT_OnOff"/>
+ </element>
+ </optional>
+ <element name="marLeft">
+ <ref name="CT_SignedTwipsMeasure"/>
+ </element>
+ <element name="marRight">
+ <ref name="CT_SignedTwipsMeasure"/>
+ </element>
+ <element name="marTop">
+ <ref name="CT_SignedTwipsMeasure"/>
+ </element>
+ <element name="marBottom">
+ <ref name="CT_SignedTwipsMeasure"/>
+ </element>
+ <optional>
+ <element name="divBdr">
+ <ref name="CT_DivBdr"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="divsChild">
+ <ref name="CT_Divs"/>
+ </element>
+ </zeroOrMore>
+ </group>
+ <attribute name="id">
+ <text/>
+ <xs:documentation>div Data ID</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_Divs">
+ <oneOrMore>
+ <element name="div">
+ <ref name="CT_Div"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_TxbxContent">
+ <oneOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </oneOrMore>
+ </define>
+ <define name="txbxContent">
+ <element name="txbxContent">
+ <ref name="CT_TxbxContent"/>
+ </element>
+ </define>
+ <define name="EG_MathContent">
+ <choice>
+ <ref name="oMathPara"/>
+ <ref name="oMath"/>
+ </choice>
+ </define>
+ <define name="EG_BlockLevelChunkElts">
+ <zeroOrMore>
+ <ref name="EG_ContentBlockContent"/>
+ </zeroOrMore>
+ </define>
+ <define name="EG_BlockLevelElts">
+ <choice>
+ <zeroOrMore>
+ <ref name="EG_BlockLevelChunkElts"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="altChunk">
+ <ref name="CT_AltChunk"/>
+ </element>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="EG_RunLevelElts">
+ <choice>
+ <optional>
+ <element name="proofErr">
+ <ref name="CT_ProofErr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="permStart">
+ <ref name="CT_PermStart"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="permEnd">
+ <ref name="CT_Perm"/>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <ref name="EG_RangeMarkupElements"/>
+ </zeroOrMore>
+ <optional>
+ <element name="ins">
+ <ref name="CT_RunTrackChange"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="del">
+ <ref name="CT_RunTrackChange"/>
+ </element>
+ </optional>
+ <element name="moveFrom">
+ <ref name="CT_RunTrackChange"/>
+ </element>
+ <element name="moveTo">
+ <ref name="CT_RunTrackChange"/>
+ </element>
+ <zeroOrMore>
+ <ref name="EG_MathContent"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="CT_Body">
+ <zeroOrMore>
+ <ref name="EG_BlockLevelElts"/>
+ </zeroOrMore>
+ <optional>
+ <element name="sectPr">
+ <ref name="CT_SectPr"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_ShapeDefaults">
+ <oneOrMore>
+ <zeroOrMore>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </zeroOrMore>
+ </oneOrMore>
+ </define>
+ <define name="CT_Comments">
+ <zeroOrMore>
+ <element name="comment">
+ <ref name="CT_Comment"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="comments">
+ <element name="comments">
+ <ref name="CT_Comments"/>
+ </element>
+ </define>
+ <define name="CT_Footnotes">
+ <zeroOrMore>
+ <element name="footnote">
+ <ref name="CT_FtnEdn"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="footnotes">
+ <element name="footnotes">
+ <ref name="CT_Footnotes"/>
+ </element>
+ </define>
+ <define name="CT_Endnotes">
+ <zeroOrMore>
+ <element name="endnote">
+ <ref name="CT_FtnEdn"/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="endnotes">
+ <element name="endnotes">
+ <ref name="CT_Endnotes"/>
+ </element>
+ </define>
+ <define name="hdr">
+ <element name="hdr">
+ <ref name="CT_HdrFtr"/>
+ </element>
+ </define>
+ <define name="ftr">
+ <element name="ftr">
+ <ref name="CT_HdrFtr"/>
+ </element>
+ </define>
+ <define name="CT_SmartTagType">
+ <attribute name="namespaceuri">
+ <text/>
+ <xs:documentation>Smart Tag Namespace</xs:documentation>
+ </attribute>
+ <attribute name="name">
+ <text/>
+ <xs:documentation>Smart Tag Name</xs:documentation>
+ </attribute>
+ <attribute name="url">
+ <text/>
+ <xs:documentation>Smart Tag Supplementary URL</xs:documentation>
+ </attribute>
+ </define>
+ <define name="ST_ThemeColor">
+ <list>
+ <xs:documentation>Theme Color</xs:documentation>
+ <choice>
+ <!-- Dark 1 Theme Color -->
+ <value>dark1</value>
+ <!-- Light 1 Theme Color -->
+ <value>light1</value>
+ <!-- Dark 2 Theme Color -->
+ <value>dark2</value>
+ <!-- Light 2 Theme Color -->
+ <value>light2</value>
+ <!-- Accent 1 Theme Color -->
+ <value>accent1</value>
+ <!-- Accent 2 Theme Color -->
+ <value>accent2</value>
+ <!-- Accent 3 Theme Color -->
+ <value>accent3</value>
+ <!-- Accent 4 Theme Color -->
+ <value>accent4</value>
+ <!-- Accent 5 Theme Color -->
+ <value>accent5</value>
+ <!-- Accent 6 Theme Color -->
+ <value>accent6</value>
+ <!-- Hyperlink Theme Color -->
+ <value>hyperlink</value>
+ <!-- Followed Hyperlink Theme Color -->
+ <value>followedHyperlink</value>
+ <!-- No Theme Color -->
+ <value>none</value>
+ <!-- Background 1 Theme Color -->
+ <value>background1</value>
+ <!-- Text 1 Theme Color -->
+ <value>text1</value>
+ <!-- Background 2 Theme Color -->
+ <value>background2</value>
+ <!-- Text 2 Theme Color -->
+ <value>text2</value>
+ </choice>
+ </list>
+ </define>
+ <define name="ST_DocPartBehavior">
+ <list>
+ <xs:documentation>Insertion Behavior Types</xs:documentation>
+ <choice>
+ <!-- Insert Content At Specified Location -->
+ <value>content</value>
+ <!-- Ensure Entry Is In New Paragraph -->
+ <value>p</value>
+ <!-- Ensure Entry Is On New Page -->
+ <value>pg</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_DocPartBehavior">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Insertion Behavior Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DocPartBehaviors">
+ <oneOrMore>
+ <element name="behavior">
+ <ref name="CT_DocPartBehavior"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="ST_DocPartType">
+ <list>
+ <xs:documentation>Entry Types</xs:documentation>
+ <choice>
+ <!-- No Type -->
+ <value>none</value>
+ <!-- Normal -->
+ <value>normal</value>
+ <!-- Automatically Replace Name With Content -->
+ <value>autoExp</value>
+ <!-- AutoText User Interface Entry -->
+ <value>toolbar</value>
+ <!-- AutoCorrect Entry -->
+ <value>speller</value>
+ <!-- Form Field Help Text -->
+ <value>formFld</value>
+ <!-- Structured Document Tag Placeholder Text -->
+ <value>bbPlcHdr</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_DocPartType">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Type Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DocPartTypes">
+ <oneOrMore>
+ <element name="type">
+ <ref name="CT_DocPartType"/>
+ </element>
+ </oneOrMore>
+ <optional>
+ <attribute name="all">
+ <text/>
+ <xs:documentation>Entry Is Of All Types</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ST_DocPartGallery">
+ <list>
+ <xs:documentation>Entry Gallery Types</xs:documentation>
+ <choice>
+ <!-- Structured Document Tag Placeholder Text Gallery -->
+ <value>placeholder</value>
+ <!-- All Galleries -->
+ <value>any</value>
+ <!-- No Gallery Classification -->
+ <value>default</value>
+ <!-- Document Parts Gallery -->
+ <value>docParts</value>
+ <!-- Cover Page Gallery -->
+ <value>coverPg</value>
+ <!-- Equations Gallery -->
+ <value>eq</value>
+ <!-- Footers Gallery -->
+ <value>ftrs</value>
+ <!-- Headers Gallery -->
+ <value>hdrs</value>
+ <!-- Page Numbers Gallery -->
+ <value>pgNum</value>
+ <!-- Table Gallery -->
+ <value>tbls</value>
+ <!-- Watermark Gallery -->
+ <value>watermarks</value>
+ <!-- AutoText Gallery -->
+ <value>autoTxt</value>
+ <!-- Text Box Gallery -->
+ <value>txtBox</value>
+ <!-- Page Numbers At Top Gallery -->
+ <value>pgNumT</value>
+ <!-- Page Numbers At Bottom Gallery -->
+ <value>pgNumB</value>
+ <!-- Page Numbers At Margins Gallery -->
+ <value>pgNumMargins</value>
+ <!-- Table of Contents Gallery -->
+ <value>tblOfContents</value>
+ <!-- Bibliography Gallery -->
+ <value>bib</value>
+ <!-- Custom Quick Parts Gallery -->
+ <value>custQuickParts</value>
+ <!-- Custom Cover Page Gallery -->
+ <value>custCoverPg</value>
+ <!-- Custom Equation Gallery -->
+ <value>custEq</value>
+ <!-- Custom Footer Gallery -->
+ <value>custFtrs</value>
+ <!-- Custom Header Gallery -->
+ <value>custHdrs</value>
+ <!-- Custom Page Number Gallery -->
+ <value>custPgNum</value>
+ <!-- Custom Table Gallery -->
+ <value>custTbls</value>
+ <!-- Custom Watermark Gallery -->
+ <value>custWatermarks</value>
+ <!-- Custom AutoText Gallery -->
+ <value>custAutoTxt</value>
+ <!-- Custom Text Box Gallery -->
+ <value>custTxtBox</value>
+ <!-- Custom Page Number At Top Gallery -->
+ <value>custPgNumT</value>
+ <!-- Custom Page Number At Bottom Gallery -->
+ <value>custPgNumB</value>
+ <!-- Custom Page Number At Margins Gallery -->
+ <value>custPgNumMargins</value>
+ <!-- Custom Table of Contents Gallery -->
+ <value>custTblOfContents</value>
+ <!-- Custom Bibliography Gallery -->
+ <value>custBib</value>
+ <!-- Custom 1 Gallery -->
+ <value>custom1</value>
+ <!-- Custom 2 Gallery -->
+ <value>custom2</value>
+ <!-- Custom 3 Gallery -->
+ <value>custom3</value>
+ <!-- Custom 4 Gallery -->
+ <value>custom4</value>
+ <!-- Custom 5 Gallery -->
+ <value>custom5</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_DocPartGallery">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Gallery Value</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_DocPartCategory">
+ <element name="name">
+ <ref name="CT_String"/>
+ </element>
+ <element name="gallery">
+ <ref name="CT_DocPartGallery"/>
+ </element>
+ </define>
+ <define name="CT_DocPartName">
+ <attribute name="val">
+ <text/>
+ <xs:documentation>Name Value</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="decorated">
+ <text/>
+ <xs:documentation>Built-In Entry</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_DocPartPr">
+ <oneOrMore>
+ <choice>
+ <element name="name">
+ <ref name="CT_DocPartName"/>
+ </element>
+ <element name="style">
+ <ref name="CT_String"/>
+ </element>
+ <element name="category">
+ <ref name="CT_DocPartCategory"/>
+ </element>
+ <element name="types">
+ <ref name="CT_DocPartTypes"/>
+ </element>
+ <element name="behaviors">
+ <ref name="CT_DocPartBehaviors"/>
+ </element>
+ <element name="description">
+ <ref name="CT_String"/>
+ </element>
+ <element name="guid">
+ <ref name="CT_Guid"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="CT_DocPart">
+ <optional>
+ <element name="docPartPr">
+ <ref name="CT_DocPartPr"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="docPartBody">
+ <ref name="CT_Body"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_DocParts">
+ <oneOrMore>
+ <element name="docPart">
+ <ref name="CT_DocPart"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="settings">
+ <element name="settings">
+ <ref name="CT_Settings"/>
+ </element>
+ </define>
+ <define name="webSettings">
+ <element name="webSettings">
+ <ref name="CT_WebSettings"/>
+ </element>
+ </define>
+ <define name="fonts">
+ <element name="fonts">
+ <ref name="CT_FontsList"/>
+ </element>
+ </define>
+ <define name="numbering">
+ <element name="numbering">
+ <ref name="CT_Numbering"/>
+ </element>
+ </define>
+ <define name="styles">
+ <element name="styles">
+ <ref name="CT_Styles"/>
+ </element>
+ </define>
+ <define name="ST_CaptionPos">
+ <list>
+ <xs:documentation>Automatic Caption Positioning Values</xs:documentation>
+ <choice>
+ <!-- Position Caption Above Object -->
+ <value>above</value>
+ <!-- Position Caption Below Object -->
+ <value>below</value>
+ <!-- Position Caption Left Of Object -->
+ <value>left</value>
+ <!-- Position Caption Right Of Object -->
+ <value>right</value>
+ </choice>
+ </list>
+ </define>
+ <define name="CT_Caption">
+ <attribute name="name">
+ <ref name="ST_String"/>
+ <xs:documentation>Caption Type Name</xs:documentation>
+ </attribute>
+ <optional>
+ <attribute name="pos">
+ <ref name="ST_CaptionPos"/>
+ <xs:documentation>Automatic Caption Placement</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="chapNum">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Include Chapter Number in Field for Caption</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="heading">
+ <ref name="ST_DecimalNumber"/>
+ <xs:documentation>Style for Chapter Headings</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="noLabel">
+ <ref name="ST_OnOff"/>
+ <xs:documentation>Do Not Include Name In Caption</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="numFmt">
+ <ref name="ST_NumberFormat"/>
+ <xs:documentation>Caption Numbering Format</xs:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="sep">
+ <ref name="ST_ChapterSep"/>
+ <xs:documentation>Chapter Number/Item Index Separator</xs:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_AutoCaption">
+ <attribute name="name">
+ <ref name="ST_String"/>
+ <xs:documentation>Identifier of Object to be Automatically Captioned</xs:documentation>
+ </attribute>
+ <attribute name="caption">
+ <ref name="ST_String"/>
+ <xs:documentation>Caption Used for Automatic Captioning</xs:documentation>
+ </attribute>
+ </define>
+ <define name="CT_AutoCaptions">
+ <oneOrMore>
+ <element name="autoCaption">
+ <ref name="CT_AutoCaption"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_Captions">
+ <oneOrMore>
+ <element name="caption">
+ <ref name="CT_Caption"/>
+ </element>
+ </oneOrMore>
+ <optional>
+ <element name="autoCaptions">
+ <ref name="CT_AutoCaptions"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_DocumentBase">
+ <optional>
+ <element name="background">
+ <ref name="CT_Background"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_Document">
+ <ref name="CT_DocumentBase"/>
+ <optional>
+ <element name="body">
+ <ref name="CT_Body"/>
+ </element>
+ </optional>
+ </define>
+ <define name="CT_GlossaryDocument">
+ <ref name="CT_DocumentBase"/>
+ <optional>
+ <element name="docParts">
+ <ref name="CT_DocParts"/>
+ </element>
+ </optional>
+ </define>
+ <define name="document">
+ <element name="document">
+ <ref name="CT_Document"/>
+ </element>
+ </define>
+ <define name="glossaryDocument">
+ <element name="glossaryDocument">
+ <ref name="CT_GlossaryDocument"/>
+ </element>
+ </define>
+ <define name="BUILT_IN_ANY_TYPE">
+ <zeroOrMore>
+ <choice>
+ <element>
+ <anyName/>
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ </grammar>
+ <resource name="CT_Empty" resource="Stream">
+ <action name="end" tokenid="ooxml:EG_RunInnerContent_noBreakHyphen" action="noBreakHyphen"/>
+ <action name="end" tokenid="ooxml:EG_RunInnerContent_softHyphen" action="softHyphen"/>
+ <action name="end" tokenid="ooxml:EG_RunInnerContent_cr" action="cr"/>
+ </resource>
+ <resource name="ST_OnOff" resource="Boolean"/>
+ <resource name="CT_OnOff" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_OnOff_val" action="setValue"/>
+ <action name="start" action="setDefaultBooleanValue"/>
+ </resource>
+ <resource name="ST_LongHexNumber" resource="Hex"/>
+ <resource name="CT_LongHexNumber" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_LongHexNumber_val" action="setValue"/>
+ <action name="start" action="setDefaultHexValue"/>
+ </resource>
+ <resource name="ST_ShortHexNumber" resource="Hex"/>
+ <resource name="CT_ShortHexNumber" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_ShortHexNumber_val" action="setValue"/>
+ <action name="start" action="setDefaultHexValue"/>
+ </resource>
+ <resource name="ST_UcharHexNumber" resource="Hex"/>
+ <resource name="CT_UcharHexNumber" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_UcharHexNumber_val" action="setValue"/>
+ <action name="start" action="setDefaultHexValue"/>
+ </resource>
+ <resource name="ST_DecimalNumber" resource="Integer"/>
+ <resource name="CT_DecimalNumber" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_DecimalNumber_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_UnsignedDecimalNumber" resource="Integer" generated="yes"/>
+ <resource name="ST_TwipsMeasure" resource="Integer"/>
+ <resource name="CT_TwipsMeasure" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_TwipsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_SignedTwipsMeasure" resource="Integer"/>
+ <resource name="CT_SignedTwipsMeasure" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_SignedTwipsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_PixelsMeasure" resource="Integer" generated="yes"/>
+ <resource name="CT_PixelsMeasure" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_PixelsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_HpsMeasure" resource="Integer"/>
+ <resource name="CT_HpsMeasure" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_HpsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_SignedHpsMeasure" resource="Integer"/>
+ <resource name="CT_SignedHpsMeasure" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_SignedHpsMeasure_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_DateTime" resource="String" generated="yes"/>
+ <resource name="ST_MacroName" resource="String" generated="yes"/>
+ <resource name="CT_MacroName" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MacroName_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_EighthPointMeasure" resource="Integer"/>
+ <resource name="ST_PointMeasure" resource="Integer"/>
+ <resource name="ST_String" resource="String"/>
+ <resource name="CT_String" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_String_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_TextScale" resource="Integer"/>
+ <resource name="CT_TextScale" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_TextScale_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_HighlightColor" resource="List">
+ <value tokenid="1">black</value>
+ <value tokenid="2">blue</value>
+ <value tokenid="3">cyan</value>
+ <value tokenid="4">green</value>
+ <value tokenid="5">magenta</value>
+ <value tokenid="6">red</value>
+ <value tokenid="7">yellow</value>
+ <value tokenid="8">white</value>
+ <value tokenid="9">darkBlue</value>
+ <value tokenid="10">darkCyan</value>
+ <value tokenid="11">darkGreen</value>
+ <value tokenid="12">darkMagenta</value>
+ <value tokenid="13">darkRed</value>
+ <value tokenid="14">darkYellow</value>
+ <value tokenid="15">darkGray</value>
+ <value tokenid="16">lightGray</value>
+ <value tokenid="0">none</value>
+ </resource>
+ <resource name="CT_Highlight" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Highlight_val" action="setValue"/>
+ </resource>
+ <resource name="ST_HexColorAuto" resource="List">
+ <value tokenid="ooxml:Value_ST_HexColorAuto_auto">auto</value>
+ </resource>
+ <resource name="ST_HexColorRGB" resource="Hex"/>
+ <resource name="ST_HexColor" resource="Hex"/>
+ <resource name="CT_Color" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Color_val"/>
+ <attribute name="themeColor" tokenid="ooxml:CT_Color_themeColor"/>
+ <attribute name="themeTint" tokenid="ooxml:CT_Color_themeTint"/>
+ <attribute name="themeShade" tokenid="ooxml:CT_Color_themeShade"/>
+ </resource>
+ <resource name="ST_LangCode" resource="Hex" generated="yes"/>
+ <resource name="ST_Lang" resource="String"/>
+ <resource name="CT_Lang" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Lang_val" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="ST_Guid" resource="String"/>
+ <resource name="CT_Guid" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Guid_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_Underline" resource="List">
+ <value tokenid="1">single</value>
+ <value tokenid="2">words</value>
+ <value tokenid="3">double</value>
+ <value tokenid="6">thick</value>
+ <value tokenid="4">dotted</value>
+ <value tokenid="20">dottedHeavy</value>
+ <value tokenid="7">dash</value>
+ <value tokenid="23">dashedHeavy</value>
+ <value tokenid="39">dashLong</value>
+ <value tokenid="55">dashLongHeavy</value>
+ <value tokenid="9">dotDash</value>
+ <value tokenid="25">dashDotHeavy</value>
+ <value tokenid="10">dotDotDash</value>
+ <value tokenid="26">dashDotDotHeavy</value>
+ <value tokenid="11">wave</value>
+ <value tokenid="27">wavyHeavy</value>
+ <value tokenid="43">wavyDouble</value>
+ <value tokenid="0">none</value>
+ </resource>
+ <resource name="CT_Underline" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Underline_val" default="single"/>
+ <attribute name="color" tokenid="ooxml:CT_Underline_color"/>
+ <attribute name="themeColor" tokenid="ooxml:CT_Underline_themeColor"/>
+ <attribute name="themeTint" tokenid="ooxml:CT_Underline_themeTint"/>
+ <attribute name="themeShade" tokenid="ooxml:CT_Underline_themeShade"/>
+ </resource>
+ <resource name="ST_TextEffect" resource="List">
+ <value tokenid="0">none</value>
+ <value tokenid="1">lights</value>
+ <value tokenid="2">blinkBackground</value>
+ <value tokenid="3">sparkle</value>
+ <value tokenid="4">antsBlack</value>
+ <value tokenid="5">antsRed</value>
+ <value tokenid="6">shimmer</value>
+ </resource>
+ <resource name="CT_TextEffect" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_TextEffect_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Border" resource="List">
+ <value tokenid="255">nil</value>
+ <value tokenid="0">none</value>
+ <value tokenid="1">single</value>
+ <value tokenid="2">thick</value>
+ <value tokenid="3">double</value>
+ <value tokenid="6">dotted</value>
+ <value tokenid="7">dashed</value>
+ <value tokenid="8">dotDash</value>
+ <value tokenid="9">dotDotDash</value>
+ <value tokenid="10">triple</value>
+ <value tokenid="11">thinThickSmallGap</value>
+ <value tokenid="12">thickThinSmallGap</value>
+ <value tokenid="13">thinThickThinSmallGap</value>
+ <value tokenid="14">thinThickMediumGap</value>
+ <value tokenid="15">thickThinMediumGap</value>
+ <value tokenid="16">thinThickThinMediumGap</value>
+ <value tokenid="17">thinThickLargeGap</value>
+ <value tokenid="18">thickThinLargeGap</value>
+ <value tokenid="19">thinThickThinLargeGap</value>
+ <value tokenid="20">wave</value>
+ <value tokenid="21">doubleWave</value>
+ <value tokenid="22">dashSmallGap</value>
+ <value tokenid="23">dashDotStroked</value>
+ <value tokenid="24">threeDEmboss</value>
+ <value tokenid="25">threeDEngrave</value>
+ <value tokenid="18">outset</value>
+ <value tokenid="17">inset</value>
+ <value tokenid="64">apples</value>
+ <value tokenid="65">archedScallops</value>
+ <value tokenid="66">babyPacifier</value>
+ <value tokenid="67">babyRattle</value>
+ <value tokenid="68">balloons3Colors</value>
+ <value tokenid="69">balloonsHotAir</value>
+ <value tokenid="70">basicBlackDashes</value>
+ <value tokenid="71">basicBlackDots</value>
+ <value tokenid="72">basicBlackSquares</value>
+ <value tokenid="73">basicThinLines</value>
+ <value tokenid="74">basicWhiteDashes</value>
+ <value tokenid="75">basicWhiteDots</value>
+ <value tokenid="76">basicWhiteSquares</value>
+ <value tokenid="77">basicWideInline</value>
+ <value tokenid="78">basicWideMidline</value>
+ <value tokenid="79">basicWideOutline</value>
+ <value tokenid="80">bats</value>
+ <value tokenid="81">birds</value>
+ <value tokenid="82">birdsFlight</value>
+ <value tokenid="83">cabins</value>
+ <value tokenid="84">cakeSlice</value>
+ <value tokenid="85">candyCorn</value>
+ <value tokenid="86">celticKnotwork</value>
+ <value tokenid="87">certificateBanner</value>
+ <value tokenid="88">chainLink</value>
+ <value tokenid="89">champagneBottle</value>
+ <value tokenid="90">checkedBarBlack</value>
+ <value tokenid="91">checkedBarColor</value>
+ <value tokenid="92">checkered</value>
+ <value tokenid="93">christmasTree</value>
+ <value tokenid="94">circlesLines</value>
+ <value tokenid="95">circlesRectangles</value>
+ <value tokenid="96">classicalWave</value>
+ <value tokenid="97">clocks</value>
+ <value tokenid="98">compass</value>
+ <value tokenid="99">confetti</value>
+ <value tokenid="100">confettiGrays</value>
+ <value tokenid="101">confettiOutline</value>
+ <value tokenid="102">confettiStreamers</value>
+ <value tokenid="103">confettiWhite</value>
+ <value tokenid="104">cornerTriangles</value>
+ <value tokenid="105">couponCutoutDashes</value>
+ <value tokenid="106">couponCutoutDots</value>
+ <value tokenid="107">crazyMaze</value>
+ <value tokenid="108">creaturesButterfly</value>
+ <value tokenid="109">creaturesFish</value>
+ <value tokenid="110">creaturesInsects</value>
+ <value tokenid="111">creaturesLadyBug</value>
+ <value tokenid="112">crossStitch</value>
+ <value tokenid="113">cup</value>
+ <value tokenid="114">decoArch</value>
+ <value tokenid="115">decoArchColor</value>
+ <value tokenid="116">decoBlocks</value>
+ <value tokenid="117">diamondsGray</value>
+ <value tokenid="118">doubleD</value>
+ <value tokenid="119">doubleDiamonds</value>
+ <value tokenid="120">earth1</value>
+ <value tokenid="121">earth2</value>
+ <value tokenid="122">eclipsingSquares1</value>
+ <value tokenid="123">eclipsingSquares2</value>
+ <value tokenid="124">eggsBlack</value>
+ <value tokenid="125">fans</value>
+ <value tokenid="126">film</value>
+ <value tokenid="127">firecrackers</value>
+ <value tokenid="128">flowersBlockPrint</value>
+ <value tokenid="129">flowersDaisies</value>
+ <value tokenid="130">flowersModern1</value>
+ <value tokenid="131">flowersModern2</value>
+ <value tokenid="132">flowersPansy</value>
+ <value tokenid="133">flowersRedRose</value>
+ <value tokenid="134">flowersRoses</value>
+ <value tokenid="135">flowersTeacup</value>
+ <value tokenid="136">flowersTiny</value>
+ <value tokenid="137">gems</value>
+ <value tokenid="138">gingerbreadMan</value>
+ <value tokenid="139">gradient</value>
+ <value tokenid="140">handmade1</value>
+ <value tokenid="141">handmade2</value>
+ <value tokenid="142">heartBalloon</value>
+ <value tokenid="143">heartGray</value>
+ <value tokenid="144">hearts</value>
+ <value tokenid="145">heebieJeebies</value>
+ <value tokenid="146">holly</value>
+ <value tokenid="147">houseFunky</value>
+ <value tokenid="148">hypnotic</value>
+ <value tokenid="149">iceCreamCones</value>
+ <value tokenid="150">lightBulb</value>
+ <value tokenid="151">lightning1</value>
+ <value tokenid="152">lightning2</value>
+ <value tokenid="153">mapPins</value>
+ <value tokenid="154">mapleLeaf</value>
+ <value tokenid="155">mapleMuffins</value>
+ <value tokenid="156">marquee</value>
+ <value tokenid="157">marqueeToothed</value>
+ <value tokenid="158">moons</value>
+ <value tokenid="159">mosaic</value>
+ <value tokenid="160">musicNotes</value>
+ <value tokenid="161">northwest</value>
+ <value tokenid="162">ovals</value>
+ <value tokenid="163">packages</value>
+ <value tokenid="164">palmsBlack</value>
+ <value tokenid="165">palmsColor</value>
+ <value tokenid="166">paperClips</value>
+ <value tokenid="167">papyrus</value>
+ <value tokenid="168">partyFavor</value>
+ <value tokenid="169">partyGlass</value>
+ <value tokenid="170">pencils</value>
+ <value tokenid="171">people</value>
+ <value tokenid="172">peopleWaving</value>
+ <value tokenid="173">peopleHats</value>
+ <value tokenid="174">poinsettias</value>
+ <value tokenid="175">postageStamp</value>
+ <value tokenid="176">pumpkin1</value>
+ <value tokenid="177">pushPinNote2</value>
+ <value tokenid="178">pushPinNote1</value>
+ <value tokenid="179">pyramids</value>
+ <value tokenid="180">pyramidsAbove</value>
+ <value tokenid="181">quadrants</value>
+ <value tokenid="182">rings</value>
+ <value tokenid="183">safari</value>
+ <value tokenid="184">sawtooth</value>
+ <value tokenid="185">sawtoothGray</value>
+ <value tokenid="186">scaredCat</value>
+ <value tokenid="187">seattle</value>
+ <value tokenid="188">shadowedSquares</value>
+ <value tokenid="189">sharksTeeth</value>
+ <value tokenid="190">shorebirdTracks</value>
+ <value tokenid="191">skyrocket</value>
+ <value tokenid="192">snowflakeFancy</value>
+ <value tokenid="193">snowflakes</value>
+ <value tokenid="194">sombrero</value>
+ <value tokenid="195">southwest</value>
+ <value tokenid="196">stars</value>
+ <value tokenid="197">starsTop</value>
+ <value tokenid="198">stars3d</value>
+ <value tokenid="199">starsBlack</value>
+ <value tokenid="200">starsShadowed</value>
+ <value tokenid="201">sun</value>
+ <value tokenid="202">swirligig</value>
+ <value tokenid="203">tornPaper</value>
+ <value tokenid="204">tornPaperBlack</value>
+ <value tokenid="205">trees</value>
+ <value tokenid="206">triangleParty</value>
+ <value tokenid="207">triangles</value>
+ <value tokenid="208">tribal1</value>
+ <value tokenid="209">tribal2</value>
+ <value tokenid="210">tribal3</value>
+ <value tokenid="211">tribal4</value>
+ <value tokenid="212">tribal5</value>
+ <value tokenid="213">tribal6</value>
+ <value tokenid="214">twistedLines1</value>
+ <value tokenid="215">twistedLines2</value>
+ <value tokenid="216">vine</value>
+ <value tokenid="217">waveline</value>
+ <value tokenid="218">weavingAngles</value>
+ <value tokenid="219">weavingBraid</value>
+ <value tokenid="220">weavingRibbon</value>
+ <value tokenid="221">weavingStrips</value>
+ <value tokenid="222">whiteFlowers</value>
+ <value tokenid="223">woodwork</value>
+ <value tokenid="224">xIllusions</value>
+ <value tokenid="225">zanyTriangles</value>
+ <value tokenid="226">zigZag</value>
+ <value tokenid="227">zigZagStitch</value>
+ </resource>
+ <resource name="CT_Border" resource="Properties">
+ <attribute name="val" tokenid="rtf:BRCTYPE"/>
+ <attribute name="color" tokenid="ooxml:CT_Border_color"/>
+ <attribute name="themeColor" tokenid="ooxml:CT_Border_themeColor"/>
+ <attribute name="themeTint" tokenid="ooxml:CT_Border_themeTint"/>
+ <attribute name="themeShade" tokenid="ooxml:CT_Border_themeShade"/>
+ <attribute name="sz" tokenid="rtf:DPTLINEWIDTH"/>
+ <attribute name="space" tokenid="rtf:DPTSPACE"/>
+ <attribute name="shadow" tokenid="rtf:FSHADOW"/>
+ <attribute name="frame" tokenid="rtf:FFRAME"/>
+ </resource>
+ <resource name="ST_Shd" resource="List">
+ <value tokenid="0">nil</value>
+ <value tokenid="0">clear</value>
+ <value tokenid="1">solid</value>
+ <value tokenid="14">horzStripe</value>
+ <value tokenid="15">vertStripe</value>
+ <value tokenid="17">reverseDiagStripe</value>
+ <value tokenid="16">diagStripe</value>
+ <value tokenid="18">horzCross</value>
+ <value tokenid="19">diagCross</value>
+ <value tokenid="20">thinHorzStripe</value>
+ <value tokenid="21">thinVertStripe</value>
+ <value tokenid="23">thinReverseDiagStripe</value>
+ <value tokenid="22">thinDiagStripe</value>
+ <value tokenid="24">thinHorzCross</value>
+ <value tokenid="25">thinDiagCross</value>
+ <value tokenid="2">pct5</value>
+ <value tokenid="3">pct10</value>
+ <value tokenid="27">pct12</value>
+ <value tokenid="28">pct15</value>
+ <value tokenid="4">pct20</value>
+ <value tokenid="5">pct25</value>
+ <value tokenid="6">pct30</value>
+ <value tokenid="43">pct35</value>
+ <value tokenid="44">pct37</value>
+ <value tokenid="7">pct40</value>
+ <value tokenid="46">pct45</value>
+ <value tokenid="8">pct50</value>
+ <value tokenid="49">pct55</value>
+ <value tokenid="9">pct60</value>
+ <value tokenid="51">pct62</value>
+ <value tokenid="52">pct65</value>
+ <value tokenid="10">pct70</value>
+ <value tokenid="11">pct75</value>
+ <value tokenid="12">pct80</value>
+ <value tokenid="57">pct85</value>
+ <value tokenid="58">pct87</value>
+ <value tokenid="13">pct90</value>
+ <value tokenid="60">pct95</value>
+ </resource>
+ <resource name="CT_Shd" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Shd_val"/>
+ <attribute name="color" tokenid="ooxml:CT_Shd_color"/>
+ <attribute name="themeColor" tokenid="ooxml:CT_Shd_themeColor"/>
+ <attribute name="themeTint" tokenid="ooxml:CT_Shd_themeTint"/>
+ <attribute name="themeShade" tokenid="ooxml:CT_Shd_themeShade"/>
+ <attribute name="fill" tokenid="ooxml:CT_Shd_fill"/>
+ <attribute name="themeFill" tokenid="ooxml:CT_Shd_themeFill"/>
+ <attribute name="themeFillTint" tokenid="ooxml:CT_Shd_themeFillTint"/>
+ <attribute name="themeFillShade" tokenid="ooxml:CT_Shd_themeFillShade"/>
+ </resource>
+ <resource name="ST_VerticalAlignRun" resource="List" generated="yes">
+ <value name="baseline" tokenid="ooxml:Value_wordprocessingml_ST_VerticalAlignRun_baseline">baseline</value>
+ <value name="superscript" tokenid="ooxml:Value_wordprocessingml_ST_VerticalAlignRun_superscript">superscript</value>
+ <value name="subscript" tokenid="ooxml:Value_wordprocessingml_ST_VerticalAlignRun_subscript">subscript</value>
+ </resource>
+ <resource name="CT_VerticalAlignRun" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_VerticalAlignRun_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_FitText" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_FitText_val"/>
+ <attribute name="id" tokenid="ooxml:CT_FitText_id"/>
+ </resource>
+ <resource name="ST_Em" resource="List">
+ <value tokenid="0">none</value>
+ <value tokenid="1">dot</value>
+ <value tokenid="2">comma</value>
+ <value tokenid="3">circle</value>
+ <value tokenid="4">underDot</value>
+ </resource>
+ <resource name="CT_Em" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Em_val" action="setValue"/>
+ </resource>
+ <resource name="CT_Language" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Language_val"/>
+ <attribute name="eastAsia" tokenid="ooxml:CT_Language_eastAsia"/>
+ <attribute name="bidi" tokenid="ooxml:CT_Language_bidi"/>
+ </resource>
+ <resource name="ST_CombineBrackets" resource="List">
+ <value tokenid="0">none</value>
+ <value tokenid="1">round</value>
+ <value tokenid="2">square</value>
+ <value tokenid="3">angle</value>
+ <value tokenid="4">curly</value>
+ </resource>
+ <resource name="CT_EastAsianLayout" resource="Properties">
+ <attribute name="id" tokenid="ooxml:CT_EastAsianLayout_id"/>
+ <attribute name="combine" tokenid="ooxml:CT_EastAsianLayout_combine"/>
+ <attribute name="combineBrackets" tokenid="ooxml:CT_EastAsianLayout_combineBrackets"/>
+ <attribute name="vert" tokenid="ooxml:CT_EastAsianLayout_vert"/>
+ <attribute name="vertCompress" tokenid="ooxml:CT_EastAsianLayout_vertCompress"/>
+ </resource>
+ <resource name="ST_XAlign" resource="List" generated="yes">
+ <value name="left" tokenid="ooxml:Value_wordprocessingml_ST_XAlign_left">left</value>
+ <value name="center" tokenid="ooxml:Value_wordprocessingml_ST_XAlign_center">center</value>
+ <value name="right" tokenid="ooxml:Value_wordprocessingml_ST_XAlign_right">right</value>
+ <value name="inside" tokenid="ooxml:Value_wordprocessingml_ST_XAlign_inside">inside</value>
+ <value name="outside" tokenid="ooxml:Value_wordprocessingml_ST_XAlign_outside">outside</value>
+ </resource>
+ <resource name="ST_YAlign" resource="List" generated="yes">
+ <value name="inline" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_inline">inline</value>
+ <value name="top" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_top">top</value>
+ <value name="center" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_center">center</value>
+ <value name="bottom" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_bottom">bottom</value>
+ <value name="inside" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_inside">inside</value>
+ <value name="outside" tokenid="ooxml:Value_wordprocessingml_ST_YAlign_outside">outside</value>
+ </resource>
+ <resource name="ST_HeightRule" resource="List" generated="yes">
+ <value name="auto" tokenid="ooxml:Value_wordprocessingml_ST_HeightRule_auto">auto</value>
+ <value name="exact" tokenid="ooxml:Value_wordprocessingml_ST_HeightRule_exact">exact</value>
+ <value name="atLeast" tokenid="ooxml:Value_wordprocessingml_ST_HeightRule_atLeast">atLeast</value>
+ </resource>
+ <resource name="ST_Wrap" resource="List" generated="yes">
+ <value name="auto" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_auto">auto</value>
+ <value name="notBeside" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_notBeside">notBeside</value>
+ <value name="around" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_around">around</value>
+ <value name="tight" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_tight">tight</value>
+ <value name="through" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_through">through</value>
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_Wrap_none">none</value>
+ </resource>
+ <resource name="ST_VAnchor" resource="List" generated="yes">
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_VAnchor_text">text</value>
+ <value name="margin" tokenid="ooxml:Value_wordprocessingml_ST_VAnchor_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_wordprocessingml_ST_VAnchor_page">page</value>
+ </resource>
+ <resource name="ST_HAnchor" resource="List" generated="yes">
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_HAnchor_text">text</value>
+ <value name="margin" tokenid="ooxml:Value_wordprocessingml_ST_HAnchor_margin">margin</value>
+ <value name="page" tokenid="ooxml:Value_wordprocessingml_ST_HAnchor_page">page</value>
+ </resource>
+ <resource name="ST_DropCap" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_DropCap_none">none</value>
+ <value name="drop" tokenid="ooxml:Value_wordprocessingml_ST_DropCap_drop">drop</value>
+ <value name="margin" tokenid="ooxml:Value_wordprocessingml_ST_DropCap_margin">margin</value>
+ </resource>
+ <resource name="CT_FramePr" resource="Properties">
+ <kind name="paragraph"/>
+ <attribute name="dropCap" tokenid="ooxml:CT_FramePr_dropCap"/>
+ <attribute name="lines" tokenid="ooxml:CT_FramePr_lines"/>
+ <attribute name="w" tokenid="sprm:PDxaWidth"/>
+ <attribute name="h" tokenid="sprm:PWHeightAbs"/>
+ <attribute name="vSpace" tokenid="sprm:PDyaFromText"/>
+ <attribute name="hSpace" tokenid="sprm:PDxaFromText"/>
+ <attribute name="wrap" tokenid="sprm:PWr"/>
+ <attribute name="hAnchor" tokenid="ooxml:CT_FramePr_hAnchor"/>
+ <attribute name="vAnchor" tokenid="ooxml:CT_FramePr_vAnchor"/>
+ <attribute name="x" tokenid="ooxml:CT_FramePr_x"/>
+ <attribute name="xAlign" tokenid="ooxml:CT_FramePr_xAlign"/>
+ <attribute name="y" tokenid="ooxml:CT_FramePr_y"/>
+ <attribute name="yAlign" tokenid="ooxml:CT_FramePr_yAlign"/>
+ <attribute name="hRule" tokenid="ooxml:CT_FramePr_hRule"/>
+ <attribute name="anchorLock" tokenid="sprm:PFLocked"/>
+ </resource>
+ <resource name="ST_TabJc" resource="List">
+ <value tokenid="ooxml:Value_ST_TabJc_clear">clear</value>
+ <value tokenid="0">left</value>
+ <value tokenid="1">center</value>
+ <value tokenid="2">right</value>
+ <value tokenid="3">decimal</value>
+ <value tokenid="4">bar</value>
+ <value tokenid="ooxml:Value_ST_TabJc_num">num</value>
+ </resource>
+ <resource name="ST_TabTlc" resource="List">
+ <value tokenid="0">none</value>
+ <value tokenid="1">dot</value>
+ <value tokenid="2">hyphen</value>
+ <value tokenid="3">underscore</value>
+ <value tokenid="4">heavy</value>
+ <value tokenid="ooxml:Value_ST_TabTlc_middleDot">middleDot</value>
+ </resource>
+ <resource name="CT_TabStop" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_TabStop_val"/>
+ <attribute name="leader" tokenid="ooxml:CT_TabStop_leader"/>
+ <attribute name="pos" tokenid="ooxml:CT_TabStop_pos"/>
+ </resource>
+ <resource name="ST_LineSpacingRule" resource="List" generated="yes">
+ <value name="auto" tokenid="ooxml:Value_wordprocessingml_ST_LineSpacingRule_auto">auto</value>
+ <value name="exact" tokenid="ooxml:Value_wordprocessingml_ST_LineSpacingRule_exact">exact</value>
+ <value name="atLeast" tokenid="ooxml:Value_wordprocessingml_ST_LineSpacingRule_atLeast">atLeast</value>
+ </resource>
+ <resource name="CT_Spacing" resource="Properties">
+ <attribute name="before" tokenid="ooxml:CT_Spacing_before"/>
+ <attribute name="beforeLines" tokenid="ooxml:CT_Spacing_beforeLines"/>
+ <attribute name="beforeAutospacing" tokenid="ooxml:CT_Spacing_beforeAutospacing"/>
+ <attribute name="after" tokenid="ooxml:CT_Spacing_after"/>
+ <attribute name="afterLines" tokenid="ooxml:CT_Spacing_afterLines"/>
+ <attribute name="afterAutospacing" tokenid="ooxml:CT_Spacing_afterAutospacing"/>
+ <attribute name="line" tokenid="ooxml:CT_Spacing_line"/>
+ <attribute name="lineRule" tokenid="ooxml:CT_Spacing_lineRule"/>
+ </resource>
+ <resource name="CT_Ind" resource="Properties">
+ <attribute name="left" tokenid="ooxml:CT_Ind_left"/>
+ <attribute name="leftChars" tokenid="ooxml:CT_Ind_leftChars"/>
+ <attribute name="right" tokenid="ooxml:CT_Ind_right"/>
+ <attribute name="rightChars" tokenid="ooxml:CT_Ind_rightChars"/>
+ <attribute name="hanging" tokenid="ooxml:CT_Ind_hanging"/>
+ <attribute name="hangingChars" tokenid="ooxml:CT_Ind_hangingChars"/>
+ <attribute name="firstLine" tokenid="ooxml:CT_Ind_firstLine"/>
+ <attribute name="firstLineChars" tokenid="ooxml:CT_Ind_firstLineChars"/>
+ </resource>
+ <resource name="ST_Jc" resource="List">
+ <value tokenid="0">left</value>
+ <value tokenid="1">center</value>
+ <value tokenid="2">right</value>
+ <value tokenid="3">both</value>
+ <value tokenid="ooxml:Value_ST_Jc_mediumKashida">mediumKashida</value>
+ <value tokenid="ooxml:Value_ST_Jc_distribute">distribute</value>
+ <value tokenid="ooxml:Value_ST_Jc_numTab">numTab</value>
+ <value tokenid="ooxml:Value_ST_Jc_highKashida">highKashida</value>
+ <value tokenid="ooxml:Value_ST_Jc_lowKashida">lowKashida</value>
+ <value tokenid="ooxml:Value_ST_Jc_thaiDistribute">thaiDistribute</value>
+ </resource>
+ <resource name="CT_Jc" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Jc_val" action="setValue"/>
+ </resource>
+ <resource name="ST_View" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_View_none">none</value>
+ <value name="print" tokenid="ooxml:Value_wordprocessingml_ST_View_print">print</value>
+ <value name="outline" tokenid="ooxml:Value_wordprocessingml_ST_View_outline">outline</value>
+ <value name="masterPages" tokenid="ooxml:Value_wordprocessingml_ST_View_masterPages">masterPages</value>
+ <value name="normal" tokenid="ooxml:Value_wordprocessingml_ST_View_normal">normal</value>
+ <value name="web" tokenid="ooxml:Value_wordprocessingml_ST_View_web">web</value>
+ </resource>
+ <resource name="CT_View" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_View_val"/>
+ </resource>
+ <resource name="ST_Zoom" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_Zoom_none">none</value>
+ <value name="fullPage" tokenid="ooxml:Value_wordprocessingml_ST_Zoom_fullPage">fullPage</value>
+ <value name="bestFit" tokenid="ooxml:Value_wordprocessingml_ST_Zoom_bestFit">bestFit</value>
+ <value name="textFit" tokenid="ooxml:Value_wordprocessingml_ST_Zoom_textFit">textFit</value>
+ </resource>
+ <resource name="CT_Zoom" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Zoom_val"/>
+ <attribute name="percent" tokenid="ooxml:CT_Zoom_percent"/>
+ </resource>
+ <resource name="CT_WritingStyle" resource="Properties">
+ <attribute name="lang" tokenid="ooxml:CT_WritingStyle_lang"/>
+ <attribute name="vendorID" tokenid="ooxml:CT_WritingStyle_vendorID"/>
+ <attribute name="dllVersion" tokenid="ooxml:CT_WritingStyle_dllVersion"/>
+ <attribute name="nlCheck" tokenid="ooxml:CT_WritingStyle_nlCheck"/>
+ <attribute name="checkStyle" tokenid="ooxml:CT_WritingStyle_checkStyle"/>
+ <attribute name="appName" tokenid="ooxml:CT_WritingStyle_appName"/>
+ </resource>
+ <resource name="ST_Proof" resource="List" generated="yes">
+ <value name="clean" tokenid="ooxml:Value_wordprocessingml_ST_Proof_clean">clean</value>
+ <value name="dirty" tokenid="ooxml:Value_wordprocessingml_ST_Proof_dirty">dirty</value>
+ </resource>
+ <resource name="CT_Proof" resource="Properties">
+ <attribute name="spelling" tokenid="ooxml:CT_Proof_spelling"/>
+ <attribute name="grammar" tokenid="ooxml:CT_Proof_grammar"/>
+ </resource>
+ <resource name="ST_DocType" resource="List" generated="yes">
+ <value name="notSpecified" tokenid="ooxml:Value_wordprocessingml_ST_DocType_notSpecified">notSpecified</value>
+ <value name="letter" tokenid="ooxml:Value_wordprocessingml_ST_DocType_letter">letter</value>
+ <value name="eMail" tokenid="ooxml:Value_wordprocessingml_ST_DocType_eMail">eMail</value>
+ </resource>
+ <resource name="CT_DocType" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_DocType_val"/>
+ </resource>
+ <resource name="ST_DocProtect" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_DocProtect_none">none</value>
+ <value name="readOnly" tokenid="ooxml:Value_wordprocessingml_ST_DocProtect_readOnly">readOnly</value>
+ <value name="comments" tokenid="ooxml:Value_wordprocessingml_ST_DocProtect_comments">comments</value>
+ <value name="trackedChanges" tokenid="ooxml:Value_wordprocessingml_ST_DocProtect_trackedChanges">trackedChanges</value>
+ <value name="forms" tokenid="ooxml:Value_wordprocessingml_ST_DocProtect_forms">forms</value>
+ </resource>
+ <resource name="ST_CryptProv" resource="List" generated="yes">
+ <value name="rsaAES" tokenid="ooxml:Value_wordprocessingml_ST_CryptProv_rsaAES">rsaAES</value>
+ <value name="rsaFull" tokenid="ooxml:Value_wordprocessingml_ST_CryptProv_rsaFull">rsaFull</value>
+ </resource>
+ <resource name="ST_AlgClass" resource="List" generated="yes">
+ <value name="hash" tokenid="ooxml:Value_wordprocessingml_ST_AlgClass_hash">hash</value>
+ </resource>
+ <resource name="ST_AlgType" resource="List" generated="yes">
+ <value name="typeAny" tokenid="ooxml:Value_wordprocessingml_ST_AlgType_typeAny">typeAny</value>
+ </resource>
+ <resource name="AG_Password" resource="Properties">
+ <attribute name="cryptProviderType" tokenid="ooxml:AG_Password_cryptProviderType"/>
+ <attribute name="cryptAlgorithmClass" tokenid="ooxml:AG_Password_cryptAlgorithmClass"/>
+ <attribute name="cryptAlgorithmType" tokenid="ooxml:AG_Password_cryptAlgorithmType"/>
+ <attribute name="cryptAlgorithmSid" tokenid="ooxml:AG_Password_cryptAlgorithmSid"/>
+ <attribute name="cryptSpinCount" tokenid="ooxml:AG_Password_cryptSpinCount"/>
+ <attribute name="cryptProvider" tokenid="ooxml:AG_Password_cryptProvider"/>
+ <attribute name="algIdExt" tokenid="ooxml:AG_Password_algIdExt"/>
+ <attribute name="algIdExtSource" tokenid="ooxml:AG_Password_algIdExtSource"/>
+ <attribute name="cryptProviderTypeExt" tokenid="ooxml:AG_Password_cryptProviderTypeExt"/>
+ <attribute name="cryptProviderTypeExtSource" tokenid="ooxml:AG_Password_cryptProviderTypeExtSource"/>
+ <attribute name="hash" tokenid="ooxml:AG_Password_hash"/>
+ <attribute name="salt" tokenid="ooxml:AG_Password_salt"/>
+ </resource>
+ <resource name="CT_DocProtect" resource="Properties">
+ <attribute name="edit" tokenid="ooxml:CT_DocProtect_edit"/>
+ <attribute name="formatting" tokenid="ooxml:CT_DocProtect_formatting"/>
+ <attribute name="enforcement" tokenid="ooxml:CT_DocProtect_enforcement"/>
+ </resource>
+ <resource name="ST_MailMergeDocType" resource="List" generated="yes">
+ <value name="catalog" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_catalog">catalog</value>
+ <value name="envelopes" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_envelopes">envelopes</value>
+ <value name="mailingLabels" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_mailingLabels">mailingLabels</value>
+ <value name="formLetters" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_formLetters">formLetters</value>
+ <value name="email" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_email">email</value>
+ <value name="fax" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDocType_fax">fax</value>
+ </resource>
+ <resource name="CT_MailMergeDocType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MailMergeDocType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_MailMergeDataType" resource="List" generated="yes">
+ <value name="textFile" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_textFile">textFile</value>
+ <value name="database" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_database">database</value>
+ <value name="spreadsheet" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_spreadsheet">spreadsheet</value>
+ <value name="query" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_query">query</value>
+ <value name="odbc" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_odbc">odbc</value>
+ <value name="native" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDataType_native">native</value>
+ </resource>
+ <resource name="CT_MailMergeDataType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MailMergeDataType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_MailMergeDest" resource="List" generated="yes">
+ <value name="newDocument" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDest_newDocument">newDocument</value>
+ <value name="printer" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDest_printer">printer</value>
+ <value name="email" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDest_email">email</value>
+ <value name="fax" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeDest_fax">fax</value>
+ </resource>
+ <resource name="CT_MailMergeDest" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MailMergeDest_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_MailMergeOdsoFMDFieldType" resource="List" generated="yes">
+ <value name="null" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeOdsoFMDFieldType_null">null</value>
+ <value name="dbColumn" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeOdsoFMDFieldType_dbColumn">dbColumn</value>
+ </resource>
+ <resource name="CT_MailMergeOdsoFMDFieldType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MailMergeOdsoFMDFieldType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_TrackChangesView" resource="Properties">
+ <attribute name="markup" tokenid="ooxml:CT_TrackChangesView_markup"/>
+ <attribute name="comments" tokenid="ooxml:CT_TrackChangesView_comments"/>
+ <attribute name="insDel" tokenid="ooxml:CT_TrackChangesView_insDel"/>
+ <attribute name="formatting" tokenid="ooxml:CT_TrackChangesView_formatting"/>
+ <attribute name="inkAnnotations" tokenid="ooxml:CT_TrackChangesView_inkAnnotations"/>
+ </resource>
+ <resource name="CT_Kinsoku" resource="Properties">
+ <attribute name="lang" tokenid="ooxml:CT_Kinsoku_lang"/>
+ <attribute name="val" tokenid="ooxml:CT_Kinsoku_val"/>
+ </resource>
+ <resource name="ST_TextDirection" resource="List">
+ <value tokenid="0">lrTb</value>
+ <value tokenid="1">tbRl</value>
+ <value tokenid="3">btLr</value>
+ <value tokenid="4">lrTbV</value>
+ <value tokenid="5">tbRlV</value>
+ <value tokenid="ooxml:Value_ST_TextDirection_tbLrV">tbLrV</value>
+ </resource>
+ <resource name="CT_TextDirection" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_TextDirection_val" action="setValue"/>
+ </resource>
+ <resource name="ST_TextAlignment" resource="List" generated="yes">
+ <value name="top" tokenid="ooxml:Value_wordprocessingml_ST_TextAlignment_top">top</value>
+ <value name="center" tokenid="ooxml:Value_wordprocessingml_ST_TextAlignment_center">center</value>
+ <value name="baseline" tokenid="ooxml:Value_wordprocessingml_ST_TextAlignment_baseline">baseline</value>
+ <value name="bottom" tokenid="ooxml:Value_wordprocessingml_ST_TextAlignment_bottom">bottom</value>
+ <value name="auto" tokenid="ooxml:Value_wordprocessingml_ST_TextAlignment_auto">auto</value>
+ </resource>
+ <resource name="CT_TextAlignment" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_TextAlignment_val" action="setValue"/>
+ </resource>
+ <resource name="ST_DisplacedByCustomXml" resource="List" generated="yes">
+ <value name="next" tokenid="ooxml:Value_wordprocessingml_ST_DisplacedByCustomXml_next">next</value>
+ <value name="prev" tokenid="ooxml:Value_wordprocessingml_ST_DisplacedByCustomXml_prev">prev</value>
+ </resource>
+ <resource name="ST_AnnotationVMerge" resource="List" generated="yes">
+ <value name="cont" tokenid="ooxml:Value_wordprocessingml_ST_AnnotationVMerge_cont">cont</value>
+ <value name="rest" tokenid="ooxml:Value_wordprocessingml_ST_AnnotationVMerge_rest">rest</value>
+ </resource>
+ <resource name="CT_Markup" resource="Properties">
+ <attribute name="id" tokenid="ooxml:CT_Markup_id"/>
+ </resource>
+ <resource name="CT_TrackChange" resource="Properties">
+ <attribute name="author" tokenid="ooxml:CT_TrackChange_author"/>
+ <attribute name="date" tokenid="ooxml:CT_TrackChange_date"/>
+ </resource>
+ <resource name="CT_CellMergeTrackChange" resource="Properties">
+ <attribute name="vMerge" tokenid="ooxml:CT_CellMergeTrackChange_vMerge"/>
+ <attribute name="vMergeOrig" tokenid="ooxml:CT_CellMergeTrackChange_vMergeOrig"/>
+ </resource>
+ <resource name="CT_TrackChangeRange" resource="Properties">
+ <attribute name="displacedByCustomXml" tokenid="ooxml:CT_TrackChangeRange_displacedByCustomXml"/>
+ </resource>
+ <resource name="CT_MarkupRange" resource="Properties">
+ <attribute name="displacedByCustomXml" tokenid="ooxml:CT_MarkupRange_displacedByCustomXml"/>
+ </resource>
+ <resource name="CT_MarkupRangeBookmark" resource="Properties">
+ <attribute name="id" tokenid="rtf:IBKL"/>
+ </resource>
+ <resource name="CT_BookmarkRange" resource="Properties">
+ <type name="Bookmark"/>
+ <attribute name="colFirst" tokenid="ooxml:CT_BookmarkRange_colFirst"/>
+ <attribute name="colLast" tokenid="ooxml:CT_BookmarkRange_colLast"/>
+ </resource>
+ <resource name="CT_Bookmark" resource="Properties">
+ <type name="Bookmark"/>
+ <attribute name="name" tokenid="rtf:BOOKMARKNAME"/>
+ </resource>
+ <resource name="CT_MoveBookmark" resource="Properties">
+ <attribute name="author" tokenid="ooxml:CT_MoveBookmark_author"/>
+ <attribute name="date" tokenid="ooxml:CT_MoveBookmark_date"/>
+ </resource>
+ <resource name="CT_Comment" resource="XNote">
+ <attribute name="id" action="checkId"/>
+ <attribute name="initials" tokenid="ooxml:CT_Comment_initials"/>
+ </resource>
+ <resource name="CT_TrackChangeNumbering" resource="Properties">
+ <attribute name="original" tokenid="ooxml:CT_TrackChangeNumbering_original"/>
+ </resource>
+ <resource name="CT_TblPrExChange" resource="Properties">
+ <element name="tblPrEx" tokenid="ooxml:CT_TblPrExChange_tblPrEx"/>
+ </resource>
+ <resource name="CT_TcPrChange" resource="Properties">
+ <element name="tcPr" tokenid="ooxml:CT_TcPrChange_tcPr"/>
+ </resource>
+ <resource name="CT_TrPrChange" resource="Properties">
+ <element name="trPr" tokenid="ooxml:CT_TrPrChange_trPr"/>
+ </resource>
+ <resource name="CT_TblGridChange" resource="Properties">
+ <element name="tblGrid" tokenid="ooxml:CT_TblGridChange_tblGrid"/>
+ </resource>
+ <resource name="CT_TblPrChange" resource="Properties">
+ <element name="tblPr" tokenid="ooxml:CT_TblPrChange_tblPr"/>
+ </resource>
+ <resource name="CT_SectPrChange" resource="Properties">
+ <element name="sectPr" tokenid="ooxml:CT_SectPrChange_sectPr"/>
+ </resource>
+ <resource name="CT_PPrChange" resource="Properties">
+ <element name="pPr" tokenid="ooxml:CT_PPrChange_pPr"/>
+ </resource>
+ <resource name="CT_RPrChange" resource="Properties">
+ <element name="rPr" tokenid="ooxml:CT_RPrChange_rPr"/>
+ </resource>
+ <resource name="CT_ParaRPrChange" resource="Properties">
+ <element name="rPr" tokenid="ooxml:CT_ParaRPrChange_rPr"/>
+ </resource>
+ <resource name="CT_RunTrackChange" resource="Stream">
+ <action name="start" action="tokenproperty"/>
+ <action name="start" action="propagateCharacterPropertiesAsSet" sendtokenid="ooxml:trackchange"/>
+ <action name="start" action="clearProps"/>
+ <action name="end" action="mark" sendtokenid="ooxml:endtrackchange"/>
+ </resource>
+ <resource name="EG_RangeMarkupElements" resource="Properties">
+ <element name="bookmarkStart" tokenid="ooxml:EG_RangeMarkupElements_bookmarkStart"/>
+ <element name="bookmarkEnd" tokenid="ooxml:EG_RangeMarkupElements_bookmarkEnd"/>
+ <element name="moveFromRangeStart" tokenid="ooxml:EG_RangeMarkupElements_moveFromRangeStart"/>
+ <element name="moveFromRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_moveFromRangeEnd"/>
+ <element name="moveToRangeStart" tokenid="ooxml:EG_RangeMarkupElements_moveToRangeStart"/>
+ <element name="moveToRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_moveToRangeEnd"/>
+ <element name="commentRangeStart" tokenid="ooxml:EG_RangeMarkupElements_commentRangeStart"/>
+ <element name="commentRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_commentRangeEnd"/>
+ <element name="customXmlInsRangeStart" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart"/>
+ <element name="customXmlInsRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd"/>
+ <element name="customXmlDelRangeStart" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart"/>
+ <element name="customXmlDelRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd"/>
+ <element name="customXmlMoveFromRangeStart" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart"/>
+ <element name="customXmlMoveFromRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd"/>
+ <element name="customXmlMoveToRangeStart" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart"/>
+ <element name="customXmlMoveToRangeEnd" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd"/>
+ </resource>
+ <resource name="CT_NumPr" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="ilvl" tokenid="sprm:PIlvl"/>
+ <element name="numId" tokenid="sprm:PIlfo"/>
+ <element name="numberingChange" tokenid="ooxml:CT_NumPr_numberingChange"/>
+ <element name="ins" tokenid="ooxml:CT_NumPr_ins"/>
+ </resource>
+ <resource name="CT_PBdr" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="top" tokenid="sprm:PBrcTop"/>
+ <element name="left" tokenid="sprm:PBrcLeft"/>
+ <element name="bottom" tokenid="sprm:PBrcBottom"/>
+ <element name="right" tokenid="sprm:PBrcRight"/>
+ <element name="between" tokenid="sprm:PBrcBetween"/>
+ <element name="bar" tokenid="sprm:PBrcBar"/>
+ </resource>
+ <resource name="CT_Tabs" resource="Properties">
+ <element name="tab" tokenid="ooxml:CT_Tabs_tab"/>
+ </resource>
+ <resource name="ST_TextboxTightWrap" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_TextboxTightWrap_none">none</value>
+ <value name="allLines" tokenid="ooxml:Value_wordprocessingml_ST_TextboxTightWrap_allLines">allLines</value>
+ <value name="firstAndLastLine" tokenid="ooxml:Value_wordprocessingml_ST_TextboxTightWrap_firstAndLastLine">firstAndLastLine</value>
+ <value name="firstLineOnly" tokenid="ooxml:Value_wordprocessingml_ST_TextboxTightWrap_firstLineOnly">firstLineOnly</value>
+ <value name="lastLineOnly" tokenid="ooxml:Value_wordprocessingml_ST_TextboxTightWrap_lastLineOnly">lastLineOnly</value>
+ </resource>
+ <resource name="CT_TextboxTightWrap" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_TextboxTightWrap_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_PPrBase" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="pStyle" tokenid="ooxml:CT_PPrBase_pStyle"/>
+ <element name="keepNext" tokenid="sprm:PFKeepFollow"/>
+ <element name="keepLines" tokenid="sprm:PFKeep"/>
+ <element name="pageBreakBefore" tokenid="sprm:PFPageBreakBefore"/>
+ <element name="framePr" tokenid="ooxml:CT_PPrBase_framePr"/>
+ <element name="widowControl" tokenid="ooxml:CT_PPrBase_widowControl"/>
+ <element name="numPr" tokenid="ooxml:CT_PPrBase_numPr"/>
+ <element name="suppressLineNumbers" tokenid="sprm:PFNoLineNumb"/>
+ <element name="pBdr" tokenid="ooxml:CT_PrBase_pBdr"/>
+ <element name="shd" tokenid="sprm:PShd"/>
+ <element name="tabs" tokenid="ooxml:CT_PPrBase_tabs"/>
+ <element name="suppressAutoHyphens" tokenid="sprm:PFNoAutoHyph"/>
+ <element name="kinsoku" tokenid="ooxml:CT_PPrBase_kinsoku"/>
+ <element name="wordWrap" tokenid="ooxml:CT_PPrBase_wordWrap"/>
+ <element name="overflowPunct" tokenid="sprm:PFOverflowPunct"/>
+ <element name="topLinePunct" tokenid="sprm:PFTopLinePunct"/>
+ <element name="autoSpaceDE" tokenid="sprm:PFAutoSpaceDE"/>
+ <element name="autoSpaceDN" tokenid="sprm:PFAutoSpaceDN"/>
+ <element name="bidi" tokenid="sprm:PFBiDi"/>
+ <element name="adjustRightInd" tokenid="ooxml:CT_PPrBase_adjustRightInd"/>
+ <element name="snapToGrid" tokenid="ooxml:CT_PPrBase_snapToGrid"/>
+ <element name="spacing" tokenid="ooxml:CT_PPrBase_spacing"/>
+ <element name="ind" tokenid="ooxml:CT_PPrBase_ind"/>
+ <element name="contextualSpacing" tokenid="0x246d"/>
+ <element name="mirrorIndents" tokenid="0x2470"/>
+ <element name="suppressOverlap" tokenid="0x2462"/>
+ <element name="jc" tokenid="sprm:PJc"/>
+ <element name="textDirection" tokenid="sprm:PFrameTextFlow"/>
+ <element name="textAlignment" tokenid="sprm:PWAlignFont"/>
+ <element name="textboxTightWrap" tokenid="sprm:PTightWrap"/>
+ <element name="outlineLvl" tokenid="sprm:POutLvl"/>
+ <element name="divId" tokenid="ooxml:CT_PPrBase_divId"/>
+ <element name="cnfStyle" tokenid="ooxml:CT_PPrBase_cnfStyle"/>
+ </resource>
+ <resource name="CT_PPr" resource="Properties">
+ <element name="rPr" tokenid="ooxml:CT_PPr_rPr"/>
+ <element name="sectPr" tokenid="ooxml:CT_PPr_sectPr"/>
+ <element name="pPrChange" tokenid="ooxml:CT_PPr_pPrChange"/>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="CT_Control" resource="Properties">
+ <attribute name="name" tokenid="ooxml:CT_Control_name"/>
+ <attribute name="shapeid" tokenid="ooxml:CT_Control_shapeid"/>
+ <attribute name="r:id" tokenid="ooxml:CT_Control_r_id"/>
+ </resource>
+ <resource name="CT_Background" resource="Properties">
+ <attribute name="color" tokenid="ooxml:CT_Background_color"/>
+ <attribute name="themeColor" tokenid="ooxml:CT_Background_themeColor"/>
+ <attribute name="themeTint" tokenid="ooxml:CT_Background_themeTint"/>
+ <attribute name="themeShade" tokenid="ooxml:CT_Background_themeShade"/>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="CT_Rel" resource="Properties">
+ <attribute name="r:id" tokenid="ooxml:CT_Rel_id"/>
+ </resource>
+ <resource name="CT_PictureBase" resource="Properties"/>
+ <resource name="CT_Object" resource="Shape">
+ <element name="control" tokenid="ooxml:CT_Object_control"/>
+ <attribute name="dxaOrig" tokenid="ooxml:CT_Object_dxaOrig"/>
+ <attribute name="dyaOrig" tokenid="ooxml:CT_Object_dyaOrig"/>
+ <action name="end" action="sendPropertiesWithId" sendtokenid="ooxml:object"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_Picture" resource="Shape">
+ <element name="movie" tokenid="ooxml:CT_Picture_movie"/>
+ <element name="control" tokenid="ooxml:CT_Picture_control"/>
+ <action name="end" action="sendPropertiesWithId" sendtokenid="ooxml:object"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_Drawing" resource="Properties">
+ <action name="end" action="handlePicture"/>
+ </resource>
+ <resource name="CT_SimpleField" resource="Stream">
+ <element name="fldData" tokenid="ooxml:CT_SimpleField_fldData"/>
+ <attribute name="instr" tokenid="ooxml:CT_SimpleField_instr"/>
+ <attribute name="fldLock" tokenid="ooxml:CT_SimpleField_fldLock"/>
+ <attribute name="dirty" tokenid="ooxml:CT_SimpleField_dirty"/>
+ <action name="start" action="fieldstart"/>
+ <action name="start" action="startCharacterGroup"/>
+ <action name="start" action="printproperty" sendtokenid="ooxml:CT_SimpleField_instr"/>
+ <action name="start" action="endCharacterGroup"/>
+ <action name="start" action="fieldsep"/>
+ <action name="end" action="fieldend"/>
+ </resource>
+ <resource name="ST_FldCharType" resource="List">
+ <value name="begin" tokenid="ooxml:Value_ST_FldCharType_begin">begin</value>
+ <value name="separate" tokenid="ooxml:Value_ST_FldCharType_separate">separate</value>
+ <value name="end" tokenid="ooxml:Value_ST_FldCharType_end">end</value>
+ </resource>
+ <resource name="ST_InfoTextType" resource="List" generated="yes">
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_InfoTextType_text">text</value>
+ <value name="autoText" tokenid="ooxml:Value_wordprocessingml_ST_InfoTextType_autoText">autoText</value>
+ </resource>
+ <resource name="ST_FFHelpTextVal" resource="String" generated="yes"/>
+ <resource name="ST_FFStatusTextVal" resource="String" generated="yes"/>
+ <resource name="ST_FFName" resource="String" generated="yes"/>
+ <resource name="ST_FFTextType" resource="List" generated="yes">
+ <value name="regular" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_regular">regular</value>
+ <value name="number" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_number">number</value>
+ <value name="date" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_date">date</value>
+ <value name="currentTime" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_currentTime">currentTime</value>
+ <value name="currentDate" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_currentDate">currentDate</value>
+ <value name="calculated" tokenid="ooxml:Value_wordprocessingml_ST_FFTextType_calculated">calculated</value>
+ </resource>
+ <resource name="CT_FFTextType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FFTextType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_FFName" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FFName_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_FldChar" resource="Stream">
+ <element name="fldData" tokenid="ooxml:CT_FldChar_fldData"/>
+ <element name="ffData" tokenid="ooxml:CT_FldChar_ffData"/>
+ <element name="numberingChange" tokenid="ooxml:CT_FldChar_numberingChange"/>
+ <attribute name="fldCharType" tokenid="ooxml:CT_FldChar_fldCharType"/>
+ <attribute name="fldLock" tokenid="ooxml:CT_FldChar_fldLock"/>
+ <attribute name="dirty" tokenid="ooxml:CT_FldChar_dirty"/>
+ <action name="start" action="fieldstart">
+ <cond tokenid="ooxml:CT_FldChar_fldCharType" value="ooxml:Value_ST_FldCharType_begin"/>
+ </action>
+ <action name="start" action="fieldsep">
+ <cond tokenid="ooxml:CT_FldChar_fldCharType" value="ooxml:Value_ST_FldCharType_separate"/>
+ </action>
+ <action name="start" action="fieldend">
+ <cond tokenid="ooxml:CT_FldChar_fldCharType" value="ooxml:Value_ST_FldCharType_end"/>
+ </action>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="CT_Hyperlink" resource="Stream">
+ <attribute name="tgtFrame" tokenid="ooxml:CT_Hyperlink_tgtFrame"/>
+ <attribute name="tooltip" tokenid="ooxml:CT_Hyperlink_tooltip"/>
+ <attribute name="docLocation" tokenid="ooxml:CT_Hyperlink_docLocation"/>
+ <attribute name="history" tokenid="ooxml:CT_Hyperlink_history"/>
+ <attribute name="anchor" tokenid="ooxml:CT_Hyperlink_anchor"/>
+ <attribute name="r:id" tokenid="ooxml:CT_Hyperlink_r_id"/>
+ <action name="start" action="fieldstart"/>
+ <action name="start" action="handleHyperlink"/>
+ <action name="start" action="fieldsep"/>
+ <action name="end" action="fieldend"/>
+ </resource>
+ <resource name="CT_FFData" resource="Properties">
+ <element name="name" tokenid="ooxml:CT_FFData_name"/>
+ <element name="enabled" tokenid="ooxml:CT_FFData_enabled"/>
+ <element name="calcOnExit" tokenid="ooxml:CT_FFData_calcOnExit"/>
+ <element name="entryMacro" tokenid="ooxml:CT_FFData_entryMacro"/>
+ <element name="exitMacro" tokenid="ooxml:CT_FFData_exitMacro"/>
+ <element name="helpText" tokenid="ooxml:CT_FFData_helpText"/>
+ <element name="statusText" tokenid="ooxml:CT_FFData_statusText"/>
+ <element name="checkBox" tokenid="ooxml:CT_FFData_checkBox"/>
+ <element name="ddList" tokenid="ooxml:CT_FFData_ddList"/>
+ <element name="textInput" tokenid="ooxml:CT_FFData_textInput"/>
+ <action name="end" action="propagateCharacterPropertiesAsSet" sendtokenid="ooxml:ffdata"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_FFHelpText" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_FFHelpText_type"/>
+ <attribute name="val" tokenid="ooxml:CT_FFHelpText_val"/>
+ </resource>
+ <resource name="CT_FFStatusText" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_FFStatusText_type"/>
+ <attribute name="val" tokenid="ooxml:CT_FFStatusText_val"/>
+ </resource>
+ <resource name="CT_FFCheckBox" resource="Properties">
+ <element name="size" tokenid="ooxml:CT_FFCheckBox_size"/>
+ <element name="sizeAuto" tokenid="ooxml:CT_FFCheckBox_sizeAuto"/>
+ <element name="default" tokenid="ooxml:CT_FFCheckBox_default"/>
+ <element name="checked" tokenid="ooxml:CT_FFCheckBox_checked"/>
+ </resource>
+ <resource name="CT_FFDDList" resource="Properties">
+ <element name="result" tokenid="ooxml:CT_FFDDList_result"/>
+ <element name="default" tokenid="ooxml:CT_FFDDList_default"/>
+ <element name="listEntry" tokenid="ooxml:CT_FFDDList_listEntry"/>
+ </resource>
+ <resource name="CT_FFTextInput" resource="Properties">
+ <element name="type" tokenid="ooxml:CT_FFTextInput_type"/>
+ <element name="default" tokenid="ooxml:CT_FFTextInput_default"/>
+ <element name="maxLength" tokenid="ooxml:CT_FFTextInput_maxLength"/>
+ <element name="format" tokenid="ooxml:CT_FFTextInput_format"/>
+ </resource>
+ <resource name="ST_SectionMark" resource="List">
+ <value tokenid="0">continuous</value>
+ <value tokenid="1">nextColumn</value>
+ <value tokenid="2">nextPage</value>
+ <value tokenid="3">evenPage</value>
+ <value tokenid="4">oddPage</value>
+ </resource>
+ <resource name="CT_SectType" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_SectType_val" action="setValue"/>
+ </resource>
+ <resource name="ST_NumberFormat" resource="List">
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimal">decimal</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_upperRoman">upperRoman</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_lowerRoman">lowerRoman</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_upperLetter">upperLetter</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_lowerLetter">lowerLetter</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ordinal">ordinal</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_cardinalText">cardinalText</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ordinalText">ordinalText</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hex">hex</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_chicago">chicago</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographDigital">ideographDigital</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_japaneseCounting">japaneseCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_aiueo">aiueo</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_iroha">iroha</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalFullWidth">decimalFullWidth</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalHalfWidth">decimalHalfWidth</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_japaneseLegal">japaneseLegal</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_japaneseDigitalTenThousand">japaneseDigitalTenThousand</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalEnclosedCircle">decimalEnclosedCircle</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalFullWidth2">decimalFullWidth2</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_aiueoFullWidth">aiueoFullWidth</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_irohaFullWidth">irohaFullWidth</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalZero">decimalZero</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_bullet">bullet</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ganada">ganada</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_chosung">chosung</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalEnclosedFullstop">decimalEnclosedFullstop</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalEnclosedParen">decimalEnclosedParen</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_decimalEnclosedCircleChinese">decimalEnclosedCircleChinese</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographEnclosedCircle">ideographEnclosedCircle</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographTraditional">ideographTraditional</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographZodiac">ideographZodiac</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographZodiacTraditional">ideographZodiacTraditional</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_taiwaneseCounting">taiwaneseCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_ideographLegalTraditional">ideographLegalTraditional</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_taiwaneseCountingThousand">taiwaneseCountingThousand</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_taiwaneseDigital">taiwaneseDigital</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_chineseCounting">chineseCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_chineseLegalSimplified">chineseLegalSimplified</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_chineseCountingThousand">chineseCountingThousand</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_koreanDigital">koreanDigital</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_koreanCounting">koreanCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_koreanLegal">koreanLegal</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_koreanDigital2">koreanDigital2</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_vietnameseCounting">vietnameseCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_russianLower">russianLower</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_russianUpper">russianUpper</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_none">none</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_numberInDash">numberInDash</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hebrew1">hebrew1</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hebrew2">hebrew2</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_arabicAlpha">arabicAlpha</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_arabicAbjad">arabicAbjad</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hindiVowels">hindiVowels</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hindiConsonants">hindiConsonants</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hindiNumbers">hindiNumbers</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_hindiCounting">hindiCounting</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_thaiLetters">thaiLetters</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_thaiNumbers">thaiNumbers</value>
+ <value tokenid="ooxml:Value_ST_NumberFormat_thaiCounting">thaiCounting</value>
+ </resource>
+ <resource name="ST_PageOrientation" resource="List">
+ <value tokenid="0">portrait</value>
+ <value tokenid="1">landscape</value>
+ </resource>
+ <resource name="CT_PageSz" resource="Properties">
+ <attribute name="w" tokenid="ooxml:CT_PageSz_w"/>
+ <attribute name="h" tokenid="ooxml:CT_PageSz_h"/>
+ <attribute name="orient" tokenid="ooxml:CT_PageSz_orient"/>
+ <attribute name="code" tokenid="ooxml:CT_PageSz_code"/>
+ </resource>
+ <resource name="CT_PageMar" resource="Properties">
+ <attribute name="top" tokenid="ooxml:CT_PageMar_top"/>
+ <attribute name="right" tokenid="ooxml:CT_PageMar_right"/>
+ <attribute name="bottom" tokenid="ooxml:CT_PageMar_bottom"/>
+ <attribute name="left" tokenid="ooxml:CT_PageMar_left"/>
+ <attribute name="header" tokenid="ooxml:CT_PageMar_header"/>
+ <attribute name="footer" tokenid="ooxml:CT_PageMar_footer"/>
+ <attribute name="gutter" tokenid="ooxml:CT_PageMar_gutter"/>
+ </resource>
+ <resource name="ST_PageBorderZOrder" resource="List" generated="yes">
+ <value name="front" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderZOrder_front">front</value>
+ <value name="back" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderZOrder_back">back</value>
+ </resource>
+ <resource name="ST_PageBorderDisplay" resource="List" generated="yes">
+ <value name="allPages" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderDisplay_allPages">allPages</value>
+ <value name="firstPage" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderDisplay_firstPage">firstPage</value>
+ <value name="notFirstPage" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderDisplay_notFirstPage">notFirstPage</value>
+ </resource>
+ <resource name="ST_PageBorderOffset" resource="List" generated="yes">
+ <value name="page" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderOffset_page">page</value>
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_PageBorderOffset_text">text</value>
+ </resource>
+ <resource name="CT_PageBorders" resource="Properties">
+ <element name="top" tokenid="ooxml:CT_PageBorders_top"/>
+ <element name="left" tokenid="ooxml:CT_PageBorders_left"/>
+ <element name="bottom" tokenid="ooxml:CT_PageBorders_bottom"/>
+ <element name="right" tokenid="ooxml:CT_PageBorders_right"/>
+ <attribute name="zOrder" tokenid="ooxml:CT_PageBorders_zOrder"/>
+ <attribute name="display" tokenid="ooxml:CT_PageBorders_display"/>
+ <attribute name="offsetFrom" tokenid="ooxml:CT_PageBorders_offsetFrom"/>
+ </resource>
+ <resource name="ST_ChapterSep" resource="List">
+ <value tokenid="ooxml:Value_ST_ChapterSep_hyphen">hyphen</value>
+ <value tokenid="ooxml:Value_ST_ChapterSep_period">period</value>
+ <value tokenid="ooxml:Value_ST_ChapterSep_colon">colon</value>
+ <value tokenid="ooxml:Value_ST_ChapterSep_emDash">emDash</value>
+ <value tokenid="ooxml:Value_ST_ChapterSep_enDash">enDash</value>
+ </resource>
+ <resource name="ST_LineNumberRestart" resource="List">
+ <value tokenid="0">newPage</value>
+ <value tokenid="1">newSection</value>
+ <value tokenid="2">continuous</value>
+ </resource>
+ <resource name="CT_LineNumber" resource="Properties">
+ <attribute name="countBy" tokenid="ooxml:CT_LineNumber_countBy"/>
+ <attribute name="start" tokenid="ooxml:CT_LineNumber_start"/>
+ <attribute name="distance" tokenid="ooxml:CT_LineNumber_distance"/>
+ <attribute name="restart" tokenid="ooxml:CT_LineNumber_restart"/>
+ </resource>
+ <resource name="CT_PageNumber" resource="Properties">
+ <attribute name="fmt" tokenid="ooxml:CT_PageNumber_fmt"/>
+ <attribute name="start" tokenid="ooxml:CT_PageNumber_start"/>
+ <attribute name="chapStyle" tokenid="ooxml:CT_PageNumber_chapStyle"/>
+ <attribute name="chapSep" tokenid="ooxml:CT_PageNumber_chapSep"/>
+ </resource>
+ <resource name="CT_Column" resource="Properties">
+ <attribute name="space" tokenid="ooxml:CT_Column_space"/>
+ <attribute name="w" tokenid="ooxml:CT_Column_w"/>
+ </resource>
+ <resource name="CT_Columns" resource="Properties">
+ <attribute name="equalWidth" tokenid="ooxml:CT_Columns_equalWidth"/>
+ <attribute name="space" tokenid="ooxml:CT_Columns_space"/>
+ <attribute name="num" tokenid="ooxml:CT_Columns_num"/>
+ <attribute name="sep" tokenid="ooxml:CT_Columns_sep"/>
+ <element name="col" tokenid="ooxml:CT_Columns_col"/>
+ </resource>
+ <resource name="ST_VerticalJc" resource="List">
+ <value tokenid="0">top</value>
+ <value tokenid="1">center</value>
+ <value tokenid="2">both</value>
+ <value tokenid="3">bottom</value>
+ </resource>
+ <resource name="CT_VerticalJc" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_VerticalJc_val" action="setValue"/>
+ </resource>
+ <resource name="ST_DocGrid" resource="List" generated="yes">
+ <value name="default" tokenid="ooxml:Value_wordprocessingml_ST_DocGrid_default">default</value>
+ <value name="lines" tokenid="ooxml:Value_wordprocessingml_ST_DocGrid_lines">lines</value>
+ <value name="linesAndChars" tokenid="ooxml:Value_wordprocessingml_ST_DocGrid_linesAndChars">linesAndChars</value>
+ <value name="snapToChars" tokenid="ooxml:Value_wordprocessingml_ST_DocGrid_snapToChars">snapToChars</value>
+ </resource>
+ <resource name="CT_DocGrid" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_DocGrid_type"/>
+ <attribute name="linePitch" tokenid="ooxml:CT_DocGrid_linePitch"/>
+ <attribute name="charSpace" tokenid="ooxml:CT_DocGrid_charSpace"/>
+ </resource>
+ <resource name="ST_HdrFtr" resource="List">
+ <value tokenid="ooxml:Value_ST_HrdFtr_even">even</value>
+ <value tokenid="ooxml:Value_ST_HrdFtr_default">default</value>
+ <value tokenid="ooxml:Value_ST_HrdFtr_first">first</value>
+ </resource>
+ <resource name="ST_FtnEdn" resource="List" generated="yes">
+ <value name="normal" tokenid="ooxml:Value_wordprocessingml_ST_FtnEdn_normal">normal</value>
+ <value name="separator" tokenid="ooxml:Value_wordprocessingml_ST_FtnEdn_separator">separator</value>
+ <value name="continuationSeparator" tokenid="ooxml:Value_wordprocessingml_ST_FtnEdn_continuationSeparator">continuationSeparator</value>
+ <value name="continuationNotice" tokenid="ooxml:Value_wordprocessingml_ST_FtnEdn_continuationNotice">continuationNotice</value>
+ </resource>
+ <resource xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" name="CT_HdrFtrRef" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_HdrFtrRef_type"/>
+ <attribute name="r:id" tokenid="ooxml:CT_HdrFtrRef_id"/>
+ <action name="end" action="handleHdrFtr"/>
+ </resource>
+ <resource name="EG_HdrFtrReferences" resource="Properties">
+ <element name="headerReference" tokenid="ooxml:EG_HdrFtrReferences_headerReference"/>
+ <element name="footerReference" tokenid="ooxml:EG_HdrFtrReferences_footerReference"/>
+ </resource>
+ <resource name="CT_HdrFtr" resource="Stream"/>
+ <resource name="EG_SectPrContents" resource="Properties">
+ <element name="bidi" tokenid="ooxml:EG_SectPrContents_bidi"/>
+ <element name="cols" tokenid="ooxml:EG_SectPrContents_cols"/>
+ <element name="docGrid" tokenid="ooxml:EG_SectPrContents_docGrid"/>
+ <element name="endnotePr" tokenid="ooxml:EG_SectPrContents_endnotePr"/>
+ <element name="footnotePr" tokenid="ooxml:EG_SectPrContents_footnotePr"/>
+ <element name="formProt" tokenid="ooxml:EG_SectPrContents_formProt"/>
+ <element name="lnNumType" tokenid="ooxml:EG_SectPrContents_lnNumType"/>
+ <element name="noEndnote" tokenid="ooxml:EG_SectPrContents_noEndnote"/>
+ <element name="paperSrc" tokenid="ooxml:EG_SectPrContents_paperSrc"/>
+ <element name="pgBorders" tokenid="ooxml:EG_SectPrContents_pgBorders"/>
+ <element name="pgMar" tokenid="ooxml:EG_SectPrContents_pgMar"/>
+ <element name="pgNumType" tokenid="ooxml:EG_SectPrContents_pgNumType"/>
+ <element name="pgSz" tokenid="ooxml:EG_SectPrContents_pgSz"/>
+ <element name="printerSettings" tokenid="ooxml:EG_SectPrContents_printerSettings"/>
+ <element name="rtlGutter" tokenid="ooxml:EG_SectPrContents_rtlGutter"/>
+ <element name="textDirection" tokenid="ooxml:EG_SectPrContents_textDirection"/>
+ <element name="titlePg" tokenid="ooxml:EG_SectPrContents_titlePg"/>
+ <element name="type" tokenid="sprm:SBkc"/>
+ <element name="vAlign" tokenid="ooxml:EG_SectPrContents_vAlign"/>
+ </resource>
+ <resource name="CT_SectPrBase" resource="Properties"/>
+ <resource name="CT_SectPr" resource="Properties">
+ <element name="sectPrChange" tokenid="ooxml:CT_SectPr_sectPrChange"/>
+ <action name="start" action="setLastParagraphInSection"/>
+ </resource>
+ <resource name="ST_BrType" resource="List">
+ <value tokenid="ooxml:Value_ST_BrType_column">column</value>
+ <value tokenid="ooxml:Value_ST_BrType_page">page</value>
+ <value tokenid="ooxml:Value_ST_BrType_textWrapping">textWrapping</value>
+ </resource>
+ <resource name="ST_BrClear" resource="List">
+ <value tokenid="ooxml:Value_ST_BrClear_none">none</value>
+ <value tokenid="ooxml:Value_ST_BrClear_left">left</value>
+ <value tokenid="ooxml:Value_ST_BrClear_right">right</value>
+ <value tokenid="ooxml:Value_ST_BrClear_all">all</value>
+ </resource>
+ <resource name="CT_Br" resource="Properties">
+ <attribute name="type" tokenid="ooxml:CT_Br_type"/>
+ <attribute name="clear" tokenid="ooxml:CT_Br_clear"/>
+ <action name="end" action="handleBreak"/>
+ </resource>
+ <resource name="ST_PTabAlignment" resource="List">
+ <value tokenid="ooxml:Value_ST_PTabAlignment_left">left</value>
+ <value tokenid="ooxml:Value_ST_PTabAlignment_center">center</value>
+ <value tokenid="ooxml:Value_ST_PTabAlignment_right">right</value>
+ </resource>
+ <resource name="ST_PTabRelativeTo" resource="List">
+ <value tokenid="ooxml:Value_ST_PTabRelativeTo_margin">margin</value>
+ <value tokenid="ooxml:Value_ST_PTabRelativeTo_indent">indent</value>
+ </resource>
+ <resource name="ST_PTabLeader" resource="List">
+ <value tokenid="ooxml:Value_ST_PTabLeader_none">none</value>
+ <value tokenid="ooxml:Value_ST_PTabLeader_dot">dot</value>
+ <value tokenid="ooxml:Value_ST_PTabLeader_hyphen">hyphen</value>
+ <value tokenid="ooxml:Value_ST_PTabLeader_underscore">underscore</value>
+ <value tokenid="ooxml:Value_ST_PTabLeader_middleDot">middleDot</value>
+ </resource>
+ <resource name="CT_PTab" resource="Stream">
+ <attribute name="alignment" tokenid="ooxml:CT_PTab_alignment"/>
+ <attribute name="relativeTo" tokenid="ooxml:CT_PTab_relativeTo"/>
+ <attribute name="leader" tokenid="ooxml:CT_PTab_leader"/>
+ <action name="end" action="tab"/>
+ </resource>
+ <resource name="CT_Sym" resource="Properties">
+ <attribute name="font" tokenid="ooxml:CT_Sym_font"/>
+ <attribute name="char" tokenid="ooxml:CT_Sym_char"/>
+ </resource>
+ <resource name="ST_ProofErr" resource="List" generated="yes">
+ <value name="spellStart" tokenid="ooxml:Value_wordprocessingml_ST_ProofErr_spellStart">spellStart</value>
+ <value name="spellEnd" tokenid="ooxml:Value_wordprocessingml_ST_ProofErr_spellEnd">spellEnd</value>
+ <value name="gramStart" tokenid="ooxml:Value_wordprocessingml_ST_ProofErr_gramStart">gramStart</value>
+ <value name="gramEnd" tokenid="ooxml:Value_wordprocessingml_ST_ProofErr_gramEnd">gramEnd</value>
+ </resource>
+ <resource name="ST_EdGrp" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_none">none</value>
+ <value name="everyone" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_everyone">everyone</value>
+ <value name="administrators" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_administrators">administrators</value>
+ <value name="contributors" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_contributors">contributors</value>
+ <value name="editors" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_editors">editors</value>
+ <value name="owners" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_owners">owners</value>
+ <value name="current" tokenid="ooxml:Value_wordprocessingml_ST_EdGrp_current">current</value>
+ </resource>
+ <resource name="CT_Text" resource="Stream">
+ <attribute name="xml:space" tokenid="ooxml:CT_Text_space"/>
+ <action name="characters" action="text"/>
+ </resource>
+ <resource name="CT_FtnEdnRefChar" resource="Stream">
+ <action name="end" action="ftnednref"/>
+ </resource>
+ <resource name="CT_FtnEdnSep" resource="Stream">
+ <action name="end" action="ftnednsep"/>
+ </resource>
+ <resource name="CT_FtnEdnCont" resource="Stream">
+ <action name="end" action="ftnedncont"/>
+ </resource>
+ <resource name="CT_PgNum" resource="Stream">
+ <action name="end" action="pgNum"/>
+ </resource>
+ <resource name="CT_Cr" resource="Stream">
+ <action name="end" action="endOfParagraph"/>
+ </resource>
+ <resource name="CT_Tab" resource="Stream">
+ <action name="end" action="tab"/>
+ </resource>
+ <resource name="EG_RunInnerContent" resource="Stream">
+ <element name="br" tokenid="ooxml:EG_RunInnerContent_br"/>
+ <element name="t" tokenid="ooxml:EG_RunInnerContent_t"/>
+ <element name="delText" tokenid="ooxml:EG_RunInnerContent_delText"/>
+ <element name="instrText" tokenid="ooxml:EG_RunInnerContent_instrText"/>
+ <element name="delInstrText" tokenid="ooxml:EG_RunInnerContent_delInstrText"/>
+ <element name="noBreakHyphen" tokenid="ooxml:EG_RunInnerContent_noBreakHyphen"/>
+ <element name="softHyphen" tokenid="ooxml:EG_RunInnerContent_softHyphen"/>
+ <element name="dayShort" tokenid="ooxml:EG_RunInnerContent_dayShort"/>
+ <element name="monthShort" tokenid="ooxml:EG_RunInnerContent_monthShort"/>
+ <element name="yearShort" tokenid="ooxml:EG_RunInnerContent_yearShort"/>
+ <element name="dayLong" tokenid="ooxml:EG_RunInnerContent_dayLong"/>
+ <element name="monthLong" tokenid="ooxml:EG_RunInnerContent_monthLong"/>
+ <element name="yearLong" tokenid="ooxml:EG_RunInnerContent_yearLong"/>
+ <element name="annotationRef" tokenid="ooxml:EG_RunInnerContent_annotationRef"/>
+ <element name="footnoteRef" tokenid="ooxml:EG_RunInnerContent_footnoteRef"/>
+ <element name="endnoteRef" tokenid="ooxml:EG_RunInnerContent_endnoteRef"/>
+ <element name="separator" tokenid="ooxml:EG_RunInnerContent_separator"/>
+ <element name="continuationSeparator" tokenid="ooxml:EG_RunInnerContent_continuationSeparator"/>
+ <element name="sym" tokenid="ooxml:EG_RunInnerContent_sym"/>
+ <element name="pgNum" tokenid="ooxml:EG_RunInnerContent_pgNum"/>
+ <element name="cr" tokenid="ooxml:EG_RunInnerContent_cr"/>
+ <element name="tab" tokenid="ooxml:EG_RunInnerContent_tab"/>
+ <element name="object" tokenid="ooxml:EG_RunInnerContent_object"/>
+ <element name="pict" tokenid="ooxml:EG_RunInnerContent_pict"/>
+ <element name="fldChar" tokenid="ooxml:EG_RunInnerContent_fldChar"/>
+ <element name="ruby" tokenid="ooxml:EG_RunInnerContent_ruby"/>
+ <element name="footnoteReference" tokenid="ooxml:EG_RunInnerContent_footnoteReference"/>
+ <element name="endnoteReference" tokenid="ooxml:EG_RunInnerContent_endnoteReference"/>
+ <element name="commentReference" tokenid="ooxml:EG_RunInnerContent_commentReference"/>
+ <element name="drawing" tokenid="ooxml:EG_RunInnerContent_drawing"/>
+ <element name="ptab" tokenid="ooxml:EG_RunInnerContent_ptab"/>
+ <element name="lastRenderedPageBreak" tokenid="ooxml:EG_RunInnerContent_lastRenderedPageBreak"/>
+ </resource>
+ <resource name="CT_R" resource="Stream">
+ <action name="start" action="startCharacterGroup"/>
+ </resource>
+ <resource name="ST_Hint" resource="List">
+ <value tokenid="ooxml:Value_ST_Hint_default">default</value>
+ <value tokenid="ooxml:Value_ST_Hint_eastAsia">eastAsia</value>
+ <value tokenid="ooxml:Value_ST_Hint_cs">cs</value>
+ </resource>
+ <resource name="ST_Theme" resource="List">
+ <value tokenid="ooxml:Value_ST_Theme_majorEastAsia">majorEastAsia</value>
+ <value tokenid="ooxml:Value_ST_Theme_majorBidi">majorBidi</value>
+ <value tokenid="ooxml:Value_ST_Theme_majorAscii">majorAscii</value>
+ <value tokenid="ooxml:Value_ST_Theme_majorHAnsi">majorHAnsi</value>
+ <value tokenid="ooxml:Value_ST_Theme_minorEastAsia">minorEastAsia</value>
+ <value tokenid="ooxml:Value_ST_Theme_minorBidi">minorBidi</value>
+ <value tokenid="ooxml:Value_ST_Theme_minorAscii">minorAscii</value>
+ <value tokenid="ooxml:Value_ST_Theme_minorHAnsi">minorHAnsi</value>
+ </resource>
+ <resource name="CT_Fonts" resource="Properties">
+ <attribute name="hint" tokenid="ooxml:CT_Fonts_hint"/>
+ <attribute name="ascii" tokenid="ooxml:CT_Fonts_ascii"/>
+ <attribute name="hAnsi" tokenid="ooxml:CT_Fonts_hAnsi"/>
+ <attribute name="eastAsia" tokenid="ooxml:CT_Fonts_eastAsia"/>
+ <attribute name="cs" tokenid="ooxml:CT_Fonts_cs"/>
+ <attribute name="asciiTheme" tokenid="ooxml:CT_Fonts_asciiTheme"/>
+ <attribute name="hAnsiTheme" tokenid="ooxml:CT_Fonts_hAnsiTheme"/>
+ <attribute name="eastAsiaTheme" tokenid="ooxml:CT_Fonts_eastAsiaTheme"/>
+ <attribute name="cstheme" tokenid="ooxml:CT_Fonts_cstheme"/>
+ </resource>
+ <resource name="EG_RPrBase" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="rStyle" tokenid="ooxml:EG_RPrBase_rStyle"/>
+ <element name="rFonts" tokenid="ooxml:EG_RPrBase_rFonts"/>
+ <element name="b" tokenid="sprm:CFBold"/>
+ <element name="bCs" tokenid="sprm:CFBoldBi"/>
+ <element name="i" tokenid="sprm:CFItalic"/>
+ <element name="iCs" tokenid="sprm:CFItalicBi"/>
+ <element name="caps" tokenid="sprm:CFCaps"/>
+ <element name="smallCaps" tokenid="sprm:CFSmallCaps"/>
+ <element name="strike" tokenid="sprm:CFStrike"/>
+ <element name="dstrike" tokenid="sprm:CFDStrike"/>
+ <element name="outline" tokenid="sprm:CFOutline"/>
+ <element name="shadow" tokenid="sprm:CFShadow"/>
+ <element name="emboss" tokenid="sprm:CFEmboss"/>
+ <element name="imprint" tokenid="sprm:CFImprint"/>
+ <element name="noProof" tokenid="sprm:CFNoProof"/>
+ <element name="snapToGrid" tokenid="ooxml:EG_RPrBase_snapToGrid"/>
+ <element name="vanish" tokenid="sprm:CFVanish"/>
+ <element name="webHidden" tokenid="sprm:CFVanish"/>
+ <element name="color" tokenid="ooxml:EG_RPrBase_color"/>
+ <element name="spacing" tokenid="sprm:CDxaSpace"/>
+ <element name="w" tokenid="sprm:CCharScale"/>
+ <element name="kern" tokenid="sprm:CHpsKern"/>
+ <element name="position" tokenid="sprm:CHpsPos"/>
+ <element name="sz" tokenid="sprm:CHps"/>
+ <element name="szCs" tokenid="sprm:CHpsBi"/>
+ <element name="highlight" tokenid="sprm:CHighlight"/>
+ <element name="u" tokenid="ooxml:EG_RPrBase_u"/>
+ <element name="effect" tokenid="sprm:CSfxText"/>
+ <element name="bdr" tokenid="ooxml:EG_RPrBase_bdr"/>
+ <element name="shd" tokenid="sprm:CShd"/>
+ <element name="fitText" tokenid="ooxml:EG_RPrBase_fitText"/>
+ <element name="vertAlign" tokenid="ooxml:EG_RPrBase_vertAlign"/>
+ <element name="rtl" tokenid="sprm:CFBiDi"/>
+ <element name="cs" tokenid="sprm:CComplexScript"/>
+ <element name="em" tokenid="sprm:CKcd"/>
+ <element name="lang" tokenid="ooxml:EG_RPrBase_lang"/>
+ <element name="eastAsianLayout" tokenid="ooxml:EG_RPrBase_eastAsianLayout"/>
+ <element name="specVanish" tokenid="0x818"/>
+ <element name="oMath" tokenid="ooxml:EG_RPrBase_oMath"/>
+ </resource>
+ <resource name="EG_RPrContent" resource="Properties">
+ <element name="rPrChange" tokenid="ooxml:EG_RPrContent_rPrChange"/>
+ </resource>
+ <resource name="CT_RPr" resource="Properties">
+ </resource>
+ <resource name="CT_RPrOriginal" resource="Properties"/>
+ <resource name="CT_ParaRPrOriginal" resource="Properties"/>
+ <resource name="CT_ParaRPr" resource="Properties">
+ <element name="ins" tokenid="ooxml:CT_ParaRPr_ins"/>
+ <element name="del" tokenid="ooxml:CT_ParaRPr_del"/>
+ <element name="rPrChange" tokenid="ooxml:CT_ParaRPr_rPrChange"/>
+ </resource>
+ <resource name="CT_ParaTrackChange" resource="Properties">
+ <action name="start" action="tokenproperty"/>
+ <action name="start" action="propagateCharacterPropertiesAsSet" sendtokenid="ooxml:paratrackchange"/>
+ <action name="start" action="clearProps"/>
+ </resource>
+ <resource name="ST_RubyAlign" resource="List" generated="yes">
+ <value name="center" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_center">center</value>
+ <value name="distributeLetter" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_distributeLetter">distributeLetter</value>
+ <value name="distributeSpace" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_distributeSpace">distributeSpace</value>
+ <value name="left" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_left">left</value>
+ <value name="right" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_right">right</value>
+ <value name="rightVertical" tokenid="ooxml:Value_wordprocessingml_ST_RubyAlign_rightVertical">rightVertical</value>
+ </resource>
+ <resource name="CT_RubyAlign" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_RubyAlign_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_Lock" resource="List" generated="yes">
+ <value name="sdtLocked" tokenid="ooxml:Value_wordprocessingml_ST_Lock_sdtLocked">sdtLocked</value>
+ <value name="contentLocked" tokenid="ooxml:Value_wordprocessingml_ST_Lock_contentLocked">contentLocked</value>
+ <value name="unlocked" tokenid="ooxml:Value_wordprocessingml_ST_Lock_unlocked">unlocked</value>
+ <value name="sdtContentLocked" tokenid="ooxml:Value_wordprocessingml_ST_Lock_sdtContentLocked">sdtContentLocked</value>
+ </resource>
+ <resource name="CT_Lock" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Lock_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_SdtDateMappingType" resource="List" generated="yes">
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_SdtDateMappingType_text">text</value>
+ <value name="date" tokenid="ooxml:Value_wordprocessingml_ST_SdtDateMappingType_date">date</value>
+ <value name="dateTime" tokenid="ooxml:Value_wordprocessingml_ST_SdtDateMappingType_dateTime">dateTime</value>
+ </resource>
+ <resource name="CT_SdtDateMappingType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_SdtDateMappingType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_CalendarType" resource="List" generated="yes">
+ <value name="gregorian" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_gregorian">gregorian</value>
+ <value name="hijri" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_hijri">hijri</value>
+ <value name="hebrew" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_hebrew">hebrew</value>
+ <value name="taiwan" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_taiwan">taiwan</value>
+ <value name="japan" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_japan">japan</value>
+ <value name="thai" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_thai">thai</value>
+ <value name="korea" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_korea">korea</value>
+ <value name="saka" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_saka">saka</value>
+ <value name="gregorianXlitEnglish" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_gregorianXlitEnglish">gregorianXlitEnglish</value>
+ <value name="gregorianXlitFrench" tokenid="ooxml:Value_wordprocessingml_ST_CalendarType_gregorianXlitFrench">gregorianXlitFrench</value>
+ </resource>
+ <resource name="CT_CalendarType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_CalendarType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_SdtContentRun" resource="Properties"/>
+ <resource name="CT_Attr" resource="Properties">
+ <attribute name="uri" tokenid="ooxml:CT_Attr_uri"/>
+ <attribute name="name" tokenid="ooxml:CT_Attr_name"/>
+ <attribute name="val" tokenid="ooxml:CT_Attr_val"/>
+ </resource>
+ <resource name="CT_CustomXmlRun" resource="Properties">
+ <element name="customXmlPr" tokenid="ooxml:CT_CustomXmlRun_customXmlPr"/>
+ <attribute name="uri" tokenid="ooxml:CT_CustomXmlRun_uri"/>
+ <attribute name="element" tokenid="ooxml:CT_CustomXmlRun_element"/>
+ </resource>
+ <resource name="CT_SmartTagRun" resource="Properties">
+ <element name="smartTagPr" tokenid="ooxml:CT_SmartTagRun_smartTagPr"/>
+ <attribute name="uri" tokenid="ooxml:CT_SmartTagRun_uri"/>
+ <attribute name="element" tokenid="ooxml:CT_SmartTagRun_element"/>
+ </resource>
+ <resource name="EG_PContent" resource="Properties">
+ <element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/>
+ <element name="hyperlink" tokenid="ooxml:EG_PContent_hyperlink"/>
+ <element name="subDoc" tokenid="ooxml:EG_PContent_subDoc"/>
+ </resource>
+ <resource name="CT_P" resource="Stream">
+ <action name="start" action="handleLastParagraphInSection"/>
+ <action name="start" action="startParagraphGroup"/>
+ <action name="start" action="setHandle"/>
+ <action name="start" action="sendTableDepth"/>
+ <action name="end" action="endOfParagraph"/>
+ </resource>
+ <resource name="ST_TblWidth" resource="List">
+ <value tokenid="ooxml:Value_ST_TblWidth_nil">nil</value>
+ <value tokenid="ooxml:Value_ST_TblWidth_pct">pct</value>
+ <value tokenid="ooxml:Value_ST_TblWidth_dxa">dxa</value>
+ <value tokenid="ooxml:Value_ST_TblWidth_auto">auto</value>
+ </resource>
+ <resource name="CT_Height" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_Height_val"/>
+ <attribute name="hRule" tokenid="ooxml:CT_Height_hRule"/>
+ </resource>
+ <resource name="CT_TblWidth" resource="Properties">
+ <attribute name="w" tokenid="ooxml:CT_TblWidth_w"/>
+ <attribute name="type" tokenid="ooxml:CT_TblWidth_type"/>
+ </resource>
+ <resource name="CT_TblGridCol" resource="Value">
+ <attribute name="w" tokenid="ooxml:CT_TblGridCol_w" action="setValue"/>
+ <action name="start" action="setDefaultIntegerValue"/>
+ </resource>
+ <resource name="CT_TblGridBase" resource="Properties">
+ <element name="gridCol" tokenid="ooxml:CT_TblGridBase_gridCol"/>
+ </resource>
+ <resource name="CT_TblGrid" resource="Properties">
+ <element name="tblGridChange" tokenid="ooxml:CT_TblGrid_tblGridChange"/>
+ <action name="end" action="propagateTableProperties"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_TcBorders" resource="Properties">
+ <kind name="table"/>
+ <element name="top" tokenid="ooxml:CT_TcBorders_top"/>
+ <element name="left" tokenid="ooxml:CT_TcBorders_left"/>
+ <element name="bottom" tokenid="ooxml:CT_TcBorders_bottom"/>
+ <element name="right" tokenid="ooxml:CT_TcBorders_right"/>
+ <element name="insideH" tokenid="ooxml:CT_TcBorders_insideH"/>
+ <element name="insideV" tokenid="ooxml:CT_TcBorders_insideV"/>
+ <element name="tl2br" tokenid="ooxml:CT_TcBorders_tl2br"/>
+ <element name="tr2bl" tokenid="ooxml:CT_TcBorders_tr2bl"/>
+ </resource>
+ <resource name="CT_TcMar" resource="Properties">
+ <kind name="table"/>
+ <element name="top" tokenid="ooxml:CT_TcMar_top"/>
+ <element name="left" tokenid="ooxml:CT_TcMar_left"/>
+ <element name="bottom" tokenid="ooxml:CT_TcMar_bottom"/>
+ <element name="right" tokenid="ooxml:CT_TcMar_right"/>
+ </resource>
+ <resource name="ST_Merge" resource="List">
+ <value tokenid="ooxml:Value_ST_Merge_continue">continue</value>
+ <value tokenid="ooxml:Value_ST_Merge_restart">restart</value>
+ <default tokenid="ooxml:Value_ST_Merge_continue"/>
+ </resource>
+ <resource name="CT_VMerge" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_VMerge_val" action="setValue"/>
+ </resource>
+ <resource name="CT_HMerge" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_HMerge_val" action="setValue"/>
+ </resource>
+ <resource name="CT_TcPrBase" resource="Properties">
+ <kind name="table"/>
+ <element name="cnfStyle" tokenid="ooxml:CT_TcPrBase_cnfStyle"/>
+ <element name="tcW" tokenid="ooxml:CT_TcPrBase_tcW"/>
+ <element name="gridSpan" tokenid="ooxml:CT_TcPrBase_gridSpan"/>
+ <element name="hMerge" tokenid="ooxml:CT_TcPrBase_hMerge"/>
+ <element name="vMerge" tokenid="ooxml:CT_TcPrBase_vMerge"/>
+ <element name="tcBorders" tokenid="ooxml:CT_TcPrBase_tcBorders"/>
+ <element name="shd" tokenid="ooxml:CT_TcPrBase_shd"/>
+ <element name="noWrap" tokenid="ooxml:CT_TcPrBase_noWrap"/>
+ <element name="tcMar" tokenid="ooxml:CT_TcPrBase_tcMar"/>
+ <element name="textDirection" tokenid="ooxml:CT_TcPrBase_textDirection"/>
+ <element name="tcFitText" tokenid="ooxml:CT_TcPrBase_tcFitText"/>
+ <element name="vAlign" tokenid="ooxml:CT_TcPrBase_vAlign"/>
+ <element name="hideMark" tokenid="ooxml:CT_TcPrBase_hideMark"/>
+ </resource>
+ <resource name="CT_TcPr" resource="Properties">
+ <element name="tcPrChange" tokenid="ooxml:CT_TcPr_tcPrChange"/>
+ <action name="end" action="propagateCellProperties"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_TcPrInner" resource="Properties"/>
+ <resource name="CT_Tc" resource="TextTableCell">
+ <action name="start" action="startCell"/>
+ <action name="end" action="endCell"/>
+ <action name="end" action="sendCellProperties"/>
+ <action name="end" action="endParagraphGroup"/>
+ </resource>
+ <resource name="ST_Cnf" resource="String" generated="yes"/>
+ <resource name="CT_Cnf" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_Cnf_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_TrPrBase" resource="Properties">
+ <kind name="table"/>
+ <element name="cnfStyle" tokenid="ooxml:CT_TrPrBase_cnfStyle"/>
+ <element name="divId" tokenid="ooxml:CT_TrPrBase_divId"/>
+ <element name="gridBefore" tokenid="ooxml:CT_TrPrBase_gridBefore"/>
+ <element name="gridAfter" tokenid="ooxml:CT_TrPrBase_gridAfter"/>
+ <element name="wBefore" tokenid="ooxml:CT_TrPrBase_wBefore"/>
+ <element name="wAfter" tokenid="ooxml:CT_TrPrBase_wAfter"/>
+ <element name="cantSplit" tokenid="sprm:TCantSplit"/>
+ <element name="trHeight" tokenid="ooxml:CT_TrPrBase_trHeight"/>
+ <element name="tblHeader" tokenid="ooxml:CT_TrPrBase_tblHeader"/>
+ <element name="tblCellSpacing" tokenid="ooxml:CT_TrPrBase_tblCellSpacing"/>
+ <element name="jc" tokenid="ooxml:CT_TrPrBase_jc"/>
+ <element name="hidden" tokenid="ooxml:CT_TrPrBase_hidden"/>
+ </resource>
+ <resource name="CT_TrPr" resource="Properties">
+ <kind name="table"/>
+ <element name="ins" tokenid="ooxml:CT_TrPr_ins"/>
+ <element name="del" tokenid="ooxml:CT_TrPr_del"/>
+ <element name="trPrChange" tokenid="ooxml:CT_TrPr_trPrChange"/>
+ <action name="end" action="propagateRowProperties"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_Row" resource="TextTableRow">
+ <action name="start" action="startRow"/>
+ <action name="end" action="sendRowProperties"/>
+ <action name="end" action="sendTableProperties"/>
+ <action name="end" action="endRow"/>
+ </resource>
+ <resource name="ST_TblLayoutType" resource="List" generated="yes">
+ <value name="fixed" tokenid="ooxml:Value_wordprocessingml_ST_TblLayoutType_fixed">fixed</value>
+ <value name="autofit" tokenid="ooxml:Value_wordprocessingml_ST_TblLayoutType_autofit">autofit</value>
+ </resource>
+ <resource name="ST_TblOverlap" resource="List">
+ <value tokenid="ooxml:Value_ST_TblOverlap_never">never</value>
+ <value tokenid="ooxml:Value_ST_TblOverlap_overlap">overlap</value>
+ </resource>
+ <resource name="CT_TblOverlap" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_TblOverlap_val" action="setValue"/>
+ </resource>
+ <resource name="CT_TblCellMar" resource="Properties">
+ <element name="top" tokenid="ooxml:CT_TblCellMar_top"/>
+ <element name="left" tokenid="ooxml:CT_TblCellMar_left"/>
+ <element name="bottom" tokenid="ooxml:CT_TblCellMar_bottom"/>
+ <element name="right" tokenid="ooxml:CT_TblCellMar_right"/>
+ </resource>
+ <resource name="CT_TblBorders" resource="Properties">
+ <kind name="table"/>
+ <element name="top" tokenid="ooxml:CT_TblBorders_top"/>
+ <element name="left" tokenid="ooxml:CT_TblBorders_left"/>
+ <element name="bottom" tokenid="ooxml:CT_TblBorders_bottom"/>
+ <element name="right" tokenid="ooxml:CT_TblBorders_right"/>
+ <element name="insideH" tokenid="ooxml:CT_TblBorders_insideH"/>
+ <element name="insideV" tokenid="ooxml:CT_TblBorders_insideV"/>
+ </resource>
+ <resource name="CT_TblPrBase" resource="Properties">
+ <kind name="table"/>
+ <element name="tblStyle" tokenid="ooxml:CT_TblPrBase_tblStyle"/>
+ <element name="tblpPr" tokenid="ooxml:CT_TblPrBase_tblpPr"/>
+ <element name="tblOverlap" tokenid="ooxml:CT_TblPrBase_tblOverlap"/>
+ <element name="bidiVisual" tokenid="ooxml:CT_TblPrBase_bidiVisual"/>
+ <element name="tblStyleRowBandSize" tokenid="ooxml:CT_TblPrBase_tblStyleRowBandSize"/>
+ <element name="tblStyleColBandSize" tokenid="ooxml:CT_TblPrBase_tblStyleColBandSize"/>
+ <element name="tblW" tokenid="ooxml:CT_TblPrBase_tblW"/>
+ <element name="jc" tokenid="ooxml:CT_TblPrBase_jc"/>
+ <element name="tblCellSpacing" tokenid="ooxml:CT_TblPrBase_tblCellSpacing"/>
+ <element name="tblInd" tokenid="ooxml:CT_TblPrBase_tblInd"/>
+ <element name="tblBorders" tokenid="ooxml:CT_TblPrBase_tblBorders"/>
+ <element name="shd" tokenid="ooxml:CT_TblPrBase_shd"/>
+ <element name="tblLayout" tokenid="ooxml:CT_TblPrBase_tblLayout"/>
+ <element name="tblCellMar" tokenid="ooxml:CT_TblPrBase_tblCellMar"/>
+ <element name="tblLook" tokenid="ooxml:CT_TblPrBase_tblLook"/>
+ </resource>
+ <resource name="CT_TblPr" resource="Properties">
+ <kind name="table"/>
+ <element name="tblPrChange" tokenid="ooxml:CT_TblPr_tblPrChange"/>
+ <action name="end" action="propagateTableProperties"/>
+ <action name="end" action="clearProps"/>
+ </resource>
+ <resource name="CT_Tbl" resource="TextTable"/>
+ <resource name="ST_FtnPos" resource="List">
+ <value tokenid="ooxml:Value_ST_FtnPos_pageBottom">pageBottom</value>
+ <value tokenid="ooxml:Value_ST_FtnPos_beneathText">beneathText</value>
+ <value tokenid="ooxml:Value_ST_FtnPos_sectEnd">sectEnd</value>
+ <value tokenid="ooxml:Value_ST_FtnPos_docEnd">docEnd</value>
+ </resource>
+ <resource name="CT_FtnPos" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_FtnPos_val" action="setValue"/>
+ </resource>
+ <resource name="ST_EdnPos" resource="List">
+ <value tokenid="ooxml:Value_ST_EdnPos_sectEnd">sectEnd</value>
+ <value tokenid="ooxml:Value_ST_EdnPos_docEnd">docEnd</value>
+ </resource>
+ <resource name="CT_EdnPos" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_EdnPos_val" action="setValue"/>
+ </resource>
+ <resource name="CT_NumFmt" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_NumFmt_val" action="setValue"/>
+ </resource>
+ <resource name="ST_RestartNumber" resource="List">
+ <value tokenid="ooxml:Value_ST_RestartNumber_continuous">continuous</value>
+ <value tokenid="ooxml:Value_ST_RestartNumber_eachSect">eachSect</value>
+ <value tokenid="ooxml:Value_ST_RestartNumber_eachPage">eachPage</value>
+ </resource>
+ <resource name="CT_NumRestart" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_NumRestart_val" action="setValue"/>
+ </resource>
+ <resource name="CT_FtnEdnRef" resource="Properties">
+ <attribute name="customMarkFollows" tokenid="ooxml:CT_FtnEdnRef_customMarkFollows"/>
+ <attribute name="id" tokenid="ooxml:CT_FtnEdnRef_id" action="setXNoteId"/>
+ <action name="end" action="handleXNotes"/>
+ </resource>
+ <resource name="CT_FtnEdnSepRef" resource="Properties">
+ <attribute name="id" tokenid="ooxml:CT_FtnEdnSepRef_id"/>
+ </resource>
+ <resource name="CT_FtnEdn" resource="XNote">
+ <attribute name="type" tokenid="ooxml:CT_FtnEdn_type"/>
+ <attribute name="id" tokenid="ooxml:CT_FtnEdn_id" action="checkId"/>
+ <action name="start" action="propagateCharacterProperties"/>
+ <action name="end" action="endSectionGroup"/>
+ </resource>
+ <resource name="CT_CommentRef" resource="Properties">
+ <action name="end" action="handleComment"/>
+ </resource>
+ <resource name="EG_FtnEdnNumProps" resource="Properties">
+ <element name="numStart" tokenid="ooxml:EG_FtnEdnNumProps_numStart"/>
+ <element name="numRestart" tokenid="ooxml:EG_FtnEdnNumProps_numRestart"/>
+ </resource>
+ <resource name="CT_FtnProps" resource="Properties">
+ <element name="pos" tokenid="ooxml:CT_FtnProps_pos"/>
+ <element name="numFmt" tokenid="ooxml:CT_FtnProps_numFmt"/>
+ </resource>
+ <resource name="CT_EdnProps" resource="Properties">
+ <element name="pos" tokenid="ooxml:CT_EdnProps_pos"/>
+ <element name="numFmt" tokenid="ooxml:CT_EdnProps_numFmt"/>
+ </resource>
+ <resource name="CT_FtnDocProps" resource="Properties">
+ <element name="footnote" tokenid="ooxml:CT_FtnDocProps_footnote"/>
+ </resource>
+ <resource name="CT_EdnDocProps" resource="Properties">
+ <element name="endnote" tokenid="ooxml:CT_EdnDocProps_endnote"/>
+ </resource>
+ <resource name="ST_MailMergeSourceType" resource="List" generated="yes">
+ <value name="database" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_database">database</value>
+ <value name="addressBook" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_addressBook">addressBook</value>
+ <value name="document1" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_document1">document1</value>
+ <value name="document2" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_document2">document2</value>
+ <value name="text" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_text">text</value>
+ <value name="email" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_email">email</value>
+ <value name="native" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_native">native</value>
+ <value name="legacy" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_legacy">legacy</value>
+ <value name="master" tokenid="ooxml:Value_wordprocessingml_ST_MailMergeSourceType_master">master</value>
+ </resource>
+ <resource name="CT_MailMergeSourceType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_MailMergeSourceType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_MailMerge" resource="Properties">
+ <element name="mainDocumentType" tokenid="ooxml:CT_MailMerge_mainDocumentType"/>
+ <element name="linkToQuery" tokenid="ooxml:CT_MailMerge_linkToQuery"/>
+ <element name="dataType" tokenid="ooxml:CT_MailMerge_dataType"/>
+ <element name="connectString" tokenid="ooxml:CT_MailMerge_connectString"/>
+ <element name="query" tokenid="ooxml:CT_MailMerge_query"/>
+ <element name="dataSource" tokenid="ooxml:CT_MailMerge_dataSource"/>
+ <element name="headerSource" tokenid="ooxml:CT_MailMerge_headerSource"/>
+ <element name="doNotSuppressBlankLines" tokenid="ooxml:CT_MailMerge_doNotSuppressBlankLines"/>
+ <element name="destination" tokenid="ooxml:CT_MailMerge_destination"/>
+ <element name="addressFieldName" tokenid="ooxml:CT_MailMerge_addressFieldName"/>
+ <element name="mailSubject" tokenid="ooxml:CT_MailMerge_mailSubject"/>
+ <element name="mailAsAttachment" tokenid="ooxml:CT_MailMerge_mailAsAttachment"/>
+ <element name="viewMergedData" tokenid="ooxml:CT_MailMerge_viewMergedData"/>
+ <element name="activeRecord" tokenid="ooxml:CT_MailMerge_activeRecord"/>
+ <element name="checkErrors" tokenid="ooxml:CT_MailMerge_checkErrors"/>
+ <element name="odso" tokenid="ooxml:CT_MailMerge_odso"/>
+ </resource>
+ <resource name="ST_TargetScreenSz" resource="List" generated="yes">
+ <value name="544x376" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_544x376">544x376</value>
+ <value name="640x480" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_640x480">640x480</value>
+ <value name="720x512" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_720x512">720x512</value>
+ <value name="800x600" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_800x600">800x600</value>
+ <value name="1024x768" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1024x768">1024x768</value>
+ <value name="1152x882" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1152x882">1152x882</value>
+ <value name="1152x900" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1152x900">1152x900</value>
+ <value name="1280x1024" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1280x1024">1280x1024</value>
+ <value name="1600x1200" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1600x1200">1600x1200</value>
+ <value name="1800x1440" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1800x1440">1800x1440</value>
+ <value name="1920x1200" tokenid="ooxml:Value_wordprocessingml_ST_TargetScreenSz_1920x1200">1920x1200</value>
+ </resource>
+ <resource name="CT_TargetScreenSz" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_TargetScreenSz_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_Compat" resource="Properties">
+ <element name="useSingleBorderforContiguousCells" tokenid="ooxml:CT_Compat_useSingleBorderforContiguousCells"/>
+ <element name="wpJustification" tokenid="ooxml:CT_Compat_wpJustification"/>
+ <element name="noTabHangInd" tokenid="ooxml:CT_Compat_noTabHangInd"/>
+ <element name="noLeading" tokenid="ooxml:CT_Compat_noLeading"/>
+ <element name="spaceForUL" tokenid="ooxml:CT_Compat_spaceForUL"/>
+ <element name="noColumnBalance" tokenid="ooxml:CT_Compat_noColumnBalance"/>
+ <element name="balanceSingleByteDoubleByteWidth" tokenid="ooxml:CT_Compat_balanceSingleByteDoubleByteWidth"/>
+ <element name="noExtraLineSpacing" tokenid="ooxml:CT_Compat_noExtraLineSpacing"/>
+ <element name="doNotLeaveBackslashAlone" tokenid="ooxml:CT_Compat_doNotLeaveBackslashAlone"/>
+ <element name="ulTrailSpace" tokenid="ooxml:CT_Compat_ulTrailSpace"/>
+ <element name="doNotExpandShiftReturn" tokenid="ooxml:CT_Compat_doNotExpandShiftReturn"/>
+ <element name="spacingInWholePoints" tokenid="ooxml:CT_Compat_spacingInWholePoints"/>
+ <element name="lineWrapLikeWord6" tokenid="ooxml:CT_Compat_lineWrapLikeWord6"/>
+ <element name="printBodyTextBeforeHeader" tokenid="ooxml:CT_Compat_printBodyTextBeforeHeader"/>
+ <element name="printColBlack" tokenid="ooxml:CT_Compat_printColBlack"/>
+ <element name="wpSpaceWidth" tokenid="ooxml:CT_Compat_wpSpaceWidth"/>
+ <element name="showBreaksInFrames" tokenid="ooxml:CT_Compat_showBreaksInFrames"/>
+ <element name="subFontBySize" tokenid="ooxml:CT_Compat_subFontBySize"/>
+ <element name="suppressBottomSpacing" tokenid="ooxml:CT_Compat_suppressBottomSpacing"/>
+ <element name="suppressTopSpacing" tokenid="ooxml:CT_Compat_suppressTopSpacing"/>
+ <element name="suppressSpacingAtTopOfPage" tokenid="ooxml:CT_Compat_suppressSpacingAtTopOfPage"/>
+ <element name="suppressTopSpacingWP" tokenid="ooxml:CT_Compat_suppressTopSpacingWP"/>
+ <element name="suppressSpBfAfterPgBrk" tokenid="ooxml:CT_Compat_suppressSpBfAfterPgBrk"/>
+ <element name="swapBordersFacingPages" tokenid="ooxml:CT_Compat_swapBordersFacingPages"/>
+ <element name="convMailMergeEsc" tokenid="ooxml:CT_Compat_convMailMergeEsc"/>
+ <element name="truncateFontHeightsLikeWP6" tokenid="ooxml:CT_Compat_truncateFontHeightsLikeWP6"/>
+ <element name="mwSmallCaps" tokenid="ooxml:CT_Compat_mwSmallCaps"/>
+ <element name="usePrinterMetrics" tokenid="ooxml:CT_Compat_usePrinterMetrics"/>
+ <element name="doNotSuppressParagraphBorders" tokenid="ooxml:CT_Compat_doNotSuppressParagraphBorders"/>
+ <element name="wrapTrailSpaces" tokenid="ooxml:CT_Compat_wrapTrailSpaces"/>
+ <element name="footnoteLayoutLikeWW8" tokenid="ooxml:CT_Compat_footnoteLayoutLikeWW8"/>
+ <element name="shapeLayoutLikeWW8" tokenid="ooxml:CT_Compat_shapeLayoutLikeWW8"/>
+ <element name="alignTablesRowByRow" tokenid="ooxml:CT_Compat_alignTablesRowByRow"/>
+ <element name="forgetLastTabAlignment" tokenid="ooxml:CT_Compat_forgetLastTabAlignment"/>
+ <element name="adjustLineHeightInTable" tokenid="ooxml:CT_Compat_adjustLineHeightInTable"/>
+ <element name="autoSpaceLikeWord95" tokenid="ooxml:CT_Compat_autoSpaceLikeWord95"/>
+ <element name="noSpaceRaiseLower" tokenid="ooxml:CT_Compat_noSpaceRaiseLower"/>
+ <element name="doNotUseHTMLParagraphAutoSpacing" tokenid="ooxml:CT_Compat_doNotUseHTMLParagraphAutoSpacing"/>
+ <element name="layoutRawTableWidth" tokenid="ooxml:CT_Compat_layoutRawTableWidth"/>
+ <element name="layoutTableRowsApart" tokenid="ooxml:CT_Compat_layoutTableRowsApart"/>
+ <element name="useWord97LineBreakRules" tokenid="ooxml:CT_Compat_useWord97LineBreakRules"/>
+ <element name="doNotBreakWrappedTables" tokenid="ooxml:CT_Compat_doNotBreakWrappedTables"/>
+ <element name="doNotSnapToGridInCell" tokenid="ooxml:CT_Compat_doNotSnapToGridInCell"/>
+ <element name="selectFldWithFirstOrLastChar" tokenid="ooxml:CT_Compat_selectFldWithFirstOrLastChar"/>
+ <element name="applyBreakingRules" tokenid="ooxml:CT_Compat_applyBreakingRules"/>
+ <element name="doNotWrapTextWithPunct" tokenid="ooxml:CT_Compat_doNotWrapTextWithPunct"/>
+ <element name="doNotUseEastAsianBreakRules" tokenid="ooxml:CT_Compat_doNotUseEastAsianBreakRules"/>
+ <element name="useWord2002TableStyleRules" tokenid="ooxml:CT_Compat_useWord2002TableStyleRules"/>
+ <element name="growAutofit" tokenid="ooxml:CT_Compat_growAutofit"/>
+ <element name="useFELayout" tokenid="ooxml:CT_Compat_useFELayout"/>
+ <element name="useNormalStyleForList" tokenid="ooxml:CT_Compat_useNormalStyleForList"/>
+ <element name="doNotUseIndentAsNumberingTabStop" tokenid="ooxml:CT_Compat_doNotUseIndentAsNumberingTabStop"/>
+ <element name="useAltKinsokuLineBreakRules" tokenid="ooxml:CT_Compat_useAltKinsokuLineBreakRules"/>
+ <element name="allowSpaceOfSameStyleInTable" tokenid="ooxml:CT_Compat_allowSpaceOfSameStyleInTable"/>
+ <element name="doNotSuppressIndentation" tokenid="ooxml:CT_Compat_doNotSuppressIndentation"/>
+ <element name="doNotAutofitConstrainedTables" tokenid="ooxml:CT_Compat_doNotAutofitConstrainedTables"/>
+ <element name="autofitToFirstFixedWidthCell" tokenid="ooxml:CT_Compat_autofitToFirstFixedWidthCell"/>
+ <element name="underlineTabInNumList" tokenid="ooxml:CT_Compat_underlineTabInNumList"/>
+ <element name="displayHangulFixedWidth" tokenid="ooxml:CT_Compat_displayHangulFixedWidth"/>
+ <element name="splitPgBreakAndParaMark" tokenid="ooxml:CT_Compat_splitPgBreakAndParaMark"/>
+ <element name="doNotVertAlignCellWithSp" tokenid="ooxml:CT_Compat_doNotVertAlignCellWithSp"/>
+ <element name="doNotBreakConstrainedForcedTable" tokenid="ooxml:CT_Compat_doNotBreakConstrainedForcedTable"/>
+ <element name="doNotVertAlignInTxbx" tokenid="ooxml:CT_Compat_doNotVertAlignInTxbx"/>
+ <element name="useAnsiKerningPairs" tokenid="ooxml:CT_Compat_useAnsiKerningPairs"/>
+ <element name="cachedColBalance" tokenid="ooxml:CT_Compat_cachedColBalance"/>
+ </resource>
+ <resource name="CT_DocVar" resource="Properties">
+ <attribute name="name" tokenid="ooxml:CT_DocVar_name"/>
+ <attribute name="val" tokenid="ooxml:CT_DocVar_val"/>
+ </resource>
+ <resource name="CT_DocRsids" resource="Properties">
+ <element name="rsidRoot" tokenid="ooxml:CT_DocRsids_rsidRoot"/>
+ <element name="rsid" tokenid="ooxml:CT_DocRsids_rsid"/>
+ </resource>
+ <resource name="ST_CharacterSpacing" resource="List" generated="yes">
+ <value name="doNotCompress" tokenid="ooxml:Value_wordprocessingml_ST_CharacterSpacing_doNotCompress">doNotCompress</value>
+ <value name="compressPunctuation" tokenid="ooxml:Value_wordprocessingml_ST_CharacterSpacing_compressPunctuation">compressPunctuation</value>
+ <value name="compressPunctuationAndJapaneseKana" tokenid="ooxml:Value_wordprocessingml_ST_CharacterSpacing_compressPunctuationAndJapaneseKana">compressPunctuationAndJapaneseKana</value>
+ </resource>
+ <resource name="CT_CharacterSpacing" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_CharacterSpacing_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_SaveThroughXslt" resource="Properties">
+ <attribute name="r:id" tokenid="ooxml:CT_SaveThroughXslt_r_id"/>
+ <attribute name="solutionID" tokenid="ooxml:CT_SaveThroughXslt_solutionID"/>
+ </resource>
+ <resource name="CT_RPrDefault" resource="Properties">
+ <element name="rPr" tokenid="ooxml:CT_RPrDefault_rPr"/>
+ </resource>
+ <resource name="CT_PPrDefault" resource="Properties">
+ <element name="pPr" tokenid="ooxml:CT_PPrDefault_pPr"/>
+ </resource>
+ <resource name="CT_DocDefaults" resource="Properties">
+ <element name="pPrDefault" tokenid="ooxml:CT_DocDefaults_pPrDefault"/>
+ <element name="rPrDefault" tokenid="ooxml:CT_DocDefaults_rPrDefault"/>
+ </resource>
+ <resource name="ST_ColorSchemeIndex" resource="List" generated="yes">
+ <value name="dark1" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_dark1">dark1</value>
+ <value name="light1" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_light1">light1</value>
+ <value name="dark2" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_dark2">dark2</value>
+ <value name="light2" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_light2">light2</value>
+ <value name="accent1" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent1">accent1</value>
+ <value name="accent2" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent2">accent2</value>
+ <value name="accent3" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent3">accent3</value>
+ <value name="accent4" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent4">accent4</value>
+ <value name="accent5" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent5">accent5</value>
+ <value name="accent6" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_accent6">accent6</value>
+ <value name="hyperlink" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_hyperlink">hyperlink</value>
+ <value name="followedHyperlink" tokenid="ooxml:Value_wordprocessingml_ST_ColorSchemeIndex_followedHyperlink">followedHyperlink</value>
+ </resource>
+ <resource name="CT_ReadingModeInkLockDown" resource="Properties">
+ <attribute name="actualPg" tokenid="ooxml:CT_ReadingModeInkLockDown_actualPg"/>
+ <attribute name="w" tokenid="ooxml:CT_ReadingModeInkLockDown_w"/>
+ <attribute name="h" tokenid="ooxml:CT_ReadingModeInkLockDown_h"/>
+ <attribute name="fontSz" tokenid="ooxml:CT_ReadingModeInkLockDown_fontSz"/>
+ </resource>
+ <resource name="CT_WriteProtection" resource="Properties">
+ <attribute name="recommended" tokenid="ooxml:CT_WriteProtection_recommended"/>
+ </resource>
+ <resource name="CT_Settings" resource="PropertyTable" tokenid="ooxml:SETTINGS">
+ <element name="writeProtection" tokenid="ooxml:CT_Settings_writeProtection"/>
+ <element name="view" tokenid="ooxml:CT_Settings_view"/>
+ <element name="zoom" tokenid="ooxml:CT_Settings_zoom"/>
+ <element name="removePersonalInformation" tokenid="ooxml:CT_Settings_removePersonalInformation"/>
+ <element name="removeDateAndTime" tokenid="ooxml:CT_Settings_removeDateAndTime"/>
+ <element name="doNotDisplayPageBoundaries" tokenid="ooxml:CT_Settings_doNotDisplayPageBoundaries"/>
+ <element name="displayBackgroundShape" tokenid="ooxml:CT_Settings_displayBackgroundShape"/>
+ <element name="printPostScriptOverText" tokenid="ooxml:CT_Settings_printPostScriptOverText"/>
+ <element name="printFractionalCharacterWidth" tokenid="ooxml:CT_Settings_printFractionalCharacterWidth"/>
+ <element name="printFormsData" tokenid="ooxml:CT_Settings_printFormsData"/>
+ <element name="embedTrueTypeFonts" tokenid="ooxml:CT_Settings_embedTrueTypeFonts"/>
+ <element name="embedSystemFonts" tokenid="ooxml:CT_Settings_embedSystemFonts"/>
+ <element name="saveSubsetFonts" tokenid="ooxml:CT_Settings_saveSubsetFonts"/>
+ <element name="saveFormsData" tokenid="ooxml:CT_Settings_saveFormsData"/>
+ <element name="mirrorMargins" tokenid="ooxml:CT_Settings_mirrorMargins"/>
+ <element name="alignBordersAndEdges" tokenid="ooxml:CT_Settings_alignBordersAndEdges"/>
+ <element name="bordersDoNotSurroundHeader" tokenid="ooxml:CT_Settings_bordersDoNotSurroundHeader"/>
+ <element name="bordersDoNotSurroundFooter" tokenid="ooxml:CT_Settings_bordersDoNotSurroundFooter"/>
+ <element name="gutterAtTop" tokenid="ooxml:CT_Settings_gutterAtTop"/>
+ <element name="hideSpellingErrors" tokenid="ooxml:CT_Settings_hideSpellingErrors"/>
+ <element name="hideGrammaticalErrors" tokenid="ooxml:CT_Settings_hideGrammaticalErrors"/>
+ <element name="activeWritingStyle" tokenid="ooxml:CT_Settings_activeWritingStyle"/>
+ <element name="proofState" tokenid="ooxml:CT_Settings_proofState"/>
+ <element name="formsDesign" tokenid="ooxml:CT_Settings_formsDesign"/>
+ <element name="attachedTemplate" tokenid="ooxml:CT_Settings_attachedTemplate"/>
+ <element name="linkStyles" tokenid="ooxml:CT_Settings_linkStyles"/>
+ <element name="stylePaneFormatFilter" tokenid="ooxml:CT_Settings_stylePaneFormatFilter"/>
+ <element name="stylePaneSortMethod" tokenid="ooxml:CT_Settings_stylePaneSortMethod"/>
+ <element name="documentType" tokenid="ooxml:CT_Settings_documentType"/>
+ <element name="mailMerge" tokenid="ooxml:CT_Settings_mailMerge"/>
+ <element name="revisionView" tokenid="ooxml:CT_Settings_revisionView"/>
+ <element name="trackRevisions" tokenid="ooxml:CT_Settings_trackRevisions"/>
+ <element name="doNotTrackMoves" tokenid="ooxml:CT_Settings_doNotTrackMoves"/>
+ <element name="doNotTrackFormatting" tokenid="ooxml:CT_Settings_doNotTrackFormatting"/>
+ <element name="documentProtection" tokenid="ooxml:CT_Settings_documentProtection"/>
+ <element name="autoFormatOverride" tokenid="ooxml:CT_Settings_autoFormatOverride"/>
+ <element name="styleLockTheme" tokenid="ooxml:CT_Settings_styleLockTheme"/>
+ <element name="styleLockQFSet" tokenid="ooxml:CT_Settings_styleLockQFSet"/>
+ <element name="defaultTabStop" tokenid="ooxml:CT_Settings_defaultTabStop"/>
+ <element name="autoHyphenation" tokenid="ooxml:CT_Settings_autoHyphenation"/>
+ <element name="consecutiveHyphenLimit" tokenid="ooxml:CT_Settings_consecutiveHyphenLimit"/>
+ <element name="hyphenationZone" tokenid="ooxml:CT_Settings_hyphenationZone"/>
+ <element name="doNotHyphenateCaps" tokenid="ooxml:CT_Settings_doNotHyphenateCaps"/>
+ <element name="showEnvelope" tokenid="ooxml:CT_Settings_showEnvelope"/>
+ <element name="summaryLength" tokenid="ooxml:CT_Settings_summaryLength"/>
+ <element name="clickAndTypeStyle" tokenid="ooxml:CT_Settings_clickAndTypeStyle"/>
+ <element name="defaultTableStyle" tokenid="ooxml:CT_Settings_defaultTableStyle"/>
+ <element name="evenAndOddHeaders" tokenid="ooxml:CT_Settings_evenAndOddHeaders"/>
+ <element name="bookFoldRevPrinting" tokenid="ooxml:CT_Settings_bookFoldRevPrinting"/>
+ <element name="bookFoldPrinting" tokenid="ooxml:CT_Settings_bookFoldPrinting"/>
+ <element name="bookFoldPrintingSheets" tokenid="ooxml:CT_Settings_bookFoldPrintingSheets"/>
+ <element name="drawingGridHorizontalSpacing" tokenid="ooxml:CT_Settings_drawingGridHorizontalSpacing"/>
+ <element name="drawingGridVerticalSpacing" tokenid="ooxml:CT_Settings_drawingGridVerticalSpacing"/>
+ <element name="displayHorizontalDrawingGridEvery" tokenid="ooxml:CT_Settings_displayHorizontalDrawingGridEvery"/>
+ <element name="displayVerticalDrawingGridEvery" tokenid="ooxml:CT_Settings_displayVerticalDrawingGridEvery"/>
+ <element name="doNotUseMarginsForDrawingGridOrigin" tokenid="ooxml:CT_Settings_doNotUseMarginsForDrawingGridOrigin"/>
+ <element name="drawingGridHorizontalOrigin" tokenid="ooxml:CT_Settings_drawingGridHorizontalOrigin"/>
+ <element name="drawingGridVerticalOrigin" tokenid="ooxml:CT_Settings_drawingGridVerticalOrigin"/>
+ <element name="doNotShadeFormData" tokenid="ooxml:CT_Settings_doNotShadeFormData"/>
+ <element name="noPunctuationKerning" tokenid="ooxml:CT_Settings_noPunctuationKerning"/>
+ <element name="characterSpacingControl" tokenid="ooxml:CT_Settings_characterSpacingControl"/>
+ <element name="printTwoOnOne" tokenid="ooxml:CT_Settings_printTwoOnOne"/>
+ <element name="strictFirstAndLastChars" tokenid="ooxml:CT_Settings_strictFirstAndLastChars"/>
+ <element name="noLineBreaksAfter" tokenid="ooxml:CT_Settings_noLineBreaksAfter"/>
+ <element name="noLineBreaksBefore" tokenid="ooxml:CT_Settings_noLineBreaksBefore"/>
+ <element name="savePreviewPicture" tokenid="ooxml:CT_Settings_savePreviewPicture"/>
+ <element name="doNotValidateAgainstSchema" tokenid="ooxml:CT_Settings_doNotValidateAgainstSchema"/>
+ <element name="saveInvalidXml" tokenid="ooxml:CT_Settings_saveInvalidXml"/>
+ <element name="ignoreMixedContent" tokenid="ooxml:CT_Settings_ignoreMixedContent"/>
+ <element name="alwaysShowPlaceholderText" tokenid="ooxml:CT_Settings_alwaysShowPlaceholderText"/>
+ <element name="doNotDemarcateInvalidXml" tokenid="ooxml:CT_Settings_doNotDemarcateInvalidXml"/>
+ <element name="saveXmlDataOnly" tokenid="ooxml:CT_Settings_saveXmlDataOnly"/>
+ <element name="useXSLTWhenSaving" tokenid="ooxml:CT_Settings_useXSLTWhenSaving"/>
+ <element name="saveThroughXslt" tokenid="ooxml:CT_Settings_saveThroughXslt"/>
+ <element name="showXMLTags" tokenid="ooxml:CT_Settings_showXMLTags"/>
+ <element name="alwaysMergeEmptyNamespace" tokenid="ooxml:CT_Settings_alwaysMergeEmptyNamespace"/>
+ <element name="updateFields" tokenid="ooxml:CT_Settings_updateFields"/>
+ <element name="hdrShapeDefaults" tokenid="ooxml:CT_Settings_hdrShapeDefaults"/>
+ <element name="footnotePr" tokenid="ooxml:CT_Settings_footnotePr"/>
+ <element name="endnotePr" tokenid="ooxml:CT_Settings_endnotePr"/>
+ <element name="compat" tokenid="ooxml:CT_Settings_compat"/>
+ <element name="docVars" tokenid="ooxml:CT_Settings_docVars"/>
+ <element name="rsids" tokenid="ooxml:CT_Settings_rsids"/>
+ <element name="uiCompat97To2003" tokenid="ooxml:CT_Settings_uiCompat97To2003"/>
+ <element name="attachedSchema" tokenid="ooxml:CT_Settings_attachedSchema"/>
+ <element name="themeFontLang" tokenid="ooxml:CT_Settings_themeFontLang"/>
+ <element name="clrSchemeMapping" tokenid="ooxml:CT_Settings_clrSchemeMapping"/>
+ <element name="doNotIncludeSubdocsInStats" tokenid="ooxml:CT_Settings_doNotIncludeSubdocsInStats"/>
+ <element name="doNotAutoCompressPictures" tokenid="ooxml:CT_Settings_doNotAutoCompressPictures"/>
+ <element name="forceUpgrade" tokenid="ooxml:CT_Settings_forceUpgrade"/>
+ <element name="captions" tokenid="ooxml:CT_Settings_captions"/>
+ <element name="readModeInkLockDown" tokenid="ooxml:CT_Settings_readModeInkLockDown"/>
+ <element name="smartTagType" tokenid="ooxml:CT_Settings_smartTagType"/>
+ <element name="shapeDefaults" tokenid="ooxml:CT_Settings_shapeDefaults"/>
+ <element name="doNotEmbedSmartTags" tokenid="ooxml:CT_Settings_doNotEmbedSmartTags"/>
+ <element name="decimalSymbol" tokenid="ooxml:CT_Settings_decimalSymbol"/>
+ <element name="listSeparator" tokenid="ooxml:CT_Settings_listSeparator"/>
+ </resource>
+ <resource name="ST_FrameScrollbar" resource="List" generated="yes">
+ <value name="on" tokenid="ooxml:Value_wordprocessingml_ST_FrameScrollbar_on">on</value>
+ <value name="off" tokenid="ooxml:Value_wordprocessingml_ST_FrameScrollbar_off">off</value>
+ <value name="auto" tokenid="ooxml:Value_wordprocessingml_ST_FrameScrollbar_auto">auto</value>
+ </resource>
+ <resource name="CT_FrameScrollbar" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FrameScrollbar_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_FrameLayout" resource="List" generated="yes">
+ <value name="rows" tokenid="ooxml:Value_wordprocessingml_ST_FrameLayout_rows">rows</value>
+ <value name="cols" tokenid="ooxml:Value_wordprocessingml_ST_FrameLayout_cols">cols</value>
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_FrameLayout_none">none</value>
+ </resource>
+ <resource name="CT_FrameLayout" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_FrameLayout_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_LevelSuffix" resource="List" generated="yes">
+ <value name="tab" tokenid="ooxml:Value_wordprocessingml_ST_LevelSuffix_tab">tab</value>
+ <value name="space" tokenid="ooxml:Value_wordprocessingml_ST_LevelSuffix_space">space</value>
+ <value name="nothing" tokenid="ooxml:Value_wordprocessingml_ST_LevelSuffix_nothing">nothing</value>
+ </resource>
+ <resource name="CT_LevelSuffix" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_LevelSuffix_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_LevelText" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_LevelText_val"/>
+ <attribute name="null" tokenid="ooxml:CT_LevelText_null"/>
+ </resource>
+ <resource name="CT_LvlLegacy" resource="Properties">
+ <attribute name="legacy" tokenid="ooxml:CT_LvlLegacy_legacy"/>
+ <attribute name="legacySpace" tokenid="ooxml:CT_LvlLegacy_legacySpace"/>
+ <attribute name="legacyIndent" tokenid="ooxml:CT_LvlLegacy_legacyIndent"/>
+ </resource>
+ <resource name="CT_Lvl" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="start" tokenid="rtf:ISTARTAT"/>
+ <element name="numFmt" tokenid="rtf:NFC"/>
+ <element name="lvlRestart" tokenid="ooxml:CT_Lvl_lvlRestart"/>
+ <element name="pStyle" tokenid="ooxml:CT_Lvl_pStyle"/>
+ <element name="isLgl" tokenid="rtf:FLEGAL"/>
+ <element name="suff" tokenid="ooxml:CT_Lvl_suff"/>
+ <element name="lvlText" tokenid="ooxml:CT_Lvl_lvlText"/>
+ <element name="lvlPicBulletId" tokenid="ooxml:CT_Lvl_lvlPicBulletId"/>
+ <element name="legacy" tokenid="rtf:FCONVERTED"/>
+ <element name="lvlJc" tokenid="ooxml:CT_Lvl_lvlJc"/>
+ <element name="pPr" tokenid="ooxml:CT_Lvl_pPr"/>
+ <element name="rPr" tokenid="ooxml:CT_Lvl_rPr"/>
+ <attribute name="ilvl" tokenid="ooxml:CT_Lvl_ilvl"/>
+ <attribute name="tplc" tokenid="ooxml:CT_Lvl_tplc"/>
+ <attribute name="tentative" tokenid="ooxml:CT_Lvl_tentative"/>
+ </resource>
+ <resource name="ST_MultiLevelType" resource="List">
+ <value tokenid="ooxml:Value_ST_MultiLevelType_singleLevel">singleLevel</value>
+ <value tokenid="ooxml:Value_ST_MultiLevelType_multilevel">multilevel</value>
+ <value tokenid="ooxml:Value_ST_MultiLevelType_hybridMultilevel">hybridMultilevel</value>
+ </resource>
+ <resource name="CT_MultiLevelType" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_MultiLevelType_val" action="setValue"/>
+ </resource>
+ <resource name="CT_AbstractNum" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="nsid" tokenid="rtf:LSID"/>
+ <element name="multiLevelType" tokenid="ooxml:CT_AbstractNum_multiLevelType"/>
+ <element name="tmpl" tokenid="rtf:TPLC"/>
+ <element name="name" tokenid="ooxml:CT_AbstractNum_name"/>
+ <element name="styleLink" tokenid="ooxml:CT_AbstractNum_styleLink"/>
+ <element name="numStyleLink" tokenid="ooxml:CT_AbstractNum_numStyleLink"/>
+ <element name="lvl" tokenid="ooxml:CT_AbstractNum_lvl"/>
+ <attribute name="abstractNumId" tokenid="ooxml:CT_AbstractNum_abstractNumId"/>
+ </resource>
+ <resource name="CT_NumLvl" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="startOverride" tokenid="ooxml:CT_NumLvl_startOverride"/>
+ <element name="lvl" tokenid="ooxml:CT_NumLvl_lvl"/>
+ <attribute name="ilvl" tokenid="ooxml:CT_NumLvl_ilvl"/>
+ </resource>
+ <resource name="CT_Num" resource="Properties">
+ <kind name="paragraph"/>
+ <element name="abstractNumId" tokenid="ooxml:CT_Num_abstractNumId"/>
+ <element name="lvlOverride" tokenid="ooxml:CT_Num_lvlOverride"/>
+ <attribute name="numId" tokenid="ooxml:CT_Num_numId"/>
+ </resource>
+ <resource name="CT_Numbering" resource="PropertyTable" tokenid="ooxml:NUMBERING">
+ <kind name="paragraph"/>
+ <element name="numPicBullet" tokenid="ooxml:CT_Numbering_numPicBullet"/>
+ <element name="abstractNum" tokenid="ooxml:CT_Numbering_abstractNum"/>
+ <element name="num" tokenid="ooxml:CT_Numbering_num"/>
+ <element name="numIdMacAtCleanup" tokenid="ooxml:CT_Numbering_numIdMacAtCleanup"/>
+ </resource>
+ <resource name="ST_TblStyleOverrideType" resource="List">
+ <value tokenid="1">wholeTable</value>
+ <value tokenid="2">firstRow</value>
+ <value tokenid="3">lastRow</value>
+ <value tokenid="4">firstCol</value>
+ <value tokenid="5">lastCol</value>
+ <value tokenid="6">band1Vert</value>
+ <value tokenid="7">band2Vert</value>
+ <value tokenid="8">band1Horz</value>
+ <value tokenid="9">band2Horz</value>
+ <value tokenid="10">neCell</value>
+ <value tokenid="11">nwCell</value>
+ <value tokenid="12">seCell</value>
+ <value tokenid="13">swCell</value>
+ </resource>
+ <resource name="CT_Style_tblStylePr" resource="Properties">
+ <element name="pPr" tokenid="ooxml:CT_PPrBase"/>
+ <element name="rPr" tokenid="ooxml:EG_RPrBase"/>
+ <element name="tblPr" tokenid="ooxml:CT_TblPrBase"/>
+ <element name="trPr" tokenid="ooxml:CT_TrPrBase"/>
+ <element name="tcPr" tokenid="ooxml:CT_TcPrBase"/>
+ <attribute name="type" tokenid="ooxml:CT_TblStyleOverrideType"/>
+ </resource>
+ <resource name="ST_StyleType" resource="List">
+ <value tokenid="1">paragraph</value>
+ <value tokenid="2">character</value>
+ <value tokenid="3">table</value>
+ <value tokenid="4">numbering</value>
+ </resource>
+ <resource name="CT_Style" resource="Properties">
+ <element name="name" tokenid="ooxml:CT_Style_name"/>
+ <element name="aliases" tokenid="ooxml:CT_Style_aliases"/>
+ <element name="basedOn" tokenid="ooxml:CT_Style_basedOn"/>
+ <element name="next" tokenid="ooxml:CT_Style_next"/>
+ <element name="link" tokenid="ooxml:CT_Style_link"/>
+ <element name="autoRedefine" tokenid="ooxml:CT_Style_autoRedefine"/>
+ <element name="hidden" tokenid="ooxml:CT_Style_hidden"/>
+ <element name="uiPriority" tokenid="ooxml:CT_Style_uiPriority"/>
+ <element name="semiHidden" tokenid="ooxml:CT_Style_semiHidden"/>
+ <element name="unhideWhenUsed" tokenid="ooxml:CT_Style_unhideWhenUsed"/>
+ <element name="qFormat" tokenid="ooxml:CT_Style_qFormat"/>
+ <element name="locked" tokenid="ooxml:CT_Style_locked"/>
+ <element name="personal" tokenid="ooxml:CT_Style_personal"/>
+ <element name="personalCompose" tokenid="ooxml:CT_Style_personalCompose"/>
+ <element name="personalReply" tokenid="ooxml:CT_Style_personalReply"/>
+ <element name="rsid" tokenid="ooxml:CT_Style_rsid"/>
+ <element name="pPr" tokenid="ooxml:CT_Style_pPr"/>
+ <element name="rPr" tokenid="ooxml:CT_Style_rPr"/>
+ <element name="tblPr" tokenid="ooxml:CT_Style_tblPr"/>
+ <element name="trPr" tokenid="ooxml:CT_Style_trPr"/>
+ <element name="tcPr" tokenid="ooxml:CT_Style_tcPr"/>
+ <element name="tblStylePr" tokenid="ooxml:CT_Style_tblStylePr"/>
+ <attribute name="type" tokenid="ooxml:CT_Style_type"/>
+ <attribute name="styleId" tokenid="ooxml:CT_Style_styleId"/>
+ <attribute name="default" tokenid="ooxml:CT_Style_default"/>
+ <attribute name="customStyle" tokenid="ooxml:CT_Style_customStyle"/>
+ </resource>
+ <resource name="CT_Styles" resource="Table" tokenid="rtf:STYLESHEET"/>
+ <resource name="ST_Panose" resource="Hex"/>
+ <resource name="CT_Panose" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Panose_val" action="setValue"/>
+ <action name="start" action="setDefaultHexValue"/>
+ </resource>
+ <resource name="ST_FontFamily" resource="List">
+ <value tokenid="ooxml:Value_ST_FontFamily_decorative">decorative</value>
+ <value tokenid="ooxml:Value_ST_FontFamily_modern">modern</value>
+ <value tokenid="ooxml:Value_ST_FontFamily_roman">roman</value>
+ <value tokenid="ooxml:Value_ST_FontFamily_script">script</value>
+ <value tokenid="ooxml:Value_ST_FontFamily_swiss">swiss</value>
+ <value tokenid="ooxml:Value_ST_FontFamily_auto">auto</value>
+ </resource>
+ <resource name="CT_FontFamily" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_FontFamily_val" action="setValue"/>
+ </resource>
+ <resource name="ST_Pitch" resource="List">
+ <value tokenid="ooxml:Value_ST_Pitch_fixed">fixed</value>
+ <value tokenid="ooxml:Value_ST_Pitch_variable">variable</value>
+ <value tokenid="ooxml:Value_ST_Pitch_default">default</value>
+ </resource>
+ <resource name="CT_Pitch" resource="Value">
+ <attribute name="val" tokenid="ooxml:CT_Pitch_val" action="setValue"/>
+ </resource>
+ <resource name="CT_FontSig" resource="Properties">
+ <attribute name="usb0" tokenid="ooxml:CT_FontSig_usb0"/>
+ <attribute name="usb1" tokenid="ooxml:CT_FontSig_usb1"/>
+ <attribute name="usb2" tokenid="ooxml:CT_FontSig_usb2"/>
+ <attribute name="usb3" tokenid="ooxml:CT_FontSig_usb3"/>
+ <attribute name="csb0" tokenid="ooxml:CT_FontSig_csb0"/>
+ <attribute name="csb1" tokenid="ooxml:CT_FontSig_csb1"/>
+ </resource>
+ <resource name="CT_FontRel" resource="Properties">
+ <attribute name="fontKey" tokenid="ooxml:CT_FontRel_fontKey"/>
+ <attribute name="subsetted" tokenid="ooxml:CT_FontRel_subsetted"/>
+ </resource>
+ <resource name="CT_Font" resource="Properties">
+ <kind name="character"/>
+ <element name="altName" tokenid="ooxml:CT_Font_altName"/>
+ <element name="panose1" tokenid="ooxml:CT_Font_panose1"/>
+ <element name="charset" tokenid="ooxml:CT_Font_charset"/>
+ <element name="family" tokenid="ooxml:CT_Font_family"/>
+ <element name="notTrueType" tokenid="ooxml:CT_Font_notTrueType"/>
+ <element name="pitch" tokenid="ooxml:CT_Font_pitch"/>
+ <element name="sig" tokenid="ooxml:CT_Font_sig"/>
+ <element name="embedRegular" tokenid="ooxml:CT_Font_embedRegular"/>
+ <element name="embedBold" tokenid="ooxml:CT_Font_embedBold"/>
+ <element name="embedItalic" tokenid="ooxml:CT_Font_embedItalic"/>
+ <element name="embedBoldItalic" tokenid="ooxml:CT_Font_embedBoldItalic"/>
+ <attribute name="name" tokenid="ooxml:CT_Font_name"/>
+ </resource>
+ <resource name="CT_FontsList" resource="Table" tokenid="rtf:FONTTABLE"/>
+ <resource name="EG_RunLevelElts" resource="Stream">
+ <element name="proofErr" tokenid="ooxml:EG_RunLevelElts_proofErr"/>
+ <element name="permStart" tokenid="ooxml:EG_RunLevelElts_permStart"/>
+ <element name="permEnd" tokenid="ooxml:EG_RunLevelElts_permEnd"/>
+ <element name="ins" tokenid="ooxml:EG_RunLevelElts_ins">
+ <action name="newProperty" id="ooxml:ins" value="1"/>
+ </element>
+ <element name="del" tokenid="ooxml:EG_RunLevelElts_del"/>
+ <element name="moveFrom" tokenid="ooxml:EG_RunLevelElts_moveFrom"/>
+ <element name="moveTo" tokenid="ooxml:EG_RunLevelElts_moveTo"/>
+ </resource>
+ <resource name="CT_Body" resource="Stream">
+ <action name="start" action="startSectionGroup"/>
+ <!--
+ <action name="start" action="footnoteSeparator"/>
+ <action name="start" action="footnoteCont"/>
+ <action name="start" action="endnoteSeparator"/>
+ <action name="start" action="endnoteCont"/>
+-->
+ <action name="end" action="endCharacterGroup"/>
+ <action name="end" action="endParagraphGroup"/>
+ <action name="end" action="endSectionGroup"/>
+ </resource>
+ <resource xmlns:v="urn:schemas-microsoft-com:vml" name="CT_ShapeDefaults" resource="Properties">
+ <element name="v:fill" tokenid="ooxml:CT_ShapeDefaults_v_fill"/>
+ <element name="v:stroke" tokenid="ooxml:CT_ShapeDefaults_v_stroke"/>
+ <element name="v:textbox" tokenid="ooxml:CT_ShapeDefaults_v_textbox"/>
+ <element name="v:shadow" tokenid="ooxml:CT_ShapeDefaults_v_shadow"/>
+ <element name="colormru" tokenid="ooxml:CT_ShapeDefaults_colormru"/>
+ <element name="colormenu" tokenid="ooxml:CT_ShapeDefaults_colormenu"/>
+ <attribute name="spidmax" tokenid="ooxml:CT_ShapeDefaults_spidmax"/>
+ <attribute name="style" tokenid="ooxml:CT_ShapeDefaults_style"/>
+ <attribute name="fill" tokenid="ooxml:CT_ShapeDefaults_fill"/>
+ <attribute name="fillcolor" tokenid="ooxml:CT_ShapeDefaults_fillcolor"/>
+ <attribute name="stroke" tokenid="ooxml:CT_ShapeDefaults_stroke"/>
+ <attribute name="strokecolor" tokenid="ooxml:CT_ShapeDefaults_strokecolor"/>
+ <attribute name="allowincell" tokenid="ooxml:CT_ShapeDefaults_allowincell"/>
+ </resource>
+ <resource name="CT_Comments" resource="Stream">
+ <action name="start" action="startSectionGroup"/>
+ <action name="end" action="endSectionGroup"/>
+ </resource>
+ <resource name="CT_Footnotes" resource="Stream"/>
+ <resource name="footnotes" resource="Stream"/>
+ <resource name="CT_Endnotes" resource="Stream"/>
+ <resource name="endnotes" resource="Stream"/>
+ <resource name="CT_SmartTagType" resource="Properties">
+ <attribute name="namespaceuri" tokenid="ooxml:CT_SmartTagType_namespaceuri"/>
+ <attribute name="name" tokenid="ooxml:CT_SmartTagType_name"/>
+ <attribute name="url" tokenid="ooxml:CT_SmartTagType_url"/>
+ </resource>
+ <resource name="ST_ThemeColor" resource="List">
+ <value tokenid="ooxml:Value_St_ThemeColor_dark1">dark1</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_light1">light1</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_dark2">dark2</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_light2">light2</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent1">accent1</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent2">accent2</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent3">accent3</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent4">accent4</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent5">accent5</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_accent6">accent6</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_hyperlink">hyperlink</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_followedHyperlink">followedHyperlink</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_none">none</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_background1">background1</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_text1">text1</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_background2">background2</value>
+ <value tokenid="ooxml:Value_St_ThemeColor_text2">text2</value>
+ </resource>
+ <resource name="ST_DocPartBehavior" resource="List" generated="yes">
+ <value name="content" tokenid="ooxml:Value_wordprocessingml_ST_DocPartBehavior_content">content</value>
+ <value name="p" tokenid="ooxml:Value_wordprocessingml_ST_DocPartBehavior_p">p</value>
+ <value name="pg" tokenid="ooxml:Value_wordprocessingml_ST_DocPartBehavior_pg">pg</value>
+ </resource>
+ <resource name="CT_DocPartBehavior" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_DocPartBehavior_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_DocPartType" resource="List" generated="yes">
+ <value name="none" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_none">none</value>
+ <value name="normal" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_normal">normal</value>
+ <value name="autoExp" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_autoExp">autoExp</value>
+ <value name="toolbar" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_toolbar">toolbar</value>
+ <value name="speller" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_speller">speller</value>
+ <value name="formFld" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_formFld">formFld</value>
+ <value name="bbPlcHdr" tokenid="ooxml:Value_wordprocessingml_ST_DocPartType_bbPlcHdr">bbPlcHdr</value>
+ </resource>
+ <resource name="CT_DocPartType" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_DocPartType_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="ST_DocPartGallery" resource="List" generated="yes">
+ <value name="placeholder" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_placeholder">placeholder</value>
+ <value name="any" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_any">any</value>
+ <value name="default" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_default">default</value>
+ <value name="docParts" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_docParts">docParts</value>
+ <value name="coverPg" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_coverPg">coverPg</value>
+ <value name="eq" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_eq">eq</value>
+ <value name="ftrs" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_ftrs">ftrs</value>
+ <value name="hdrs" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_hdrs">hdrs</value>
+ <value name="pgNum" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_pgNum">pgNum</value>
+ <value name="tbls" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_tbls">tbls</value>
+ <value name="watermarks" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_watermarks">watermarks</value>
+ <value name="autoTxt" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_autoTxt">autoTxt</value>
+ <value name="txtBox" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_txtBox">txtBox</value>
+ <value name="pgNumT" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_pgNumT">pgNumT</value>
+ <value name="pgNumB" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_pgNumB">pgNumB</value>
+ <value name="pgNumMargins" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_pgNumMargins">pgNumMargins</value>
+ <value name="tblOfContents" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_tblOfContents">tblOfContents</value>
+ <value name="bib" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_bib">bib</value>
+ <value name="custQuickParts" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custQuickParts">custQuickParts</value>
+ <value name="custCoverPg" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custCoverPg">custCoverPg</value>
+ <value name="custEq" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custEq">custEq</value>
+ <value name="custFtrs" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custFtrs">custFtrs</value>
+ <value name="custHdrs" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custHdrs">custHdrs</value>
+ <value name="custPgNum" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custPgNum">custPgNum</value>
+ <value name="custTbls" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custTbls">custTbls</value>
+ <value name="custWatermarks" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custWatermarks">custWatermarks</value>
+ <value name="custAutoTxt" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custAutoTxt">custAutoTxt</value>
+ <value name="custTxtBox" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custTxtBox">custTxtBox</value>
+ <value name="custPgNumT" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custPgNumT">custPgNumT</value>
+ <value name="custPgNumB" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custPgNumB">custPgNumB</value>
+ <value name="custPgNumMargins" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custPgNumMargins">custPgNumMargins</value>
+ <value name="custTblOfContents" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custTblOfContents">custTblOfContents</value>
+ <value name="custBib" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custBib">custBib</value>
+ <value name="custom1" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custom1">custom1</value>
+ <value name="custom2" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custom2">custom2</value>
+ <value name="custom3" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custom3">custom3</value>
+ <value name="custom4" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custom4">custom4</value>
+ <value name="custom5" tokenid="ooxml:Value_wordprocessingml_ST_DocPartGallery_custom5">custom5</value>
+ </resource>
+ <resource name="CT_DocPartGallery" resource="Value" generated="yes">
+ <attribute name="val" tokenid="ooxml:CT_DocPartGallery_val" action="setValue"/>
+ <action name="start" action="setDefaultStringValue"/>
+ </resource>
+ <resource name="CT_DocPartName" resource="Properties">
+ <attribute name="val" tokenid="ooxml:CT_DocPartName_val"/>
+ <attribute name="decorated" tokenid="ooxml:CT_DocPartName_decorated"/>
+ </resource>
+ <resource name="settings" resource="Stream">
+ <element name="settings" tokenid="ooxml:settings_settings"/>
+ </resource>
+ <resource name="fonts" resource="Stream">
+ <element name="fonts" tokenid="rtf:FONTTABLE"/>
+ </resource>
+ <resource name="numbering" resource="Stream">
+ <element name="numbering" tokenid="ooxml:NUMBERING"/>
+ </resource>
+ <resource name="styles" resource="Stream">
+ <element name="styles" tokenid="rtf:STYLESHEET"/>
+ </resource>
+ <resource name="ST_CaptionPos" resource="List" generated="yes">
+ <value name="above" tokenid="ooxml:Value_wordprocessingml_ST_CaptionPos_above">above</value>
+ <value name="below" tokenid="ooxml:Value_wordprocessingml_ST_CaptionPos_below">below</value>
+ <value name="left" tokenid="ooxml:Value_wordprocessingml_ST_CaptionPos_left">left</value>
+ <value name="right" tokenid="ooxml:Value_wordprocessingml_ST_CaptionPos_right">right</value>
+ </resource>
+ <resource name="CT_Caption" resource="Properties">
+ <attribute name="name" tokenid="ooxml:CT_Caption_name"/>
+ <attribute name="pos" tokenid="ooxml:CT_Caption_pos"/>
+ <attribute name="chapNum" tokenid="ooxml:CT_Caption_chapNum"/>
+ <attribute name="heading" tokenid="ooxml:CT_Caption_heading"/>
+ <attribute name="noLabel" tokenid="ooxml:CT_Caption_noLabel"/>
+ <attribute name="numFmt" tokenid="ooxml:CT_Caption_numFmt"/>
+ <attribute name="sep" tokenid="ooxml:CT_Caption_sep"/>
+ </resource>
+ <resource name="CT_AutoCaption" resource="Properties">
+ <attribute name="name" tokenid="ooxml:CT_AutoCaption_name"/>
+ <attribute name="caption" tokenid="ooxml:CT_AutoCaption_caption"/>
+ </resource>
+ <resource name="CT_AutoCaptions" resource="Properties">
+ <element name="autoCaption" tokenid="ooxml:CT_AutoCaptions_autoCaption"/>
+ </resource>
+ <resource name="CT_Captions" resource="Properties">
+ <element name="caption" tokenid="ooxml:CT_Captions_caption"/>
+ <element name="autoCaptions" tokenid="ooxml:CT_Captions_autoCaptions"/>
+ </resource>
+ <resource name="CT_DocumentBase" resource="Properties">
+ <element name="background" tokenid="ooxml:CT_DocumentBase_background"/>
+ </resource>
+ <resource name="CT_Document" resource="Stream"/>
+ <resource name="CT_GlossaryDocument" resource="Stream"/>
+ <resource name="document" resource="Stream"/>
+ <resource name="glossaryDocument" resource="Stream"/>
+ </namespace>
+</model>
diff --git a/writerfilter/source/ooxml/modelcleanup b/writerfilter/source/ooxml/modelcleanup
new file mode 100755
index 000000000000..25651aa343a2
--- /dev/null
+++ b/writerfilter/source/ooxml/modelcleanup
@@ -0,0 +1,3 @@
+#!/bin/sh
+(xsltproc modelcleanup.xsl model.xml | xmllint --format - > model.xml.tmp) && \
+mv model.xml.tmp model.xml
diff --git a/writerfilter/source/ooxml/modelcleanup.xsl b/writerfilter/source/ooxml/modelcleanup.xsl
new file mode 100644
index 000000000000..d7a9aec40100
--- /dev/null
+++ b/writerfilter/source/ooxml/modelcleanup.xsl
@@ -0,0 +1,304 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ exclude-result-prefixes = "xalan"
+ xml:indent="true">
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/>
+
+
+ <xsl:key name="resources"
+ match="resource[not(@generated)]" use="@name" />
+
+ <xsl:template name="generateresource">
+ <xsl:param name="resource"/>
+ <xsl:element name="resource">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">
+ <xsl:value-of select="$resource"/>
+ </xsl:attribute>
+ <xsl:attribute name="generated">
+ <xsl:text>yes</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:key name="nsaliases" match="//namespace-alias" use="@name"/>
+
+ <xsl:template name="resourcevalues">
+ <xsl:variable name="definename" select="@name"/>
+ <xsl:variable name="namespace" select="key('nsaliases', ancestor::namespace/rng:grammar/@ns)/@alias"/>
+ <xsl:element name="resource">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">List</xsl:attribute>
+ <xsl:attribute name="generated">yes</xsl:attribute>
+ <xsl:for-each select=".//rng:value">
+ <xsl:element name="value">
+ <xsl:attribute name="name">
+ <xsl:value-of select="translate(., '-+ ,', 'mp__')"/>
+ </xsl:attribute>
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:Value_</xsl:text>
+ <xsl:value-of select="translate($namespace, '-', '_')"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="$definename"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="translate(., '-+ ,', 'mp__')"/>
+ </xsl:attribute>
+ <xsl:value-of select="."/>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="typeofdefine">
+ <xsl:for-each select="rng:data">
+ <xsl:choose>
+ <xsl:when test="@type='base64Binary'">
+ <xsl:text>String</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='boolean'">
+ <xsl:text>Boolean</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='byte'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='dateTime'">
+ <xsl:text>String</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='decimal'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='float'">
+ <xsl:text>Float</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='hexBinary'">
+ <xsl:text>Hex</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='int'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='integer'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='positiveInteger'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='string'">
+ <xsl:text>String</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='token'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='unsignedInt'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:when test="@type='unsignedLong'">
+ <xsl:text>Integer</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Unknown</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="typeofattribute">
+ <xsl:for-each select="rng:ref">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:for-each select="ancestor::namespace/rng:grammar/rng:define[@name=$name]">
+ <xsl:call-template name="typeofdefine"/>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="generatevalueresource">
+ <xsl:variable name="name" select="@name"/>
+ <resource>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="resource">Value</xsl:attribute>
+ <xsl:attribute name="generated">yes</xsl:attribute>
+ <xsl:for-each select=".//rng:attribute">
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="rng:ref[@name='ST_OnOff']">
+ <xsl:text>Boolean</xsl:text>
+ </xsl:when>
+ <xsl:when test="rng:text">
+ <xsl:text>String</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="typeofattribute"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <attribute>
+ <xsl:attribute name="name">
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="tokenid">
+ <xsl:text>ooxml:</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:attribute name="action">
+ <xsl:text>setValue</xsl:text>
+ </xsl:attribute>
+ </attribute>
+ <xsl:if test="string-length($type) > 0">
+ <action name="start">
+ <xsl:attribute name="action">
+ <xsl:text>setDefault</xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text>Value</xsl:text>
+ </xsl:attribute>
+ </action>
+ </xsl:if>
+ </xsl:for-each>
+ </resource>
+ </xsl:template>
+
+ <xsl:template match="namespace">
+ <xsl:variable name="nsid" select="generate-id(.)"/>
+ <xsl:element name="namespace">
+ <xsl:copy-of select="@*"/>
+ <xsl:copy-of select=".//start"/>
+ <xsl:copy-of select="./rng:grammar"/>
+
+ <xsl:for-each select=".//rng:define">
+ <xsl:variable name="resources" select="key('resources', @name)[generate-id(ancestor::namespace) = $nsid]"/>
+ <xsl:copy-of select="$resources"/>
+ <xsl:if test="count($resources) = 0">
+ <xsl:if test="substring(@name, 1, 3) = 'CT_'">
+ <xsl:if test="./rng:attribute[@name='val']">
+ <xsl:call-template name="generatevalueresource"/>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test="substring(@name, 1, 3) = 'ST_'">
+ <xsl:if test="./rng:data[@type='int']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Integer</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='integer']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Integer</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='long']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Integer</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='unsignedInt']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Integer</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='unsignedLong']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Integer</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='boolean']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Boolean</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='token']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">String</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='string']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">String</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='dateTime']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">String</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:data[@type='hexBinary']">
+ <xsl:call-template name="generateresource">
+ <xsl:with-param name="resource">Hex</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="./rng:list">
+ <xsl:call-template name="resourcevalues"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="namespace-alias">
+ <namespace-alias>
+ <xsl:for-each select="@*">
+ <xsl:copy-of select="."/>
+ </xsl:for-each>
+ </namespace-alias>
+ </xsl:template>
+
+ <xsl:template match="token">
+ <token>
+ <xsl:for-each select="@*">
+ <xsl:copy-of select="."/>
+ </xsl:for-each>
+ </token>
+ </xsl:template>
+
+ <xsl:template match="fasttoken">
+ <xsl:copy-of select="."/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <model>
+ <xsl:apply-templates select=".//namespace-alias">
+ <xsl:sort select="@id" data-type="number"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select=".//token"/>
+ <xsl:apply-templates select=".//fasttoken"/>
+ <xsl:apply-templates select=".//namespace"/>
+ </model>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/modelpreprocess.xsl b/writerfilter/source/ooxml/modelpreprocess.xsl
new file mode 100644
index 000000000000..0b898e63f933
--- /dev/null
+++ b/writerfilter/source/ooxml/modelpreprocess.xsl
@@ -0,0 +1,225 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="xml" />
+
+ <xsl:key name="namespace-aliases" match="//namespace-alias" use="@name"/>
+
+ <xsl:template match="/">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template name="prefixfromurl">
+ <xsl:param name="url"/>
+ <xsl:variable name="prefix" select="key('namespace-aliases', $url)/@alias"/>
+ <xsl:choose>
+ <xsl:when test="string-length($prefix) > 0">
+ <xsl:value-of select="$prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="translate(substring-after($url, 'http://'), '/.', '__')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="prefixforgrammar">
+ <xsl:variable name="ns" select="ancestor::namespace/rng:grammar/@ns"/>
+ <xsl:variable name="prefix" select="key('namespace-aliases', $ns)/@alias"/>
+ <xsl:choose>
+ <xsl:when test="string-length($prefix) > 0">
+ <xsl:value-of select="$prefix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="prefixfromurl">
+ <xsl:with-param name="url" select="$ns"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="nsforgrammar">
+ <xsl:value-of select="ancestor::namespace/rng:grammar/@ns"/>
+ </xsl:template>
+
+ <xsl:template match="rng:element[@name|./rng:anyName] | rng:attribute[@name] | element | attribute">
+ <xsl:variable name="prefix">
+ <xsl:choose>
+ <xsl:when test="contains(@name, ':')">
+ <xsl:variable name="myname" select="@name"/>
+ <xsl:call-template name="prefixfromurl">
+ <xsl:with-param name="url" select="string(namespace::*[local-name(.) = substring-before($myname, ':')])"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(.)='attribute'">
+ <xsl:if test="ancestor::namespace/rng:grammar/@attributeFormDefault='qualified'">
+ <xsl:call-template name="prefixforgrammar"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="prefixforgrammar"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="ns">
+ <xsl:choose>
+ <xsl:when test="contains(@name, ':')">
+ <xsl:variable name="myname" select="@name"/>
+ <xsl:value-of select="string(namespace::*[local-name(.) = substring-before($myname, ':')])"/>
+ </xsl:when>
+ <xsl:when test="name(.)='attribute'">
+ <xsl:if test="ancestor::rng:grammar/@attributeFormDefault='qualified'">
+ <xsl:call-template name="nsforgrammar"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="nsforgrammar"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="localname">
+ <xsl:choose>
+ <xsl:when test="contains(@name, ':')">
+ <xsl:value-of select="substring-after(@name, ':')"/>
+ </xsl:when>
+ <xsl:when test="./rng:anyName">
+ <xsl:text>FAST_TOKENS_END</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="enumname">
+ <xsl:if test="string-length($prefix) > 0">
+ <xsl:value-of select="$prefix"/>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$localname"/>
+ </xsl:attribute>
+ <xsl:attribute name="qname">
+ <xsl:if test="string-length($ns) > 0">
+ <xsl:value-of select="$ns"/>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$localname"/>
+ </xsl:attribute>
+ <xsl:attribute name="prefix">
+ <xsl:value-of select="$prefix"/>
+ </xsl:attribute>
+ <xsl:attribute name="localname">
+ <xsl:value-of select="$localname"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="rng:grammar">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="application">
+ <xsl:value-of select="substring-before(substring-after(@ns, 'http://schemas.openxmlformats.org/'), '/')"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="model">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="rng:define|rng:ref">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="classfordefine">
+ <xsl:variable name="name" select="@name"/>
+ <xsl:choose>
+ <xsl:when test="(starts-with(@name, 'CT_') or starts-with(@name, 'EG_') or starts-with(@name, 'AG_'))">1</xsl:when>
+ <xsl:when test="ancestor::namespace//start[@name=$name]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="namespace">
+ <xsl:variable name="ns" select=".//rng:grammar/@ns"/>
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="namespacealias">
+ <xsl:value-of select="key('namespace-aliases', $ns)/@alias"/>
+ </xsl:attribute>
+ <xsl:attribute name="prefix"><xsl:value-of select="translate(substring-after($ns, 'http://schemas.openxmlformats.org/'), '/-', '__')"/></xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/namespaceids.xsl b/writerfilter/source/ooxml/namespaceids.xsl
new file mode 100644
index 000000000000..45828761da0c
--- /dev/null
+++ b/writerfilter/source/ooxml/namespaceids.xsl
@@ -0,0 +1,100 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
+ <xsl:output method="text" />
+ <xsl:param name="prefix"/>
+
+ <xsl:include href="factorytools.xsl"/>
+
+<xsl:template name="namespaceids">
+ <xsl:for-each select="//namespace-alias">
+ <xsl:text>
+const sal_uInt32 </xsl:text>
+<xsl:call-template name="namespaceid"/>
+<xsl:text> = </xsl:text>
+<xsl:value-of select="@id"/>
+<xsl:text> &lt;&lt; 16;</xsl:text>
+ </xsl:for-each>
+</xsl:template>
+
+ <xsl:template match="/">
+ <out xml:space="preserve">
+ <xsl:call-template name="licenseheader"/>
+ <xsl:text>
+#ifndef INCLUDED_OOXML_NAMESPACESIDS_HXX
+#define INCLUDED_OOXML_NAMESPACESIDS_HXX
+
+#include &lt;map&gt;
+#include &lt;vector&gt;
+#include &lt;boost/shared_ptr.hpp&gt;
+#include &lt;string&gt;
+
+#include &lt;resourcemodel/WW8ResourceModel.hxx&gt;
+
+namespace writerfilter {
+namespace ooxml {
+using namespace ::std;
+using namespace ::com::sun::star;
+</xsl:text>
+<xsl:call-template name="namespaceids"/>
+<xsl:text>
+
+}}
+#endif //INCLUDED_OOXML_NAMESPACESIDS_HXX&#xa;</xsl:text></out></xsl:template>
+
+ <xsl:template match="*"/>
+</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/nostatus.xsl b/writerfilter/source/ooxml/nostatus.xsl
new file mode 100644
index 000000000000..e2e113c6a602
--- /dev/null
+++ b/writerfilter/source/ooxml/nostatus.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text"/>
+
+<xsl:template match="/">
+ <xsl:for-each select="/stage3">
+ <xsl:for-each select="attribute|element">
+ <xsl:for-each select="file[nostatus]">
+ <xsl:value-of select="@name"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="@line"/>
+ <xsl:text>&#xa;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/ooxmlLoggers.hxx b/writerfilter/source/ooxml/ooxmlLoggers.hxx
new file mode 100644
index 000000000000..54191244b968
--- /dev/null
+++ b/writerfilter/source/ooxml/ooxmlLoggers.hxx
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_OOXML_LOGGERS_HXX
+#define INCLUDED_OOXML_LOGGERS_HXX
+
+#ifdef DEBUG
+
+#include <resourcemodel/TagLogger.hxx>
+
+namespace writerfilter {
+ namespace ooxml {
+ extern TagLogger::Pointer_t debug_logger;
+ }
+}
+#endif
+#endif // INCLUDED_OOXML_LOGGERS_HXX
diff --git a/writerfilter/source/ooxml/qnametostr.xsl b/writerfilter/source/ooxml/qnametostr.xsl
new file mode 100644
index 000000000000..1c0a706df56d
--- /dev/null
+++ b/writerfilter/source/ooxml/qnametostr.xsl
@@ -0,0 +1,132 @@
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:UML = 'org.omg.xmi.namespace.UML'
+ exclude-result-prefixes = "xalan"
+ xml:space="default">
+ <xsl:output method="text" />
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <!--
+ Generates mapping from tokenids to strings. (DEBUG)
+ -->
+ <xsl:template name="qnametostr">
+ <xsl:text>
+void QNameToString::init_ooxml()
+{
+ /* ooxml */
+ </xsl:text>
+ <xsl:for-each select="//@tokenid">
+ <xsl:if test="generate-id(.) = generate-id(key('tokenids', .)[1]) and contains(., 'ooxml:')">
+ <xsl:text>
+ mMap[</xsl:text>
+ <xsl:call-template name="idtoqname">
+ <xsl:with-param name="id" select="."/>
+ </xsl:call-template>
+ <xsl:text>] = "</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>";</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+}
+ </xsl:text>
+ </xsl:template>
+
+ <xsl:template name="ooxmlidstoxml">
+ <xsl:text>
+void ooxmlsprmidsToXML(::std::ostream &amp; out)
+{</xsl:text>
+ <xsl:for-each select="//@tokenid">
+ <xsl:if test="contains(., 'ooxml:') and generate-id(.) = generate-id(key('tokenids', .)[1]) and ancestor::element">
+ <xsl:text>
+ out &lt;&lt; "&lt;theid name=\"</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>\"&gt;</xsl:text>
+ <xsl:value-of select="90000 + position()"/>
+ <xsl:text>&lt;/theid&gt;" &lt;&lt; endl; </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+}</xsl:text>
+ <xsl:text>
+void ooxmlidsToXML(::std::ostream &amp; out)
+{</xsl:text>
+ <xsl:for-each select="//@tokenid">
+ <xsl:if test="contains(., 'ooxml:') and generate-id(.) = generate-id(key('tokenids', .)[1]) and ancestor::attribute">
+ <xsl:text>
+ out &lt;&lt; "&lt;theid name=\"</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>\"&gt;</xsl:text>
+ <xsl:value-of select="90000 + position()"/>
+ <xsl:text>&lt;/theid&gt;" &lt;&lt; endl; </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>
+}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:call-template name="qnametostr"/>
+ <xsl:call-template name="ooxmlidstoxml"/>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/resourceids.xsl b/writerfilter/source/ooxml/resourceids.xsl
new file mode 100644
index 000000000000..23ee6ffaad60
--- /dev/null
+++ b/writerfilter/source/ooxml/resourceids.xsl
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*************************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************/
+
+-->
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:UML = 'org.omg.xmi.namespace.UML'
+ exclude-result-prefixes = "xalan"
+ xml:space="default">
+ <xsl:output method="text" />
+
+ <xsl:include href="factorytools.xsl"/>
+
+ <!--
+ Generates contant definitions for tokenids.
+ -->
+ <xsl:template name="defineooxmlids">
+ <xsl:text>
+namespace NS_ooxml
+{</xsl:text>
+<xsl:for-each select="//@tokenid|//@sendtokenid">
+ <xsl:if test="contains(., 'ooxml:') and generate-id(.) = generate-id(key('tokenids', .)[1])">
+ <xsl:text>
+ const Id LN_</xsl:text>
+ <xsl:value-of select="substring-after(., 'ooxml:')"/>
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="90000 + position()"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+</xsl:for-each>
+}
+ </xsl:template>
+
+ <xsl:template match="/">
+ <out>
+ <xsl:call-template name="licenseheader"/>
+ <xsl:text>
+#ifndef INCLUDED_OOXML_RESOURCEIDS_HXX
+#define INCLUDED_OOXML_RESOURCEIDS_HXX
+
+#include &lt;resourcemodel/WW8ResourceModel.hxx&gt;
+
+namespace writerfilter {
+ </xsl:text>
+ <xsl:call-template name="defineooxmlids"/>
+ <xsl:text>
+
+}
+#endif // INCLUDED_OOXML_RESOURCEIDS_HXX&#xa;</xsl:text></out></xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/rngtocxx b/writerfilter/source/ooxml/rngtocxx
new file mode 100755
index 000000000000..8b75d658f981
--- /dev/null
+++ b/writerfilter/source/ooxml/rngtocxx
@@ -0,0 +1,32 @@
+#!/bin/sh
+xalan -xsl modelpreprocess.xsl -in model.xml > model_processed.xml
+xalan -xsl resourcestokens.xsl -in model_processed.xml > OOXMLtokens.hxx
+xalan -xsl resources.xsl -in model_processed.xml > OOXMLresources.hxx
+xalan -xsl resourcesimpl.xsl -in model_processed.xml > OOXMLresources.cxx
+xalan -xsl resourcesimpl_dml-baseStylesheet.xsl -in model_processed.xml > OOXMLresources_dml-baseStylesheet.cxx
+xalan -xsl resourcesimpl_dml-baseTypes.xsl -in model_processed.xml > OOXMLresources_dml-baseTypes.cxx
+xalan -xsl resourcesimpl_dml-chartDrawing.xsl -in model_processed.xml > OOXMLresources_dml-chartDrawing.cxx
+xalan -xsl resourcesimpl_dml-documentProperties.xsl -in model_processed.xml > OOXMLresources_dml-documentProperties.cxx
+xalan -xsl resourcesimpl_dml-graphicalObject.xsl -in model_processed.xml > OOXMLresources_dml-graphicalObject.cxx
+xalan -xsl resourcesimpl_dml-shape3DCamera.xsl -in model_processed.xml > OOXMLresources_dml-shape3DCamera.cxx
+xalan -xsl resourcesimpl_dml-shape3DLighting.xsl -in model_processed.xml > OOXMLresources_dml-shape3DLighting.cxx
+xalan -xsl resourcesimpl_dml-shape3DScene.xsl -in model_processed.xml > OOXMLresources_dml-shape3DScene.cxx
+xalan -xsl resourcesimpl_dml-shape3DStyles.xsl -in model_processed.xml > OOXMLresources_dml-shape3DStyles.cxx
+xalan -xsl resourcesimpl_dml-shapeEffects.xsl -in model_processed.xml > OOXMLresources_dml-shapeEffects.cxx
+xalan -xsl resourcesimpl_dml-shapeGeometry.xsl -in model_processed.xml > OOXMLresources_dml-shapeGeometry.cxx
+xalan -xsl resourcesimpl_dml-shapeLineProperties.xsl -in model_processed.xml > OOXMLresources_dml-shapeLineProperties.cxx
+xalan -xsl resourcesimpl_dml-shapeProperties.xsl -in model_processed.xml > OOXMLresources_dml-shapeProperties.cxx
+xalan -xsl resourcesimpl_dml-styleDefaults.xsl -in model_processed.xml > OOXMLresources_dml-styleDefaults.cxx
+xalan -xsl resourcesimpl_dml-stylesheet.xsl -in model_processed.xml > OOXMLresources_dml-stylesheet.cxx
+xalan -xsl resourcesimpl_dml-textCharacter.xsl -in model_processed.xml > OOXMLresources_dml-textCharacter.cxx
+xalan -xsl resourcesimpl_dml-wordprocessingDrawing.xsl -in model_processed.xml > OOXMLresources_dml-wordprocessingDrawing.cxx
+xalan -xsl resourcesimpl_shared-math.xsl -in model_processed.xml > OOXMLresources_shared-math.cxx
+xalan -xsl resourcesimpl_shared-relationshipReference.xsl -in model_processed.xml > OOXMLresources_shared-relationshipReference.cxx
+xalan -xsl resourcesimpl_sml-customXmlMappings.xsl -in model_processed.xml > OOXMLresources_sml-customXmlMappings.cxx
+xalan -xsl resourcesimpl_wml.xsl -in model_processed.xml > OOXMLresources_wml.cxx
+xalan -xsl tokenmapinit.xsl -in model_processed.xml > TokenMapInit.cxx
+xalan -xsl valuesimpl.xsl -in model_processed.xml > OOXMLvalues.cxx
+xalan -xsl qnametostr.xsl -in model_processed.xml > qnametostr.tmp
+xalan -xsl resourceids.xsl -in model_processed.xml > ../../inc/ooxml/resourceids.hxx
+xalan -xsl gperfattributes.xsl -in model_processed.xml | gperf -t -E -S1 -LC++ > gperfattributes.hxx
+xalan -xsl gperfelements.xsl -in model_processed.xml | gperf -t -E -S1 -LC++ > gperfelements.hxx
diff --git a/writerfilter/source/ooxml/status.sh b/writerfilter/source/ooxml/status.sh
new file mode 100755
index 000000000000..c36ad0d65a37
--- /dev/null
+++ b/writerfilter/source/ooxml/status.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+SEARCHIN=$SRC_ROOT/writerfilter/source/dmapper
+
+(
+echo '<?xml version="1.0"?>'
+echo "<stage1>"
+
+xsltproc analyzemodel.xsl model.xml | tail -n +2
+
+find $SEARCHIN -name "*.cxx" -exec grep -nH -A 1 "case NS_" {} \; |
+grep -v "//.*case NS_" |
+sed 's#'$SEARCHIN'##' |
+sed 's#\(^[^:]*\):\([0-9]*\):#<qname file="\1" line="\2"#' |
+sed 's#[/* ]*case \(NS_.*\):.*# qname="\1"/>#' |
+sed 's#.*WRITERFILTERSTATUS: done: \([0-9]*\), planned: \([0-9.]*\), spent: \([0-9.]*\).*#<status done="\1" planned="\2" spent="\3"/>#' |
+sed 's#.*WRITERFILTERSTATUS:.*#<status done="100"/>#' |
+sed 's#^.*-[0-9][0-9]*-.*$#<nostatus/>#' |
+grep -v "^--"
+
+echo "</stage1>"
+) |
+xsltproc analyzestage2.xsl - |
+xsltproc analyzestage3.xsl -
diff --git a/writerfilter/source/ooxml/todo.xsl b/writerfilter/source/ooxml/todo.xsl
new file mode 100644
index 000000000000..80431ea90487
--- /dev/null
+++ b/writerfilter/source/ooxml/todo.xsl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0">
+
+<xsl:output method="xml" indent="yes"/>
+
+<xsl:template match="/">
+ <todo>
+ <xsl:for-each select="/stage3">
+ <xsl:for-each select="attribute|element">
+ <xsl:choose>
+ <xsl:when test="@qname and @resource='Properties' and not(file)">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+ <xsl:when test="@qname and file/status[number(@done) &lt; 100 and number(@planned) &gt; 0]">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:copy-of select="file[status[number(@done) &lt; 100 and number(@planned) &gt; 0]]"/>
+ </xsl:copy>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </todo>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/writerfilter/source/ooxml/tokenxmlfooter b/writerfilter/source/ooxml/tokenxmlfooter
new file mode 100644
index 000000000000..6f664070c0dd
--- /dev/null
+++ b/writerfilter/source/ooxml/tokenxmlfooter
@@ -0,0 +1 @@
+</model>
diff --git a/writerfilter/source/ooxml/tokenxmlheader b/writerfilter/source/ooxml/tokenxmlheader
new file mode 100644
index 000000000000..25a92439af63
--- /dev/null
+++ b/writerfilter/source/ooxml/tokenxmlheader
@@ -0,0 +1 @@
+<model>