Как очистить пользовательские свойства Office Word 2007/2010 с помощью XSLT? - PullRequest
1 голос
/ 12 октября 2011
<xsl:template match="o:CustomDocumentProperties">
        <xsl:copy>
            <xsl:apply-templates select ="@*|node()" />
        </xsl:copy>
</xsl:template>

В Word 2003 я могу получить пользовательские свойства документа Word 2003 с помощью выражения соответствия xsl: template выше.

Какой синтаксис использовать, если я работаю в офисе Word 2007 или 2010?

1 Ответ

0 голосов
/ 16 января 2012

Пользовательские свойства документа поддерживаются в элементе Properties и используют следующее пространство имен:

http://schemas.openxmlformats.org/officeDocument/2006/extended-properties

Пример пользовательского свойства для номера телефона:

<pkg:part pkg:name="/docProps/custom.xml"
        pkg:contentType="application/vnd.openxmlformats-officedocument.custom-properties+xml"
        pkg:padding="256">
        <pkg:xmlData>
            <Properties
                xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
                xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
                <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3"
                    name="Telephone number">
                    <vt:lpwstr>555-555-5555</vt:lpwstr>
                </property>
            </Properties>
        </pkg:xmlData>
    </pkg:part>

Предполагая, что вы объявляете пространство имен с префиксом "prop" в вашей таблице стилей следующим образом:

xmlns:prop="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"

если вы сохраняете как один XML-файл, вы можете найти их с помощью следующего XPath:

pkg:package/pkg:part/pkg:xmlData/prop:Properties

и вы можете создать шаблонное соответствие следующим образом:

<xsl:template match="prop:Properties">
        <xsl:copy>
            <xsl:apply-templates select ="@*|node()" />
        </xsl:copy>
</xsl:template>
...