diff options
Diffstat (limited to 'writerfilter/source/ooxml')
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>
</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>
</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>
</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>
</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>
</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>)-></xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="$myresource"/> + <xsl:text>)
</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>/" < fastresourcesimpl_wml.xsl > 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>_/" < fastresources_.xsl > 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>
</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
</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>
</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
</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 & 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 < OOXMLFactory_ns > 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>
</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 <rtl/ustring.hxx> + +<xsl:call-template name="valueconstantdecls"/> +<xsl:text> +#endif // INCLUDED_FACTORY_VALUES
</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< xml::sax::XFastContextHandler > OOXMLFactory::createFastChildContextFromFactory +(OOXMLFastContextHandler * pHandler, OOXMLFactory_ns::Pointer_t pFactory, Token_t Element) +{ + uno::Reference < xml::sax::XFastContextHandler > aResult; + Id nDefine = pHandler->getDefine(); + + if (pFactory.get() != NULL) + { + CreateElementMapPointer pMap = pFactory->getCreateElementMap(nDefine); + TokenToIdMapPointer pTokenMap = pFactory->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<OOXMLFastContextHandler</xsl:text> + <xsl:value-of select="@resource"/> + <xsl:text>>::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 & 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< xml::sax::XFastContextHandler > OOXMLFactory::createFastChildContextFromStart +(OOXMLFastContextHandler * pHandler, Token_t Element) +{ +#ifdef DEBUG_CREATE + debug_logger->startElement("createFastChildContextFromStart"); +#endif + + uno::Reference < xml::sax::XFastContextHandler > 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 & 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 & 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 < xml::sax::XFastParser > OOXMLStreamImpl::getFastParser() +{ + if (! mxFastParser.is()) + { + uno::Reference < lang::XMultiComponentFactory > xFactory = + uno::Reference < lang::XMultiComponentFactory > + (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 < osl::Mutex, </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text> > </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<Id>(pHandler->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<OOXMLFastContextHandlerStream*>(pHandler)->getPropertySetAttrs()->resolve(aHandler); + + if (sal::static_int_cast<Id>(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<OOXMLFastContextHandlerProperties*>(pHandler)-></xsl:text> + <xsl:value-of select="@action"/> + <xsl:text>();</xsl:text> + </xsl:when> + <xsl:when test="@action='propagateCharacterPropertiesAsSet'"> + <xsl:text> + pHandler->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<OOXMLFastContextHandlerTextTableCell*>(pHandler)-></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<OOXMLFastContextHandlerTextTableRow*>(pHandler)-></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<OOXMLFastContextHandlerStream*>(pHandler)-></xsl:text> + <xsl:value-of select="@action"/> + <xsl:text>();</xsl:text> + </xsl:when> + <xsl:when test="@action='fieldstart'"> + <xsl:text> + pHandler->startField();</xsl:text> + </xsl:when> + <xsl:when test="@action='fieldsep'"> + <xsl:text> + pHandler->fieldSeparator();</xsl:text> + </xsl:when> + <xsl:when test="@action='fieldend'"> + <xsl:text> + pHandler->endField();</xsl:text> + </xsl:when> + <xsl:when test="@action='printproperty'"> + <xsl:text> + dynamic_cast<OOXMLFastContextHandlerStream*>(pHandler)->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->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->text(sText); + </xsl:when> + <xsl:when test="@action='newProperty'"> + <xsl:text> + OOXMLFastHelper<OOXMLIntegerValue>::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<OOXMLIntegerValue>::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<OOXMLIntegerValue>::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->getToken());</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> + pHandler-></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 & 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<</xsl:text> + <xsl:value-of select="$handlertype"/> + <xsl:text> * >(_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>
</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> << 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! + +*/ +
</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>,
</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>;
</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 <map> +#include <vector> +#include <boost/shared_ptr.hpp> +#include <string> + +#include <resourcemodel/WW8ResourceModel.hxx> + +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 << 31; + +}} +#endif //INCLUDED_OOXML_FAST_TOKENS_HXX
</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>
</xsl:text> + <xsl:value-of select="@localname"/> + <xsl:text>, </xsl:text> + <xsl:call-template name="fastlocalname"/> + </xsl:if> + </xsl:for-each> + <xsl:text> +%%
</xsl:text> +}}}
</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> << 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 <map> +#include <vector> +#include <boost/shared_ptr.hpp> +#include <string> + +#include <resourcemodel/WW8ResourceModel.hxx> + +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
</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>
</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 & 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 << "<theid name=\"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>\"></xsl:text> + <xsl:value-of select="90000 + position()"/> + <xsl:text></theid>" << endl; </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text> +}</xsl:text> + <xsl:text> +void ooxmlidsToXML(::std::ostream & 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 << "<theid name=\"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>\"></xsl:text> + <xsl:value-of select="90000 + position()"/> + <xsl:text></theid>" << 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 <resourcemodel/WW8ResourceModel.hxx> + +namespace writerfilter { + </xsl:text> + <xsl:call-template name="defineooxmlids"/> + <xsl:text> + +} +#endif // INCLUDED_OOXML_RESOURCEIDS_HXX
</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) < 100 and number(@planned) > 0]"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:copy-of select="file[status[number(@done) < 100 and number(@planned) > 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> |