需要删除特定实例的属性

时间:2016-12-21 13:40:07

标签: xml xslt

实际上我需要将xml文件转换为DITA,并为某些实例删除属性。即使我用过" 排除结果前缀="#all" "在XSL中,

我的输入xml文件是:

    <LearningStandardItem xml:lang="en" RefID="CA9EE2E34F384E95A5FA26769C5864B8">
        <RefURI>http://corestandards.org/Math/Content/K/CC/A/1/</RefURI>
</LearningStandardItem>

我使用的XSL:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="#all" >

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

<xsl:template match="LearningStandardItem">
        <bodydiv outputclass="LearningStandardItem">
            <xsl:apply-templates select="@*|node()"/>
        </bodydiv>
    </xsl:template>

</xsl:stylesheet>

我得到的输出:

<bodydiv outputclass="LearningStandardItem"
               **xml:lang="en"**
               id="CA9EE2E34F384E95A5FA26769C5864B8">
<p outputclass="RefURI">http://corestandards.org/Math/Content/K/CC/A/1/</p>
</bodydiv>

但我需要删除xml:lang =&#34; en&#34;在输出中如下所示:

<bodydiv outputclass="LearningStandardItem"
               id="CA9EE2E34F384E95A5FA26769C5864B8">
<p outputclass="RefURI">http://corestandards.org/Math/Content/K/CC/A/1/</p>
</bodydiv>

请提供有关此问题的建议。提前谢谢。

1 个答案:

答案 0 :(得分:3)

添加空模板<xsl:template match="LearningStandardItem/@xml:lang"/>,使其不会被复制。