Я отправил другой вопрос с одним из аспектов. Мне сказали прояснить вопрос, но этот вопрос уже был довольно длинным и сложным, поэтому я создал новый.
Я хочу знать, существует ли стандартный способ ссылки на атрибут узла current при проверке выражения XPath для другого.
В качестве примера рассмотрим следующий XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="potato/stem[eye]">
In session <xsl:value-of select="@sessionID"/>, the potato had <xsl:value-of select="/potato/stem[@sessionID=@sessionID][scc]/scc/@leafnumber"/> s.c.c. leaves.
</xsl:for-each>
</xsl:template>
(источник XML в нижней части этого вопроса.)
(Обратите внимание, что for-each ссылается на узлы типа stem [eye], но запрашиваемое второе значение ссылается на узлы типа stem [scc], которые находятся в другой ветви исходного XML-дерева.)
Теперь, очевидно, часть этого "@ sessionID = @ sessoinID" в большинстве случаев не имеет смысла, поскольку XPath воспринимает это как "значение атрибута sessionID узла должно равняться ... значению атрибута sessionID узла". . "
Но то, что я хочу сказать, это «Проверить, чтобы убедиться, что значение атрибута seesionID этого узла (значение в выражении XPath) совпадает с sessionID узла любого узла / stem [eye] узла I». я сейчас нахожусь. "
Я не могу сделать это с переменной, потому что вы не можете объявлять переменную в предложении for-each.
Для справки, это источник XML. Его структура - не то, что хотелось бы, а то, с чем мне приходится работать.
<?xml version="1.0" encoding="utf-8"?>
<potato>
<stem sessionID="1">
<eye number = "25"/>
</stem>
<stem sessionID="3">
<eye number = "33"/>
</stem>
<stem sessionID="1">
<scc leafnumber = "234" />
</stem>
<stem sessionID="2">
<scc leafnumber = "433"/>
</stem>
<stem sessionID="3">
<scc leafnumber = "463"/>
</stem>
<stem sessionID="1">
<agd leafnumber = "154"/>
</stem>
<stem sessionID="2">
<agd leafnumber = "233"/>
</stem>
<stem sessionID="3">
<agd leafnumber = "113"/>
</stem>
</potato>
Вывод, который я ищу:
На первом сеансе картофель имел 234 с.с. листья.
На третьем занятии у картофеля было 463 с.с. листья.
(Конечно, это всего лишь пример песочницы. Я понимаю, что, возможно, есть простые способы выполнить вышеприведенный вывод совершенно другим способом, но я надеюсь, что этот пример натолкнется на мой вопрос, а именно, как использовать значения, связанные с текущий узел (скажем, в for-each) в предикате для XPath ищет другой.)