XSL选择器,其中属性可以是大写或小写

时间:2018-11-09 16:35:58

标签: xml xslt

其中属性可以是大写或小写(或组合)的节点值的XSL选择器是什么?这是一个示例(我剥离了许多不相关的XML)。第一个具有“ NetworkID”属性。后者是“ networkid”。我需要获取“身份”节点的值。

属性是“ NetworkID”。

<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="1541780158582-6094783182107158181@216.109.111.67" timestamp="2018-11-09T08:15:58-08:00">
    <Header>
        <To>
            <Credential domain="networkid">
                <Identity>AN01000000000-T</Identity>
            </Credential>
        </To>
    </Header>
</cXML>

属性为“ networkid”。

<?xml version="1.0" encoding="UTF-8"?>
<cXML payloadID="1541780158582-6094783182107158181@216.109.111.67" timestamp="2018-11-09T08:15:58-08:00">
    <Header>
        <To>
            <Credential domain="NetworkID">
                <Identity>AN01000000000-T</Identity>
            </Credential>
        </To>
    </Header>
</cXML>

有没有一种方法可以忽略大小写?

<xsl:value-of select="Header/To/Credential[@domain='networkid']/Identity"/>

在我的应用程序中,以上情况仅在一种情况下有效。我被迫手动更改它以使其在另一个中工作(但它打破了以前的规则)。

1 个答案:

答案 0 :(得分:0)

如果可以使用XSLT 2.0,请替换以下内容:

<xsl:value-of select="Header/To/Credential[@domain='networkid']/Identity"/>

具有:

<xsl:value-of select="Header/To/Credential[lower-case(@domain)='networkid']/Identity"/>

在XSLT 1.0中,定义:

<xsl:variable name="upper-case" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="lower-case" select="'abcdefghijklmnopqrstuvwxyz'"/>

然后使用:

<xsl:value-of select="Header/To/Credential[translate(@domain, $upper-case, $lower-case)='networkid']/Identity"/>
相关问题