如何使用XSLT清除Office Word 2007/2010自定义属性?

时间:2011-10-12 03:25:55

标签: xslt xpath openxml word-2007

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

在Word 2003中,我可以使用上面的xsl:template match语句获取单词的文档2003的自定义属性。

如果我在办公室Word 2007或2010上工作,使用的语法是什么?

1 个答案:

答案 0 :(得分:0)

自定义文档属性在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>