如何使用 XSLT 1.0 获取小写的 xml 节点



我需要使用 XSLT 1.0 获取小写的 XML 节点及其值,并将输出显示为 XML

        <main>
           <ACAT>Cat Name A </ACAT>
           <bcat>Cat Name b </bcat>
           <ccat>Cat Name c </ccat>
           <dcat>Cat Name d </dcat>
           <ECAT>Cat Name E </ECAT>
           <fcat>Cat Name f </fcat>
        </main>

亩期望输出为

        <main>
           <bcat>Cat Name b </bcat>
           <ccat>Cat Name c </ccat>
           <dcat>Cat Name d </dcat>
           <fcat>Cat Name f </fcat>
        </main>

您只需要标识模板即可复制现有节点...

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

然后是另一个模板来忽略非小写节点。在 XSLT 1.0 中,这可以通过使用 translate 语句来完成,将大写字母转换为小写字母,并检查结果是否不同

<xsl:template match="*[translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') != name()]" />

试试这个 XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes" />
    <xsl:template match="*[translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') != name()]" />
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

相关内容

  • 没有找到相关文章

最新更新