Используйте XSL для выбора значения неуникального элемента с уникальным атрибутом - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть XML-файл, подобный приведенному ниже, где есть несколько элементов с одинаковыми именами, но с разными атрибутами name.

<doc>
    <sub1>
        <vdf:field name="asset.title">
            <vdf:value>XYZTITLE</vdf:value>
        </vdf:field>
        <vdf:field name="asset.type">
            <vdf:value>XYZTYPE</vdf:value>
        </vdf:field>
    </sub1>
</doc>

Мне нужно проанализировать это с помощью таблицы стилей XML.Если бы имена элементов в файле XML были уникальными, я мог бы использовать что-то вроде -

<xsl:choose>
    <xsl:when test="doc/sub1/uniqueelement != ''">
        <xsl:value-of select="doc/sub1/uniqueelement"/>
    </xsl:when>
    <xsl:otherwise>Undefined</xsl:otherwise>
</xsl:choose>

Как я могу изменить вышеуказанный XSL, чтобы выбрать значение "XYZTITLE" в "vdf:поле "element, где name =" asset.title "?

1 Ответ

1 голос
/ 26 сентября 2019

Используйте предикат .Например, для следующего XML:

<doc>
    <sub1>
        <field name="asset.title">
            <value>XYZTITLE</value>
        </field>
        <field name="asset.type">
            <value>XYZTYPE</value>
        </field>
    </sub1>
</doc>

инструкция:

<xsl:value-of select="/doc/sub1/field[@name='asset.title']/value"/>

вернет:

XYZTITLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...