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

标签 xml xslt xpath 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中,这可以通过使用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>

关于xml - 如何使用 XSLT 1.0 获取小写的 xml 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859544/

相关文章:

html - XML、S-Expressions 和重叠作用域……它叫什么?

xml - 如何将 xslt 中的参数用作 XPath?

xml - 如何找出xml是否包含两个或两个以上带有xsl和Xpath的相等属性名称?

java - 如果属性具有特定值,则删除 XML 节点

PYTHON 解析位于目录中的多个文件 XML 并上传 CSV 文件中的数据

xml - 我应该在 WCF 之前学习 XML 吗?

java - XPath 在java中选择文档中具有指定名称的所有节点

sorting - 使用带有 xsl :sort 的前置兄弟

r - html_nodes 给出 {xml_nodeset (0)}

python - 如何通过先前 xpath 搜索的结果执行 lxml xpath 搜索?