库存一些xslt转换的结果,但不输出它

时间:2018-06-09 11:31:29

标签: xml variables xslt

我想使用我在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 :(得分:0)

如果你在某处使用它,你声明的全局变量可能只会被评估。您获得的输出不是从您的变量输出,而是由执行built-in templates触发的匹配foo的模板输出,请参阅https://xsltfiddle.liberty-development.net/nc4NzQi这是没有变量的代码并生成该输出。所以你要么需要覆盖内置模板什么都不做,然而这是毫无意义的,因为你当然想要执行一些处理,或者你需要以不同的模式为你的变量填充运行你的代码然后让它默认模式执行其他处理,但不使用foo处理<xsl:template match="foo"/>个元素。

你可能更好地解释一下你想要实现的目标,或者向我们展示你想要使用变量的地方/方式,然后应该更容易提出一个不如重写内置的建议模板什么都不做。