如何使用 XSLT 1.0 获取小写的 xml 节点
How to get xml Nodes which are in lower case using XSLT 1.0
我需要使用 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>
Mu 期望的输出是
<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 中,这可以通过使用翻译语句来完成,将大写字母翻译成小写字母,并检查结果是否不同
<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>
我需要使用 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>
Mu 期望的输出是
<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 中,这可以通过使用翻译语句来完成,将大写字母翻译成小写字母,并检查结果是否不同
<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>