Селектор XSL, где атрибут может быть прописным или строчным - PullRequest
0 голосов
/ 09 ноября 2018

Что такое селектор 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 голосов
/ 09 ноября 2018

Если вы можете использовать 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...