使用XSL选择具有唯一属性的非唯一元素的值

时间:2019-09-26 05:37:46

标签: xml parsing xslt

我有一个如下所示的XML文件,其中有多个具有相同名称但元素名称属性不同的元素。

<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,以在“ vdf:field”元素中选择“ XYZTITLE”的值,其中name =“ asset.title”?

1 个答案:

答案 0 :(得分:1)

使用predicate。例如,对于以下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