Запасите результат некоторого преобразования xslt, но не выводите его - PullRequest
0 голосов
/ 09 июня 2018

Я хочу использовать результат некоторого преобразования, которое я пишу в XSLT, но не выводить его.

Вот мой MWE.

xml файл:

<?xml version="1.0" encoding="utf-8"?>

<foo xmlns="urn:t">
    <bar>text</bar>
    <ignored>i</ignored>
</foo>

Таблица стилей:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="urn:t">

    <xsl:output method="text"/>

    <xsl:variable name="var">
        <xsl:apply-templates select="//foo"/>
    </xsl:variable>

    <xsl:template match="foo">
        <xsl:value of select="bar"/>
    </xsl:template>

</xsl:stylesheet>

Я собираюсь использовать $var в другом месте листа после его создания.

Когда я запускаю вещь,он выводит text.

Как сохранить результат соответствующего шаблона в переменной, не выводя его?

1 Ответ

0 голосов
/ 09 июня 2018

Глобальная переменная, которую вы объявили, вероятно, будет оцениваться вообще, только если вы ее где-то используете.Выходные данные, которые вы получаете, не выводятся из вашей переменной, а выводятся из вашего шаблона, совпадающего с foo, инициируемого выполнением встроенных шаблонов , см. https://xsltfiddle.liberty -development.net / nc4NzQi который является вашим кодом без переменной и производит этот вывод.Поэтому вам нужно либо переопределить встроенные шаблоны, чтобы ничего не делать, что, однако, было бы довольно бессмысленно, поскольку вы, конечно, хотите выполнить некоторую обработку, или вам нужно запустить код для вашей переменной совокупности в другом режиме, а затем иметьрежим по умолчанию выполняет другую обработку, но не обрабатывает foo элементов с <xsl:template match="foo"/>.

. Может быть, лучше объяснить более подробно, чего вы хотите достичь, или показать нам, где / как вы хотите использоватьпеременная, тогда должно быть проще сделать предложение, которое не так радикально, как переопределение встроенных шаблонов, чтобы ничего не делать.

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