遇到
的XML时<entity1>
<name>2345</name>
<type notNull="1" size="normal">select</type>
<value>D</value>
<options>
<option />
<option>
<value>A</value>
<show>Alpha</show>
</option>
<option>
<value>B</value>
<show>Beta</show>
</option>
<option>
<value>G</value>
<show>Gamma</show>
</option>
<option>
<value>D</value>
<show>Delta</show>
<selected />
</option>
</entity1>
如何从entity1中提取“Delta”,根据值或“&lt; selected /&gt;”进行加工标记
谢谢!
答案 0 :(得分:2)
假设当前上下文节点是entity1
,您可以使用
<xsl:value-of select="options/option[selected]/show" />
根据<selected/>
元素或
<xsl:value-of select="options/option[value=current()/value]/show"/>
根据匹配<value>
找到它(current()
函数为您提供当前上下文节点,即.
顶层select
的任何内容表达式,在本例中为entity1
)。
答案 1 :(得分:0)
您可以使用variable,如下所示:
<xsl:template match="/entity1">
<xsl:variable name="selected" select="value"></xsl:variable>
<xsl:value-of select="options/option[value=$selected]/show"/>
</xsl:template>
对于批量查找,更好的选择是使用key
<xsl:key name="selected" match="/entity1/options/option" use="value" />
<xsl:template match="/entity1">
<xsl:value-of select="key('selected', value)/show"></xsl:value-of>
</xsl:template>