XSLT: проверьте, существует ли тег в выведенном XML - PullRequest
2 голосов
/ 26 мая 2011

Как я могу проверить, существует ли тег с помощью xslt?Разница в том, что я хочу проверить созданный мной XML (не входной XML).

Вроде как <xsl:when test="phone">, но вместо этого вывод.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Дерево результатов таблицы стилей доступно только для записи.Если вы хотите прочитать это, вы можете сделать это из другого преобразования - конвейеры преобразований являются полезным шаблоном проектирования.Но вы не сказали, какую проблему вы пытаетесь решить.

1 голос
/ 26 мая 2011

Если вы не объедините две таблицы стилей, где вторая принимает результат от первой в качестве входных данных, или если вы не сохраните результат в переменной, например,

<xsl:variable name="temp-result">
 <xsl:apply-templates/>
<xsl:variable>

<xsl:if test="$temp-result//phone">
  <xsl:copy-of select="$temp-result"/>
</xsl:if>

Я не думаю, что есть выход.Обратите внимание, что описанный выше подход с переменной работает таким же образом с XSLT 2.0, а с 1.0 вам потребуется использовать функцию расширения, например exsl:node-set в test="exsl:node-set($temp-result)//phone".

Третий вариант может существовать в XSLT 2.0 с поддержкой схемы.проверяя результат по схеме, вы можете убедиться, что результат является экземпляром схемы.

...