我对Xml / Xslt没有多少经验,所以希望论坛能够原谅我的无知。我有以下xml结构,我试图获得标签"类别1"无论我的变量存在于子/孙子节点中的哪个位置: 能告诉你吗。
===== XML ============
<Result>
<sitemap>
<node>
<label>this is top node</label>
<node>
<label key="">Category 1</label>
<node>
<link>
<value>link1</value>
</link>
</node>
<node>
<link>
<value>link2</value>
</link>
<node>
<link>
<value>link21</value>
</link>
</node>
<node>
<link>
<value>link22</value>
</link>
</node>
</node>
</node>
<node>
<label key="">Category 2</label>
</node>
</node>
</sitemap>
</Result>
=================XSLT 2.0 ================
<xsl:variable name="myvalue" select="'link22'" />
<xsl:if test="//node[node[link/value=$myvalue]]/node">
<xsl:value-of select="//node[node[link/value=$myvalue]]/label" />
</xsl:if>
=================输出=============== LINK2
答案 0 :(得分:0)
试试这个
<xsl:variable name="myvalue" select="'link22'" />
<xsl:if test="//node[node/link/value=$myvalue]">
<xsl:value-of select="//node[node/link/value=$myvalue]/link/value" />
</xsl:if>
答案 1 :(得分:0)
我大多在猜这里,但是给出了:
<xsl:variable name="myvalue" select="'link22'" />
以下说明:
<xsl:value-of select="//link[value=$myvalue]/ancestor::node[label][1]/label" />
将返回:
Category 1
更有效的方法是使用密钥通过link
找到value
元素,即:
<xsl:key name="link-by-value" match="link" use="value" />
(在顶层),然后:
<xsl:value-of select="key('link-by-value', $myvalue)/ancestor::node[label][1]/label" />