Как получить оцененное значение из переменной XSLT - PullRequest
0 голосов
/ 10 сентября 2018

Я делаю преобразование XML с использованием XSLT. Сценарий, с которым я столкнулся, состоит в том, что у меня есть много родительских элементов и дочерний элемент с тем же именем «OtherDetails» во всех родительских элементах. Итак, я повторяю родительский элемент, чтобы получить значение дочернего элемента «OtherDetails». Итак, я пытаюсь таким образом.

<xsl:if test".='Z'">
<xsl:variable name="parent" select="concat(name(..),'/OtherDetails')"/>
<xsl:value-of select="$parent" />
</xsl:if>

При попытке получить объединенную строку переменной $ parent, но мне нужно получить значение XPath переменной $ parent.

Мне нужно получить значения OtherDetails, когда значение элемента «Other» равно «Z» Пример XML:

<structure>
<Other/>
<OtherDetails>Value1</OtherDetails>
</structure>
<power>
<Other>Z</Other>
<OtherDetails>Value2</OtherDetails>
</power>
<restrict>
<Other>Z</Other>
<OtherDetails>Value3</OtherDetails>
</restrict>

1 Ответ

0 голосов
/ 10 сентября 2018

Я думаю, что вам нужно сделать только это ...

<xsl:variable name="parent" select="../OtherDetails"/>

Предполагается, что вы находитесь на узле Other и хотите получить OtherDetails под тем же родителем.

Обратите внимание, вы также можете сделать это, но это будет работать, только если OtherDetails всегда следовал Other

<xsl:variable name="parent" select="following-sibling::OtherDetails"/>

Также обратите внимание, что переменные имеют локальную область видимости. Вы не сможете использовать $parent вне xsl:if в вашем конкретном примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...