Переменная xslt со структурой xml - PullRequest
1 голос
/ 03 апреля 2019

Мне нужно ввести в переменную внутреннюю структуру узла, проблема в том, что у узла разные пути по разным причинам.То, что я делаю до сих пор, это

<xsl:variable name="my_variable">
  <xsl:choose>
    <xsl:when test="One/Path/To/TheNode">
      <xsl:value-of select="One/Path/To/TheNode"/>
    </xsl:when>
    <xsl:when test="One/Different/Path/To/TheNode">
      <xsl:value-of select="One/Different/Path/To/TheNode"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="//TheNode"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

И затем, если я использую эту переменную для получения некоторого подузла:

   <xsl:variable name="other_variable" select="$my_variable/Subnode"/>

Я получаю эту ошибку во время выполнения XPath error : Invalid type Evaluating global variable var/param being computed failed, я пыталсятоже при этом:

<xsl:variable name="other_variable" select="ext:node-set($my_variable)/SubNode"/>

Я не получаю никакой ошибки при выполнении xslt, но other_variable пусто.Проверка содержимого my_variable делает <xsl:value-of select="$my_variable"/> или <xsl:apply-templates mode="copy" select="ext:node-set($my_variable)"/> Я могу видеть данные, но без структуры XML, я имею в виду, я могу видеть bar, но не <foo>bar</bar>.

Есть ли какой-либо способчтобы получить эту структуру из другого пути без использования <xsl:variable name="my_variable" select="//TheNode"/> ??

Спасибо.

1 Ответ

1 голос
/ 03 апреля 2019

Инструкция xsl:value-of создаст текстовый узел со строковым значением выбранного узла - или, точнее, первого узла выбранного набора узлов (в XSLT 1.0).

Если вы хотите сохранить структуру, используйте вместо нее инструкцию xsl:copy-of.

...