аз не съм много опитен в 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>
================= Output =============== link2
Отговори:
0 за отговор № 1Аз съм най-вече познае тук, но се дава:
<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" />
0 за отговор № 2
Опитайте тази
<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>