Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 存储一些xslt转换的结果,但不要输出它_Xml_Variables_Xslt - Fatal编程技术网

Xml 存储一些xslt转换的结果,但不要输出它

Xml 存储一些xslt转换的结果,但不要输出它,xml,variables,xslt,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

我想使用我在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,我希望能够在工作表的其他地方使用它

当我运行这个东西时,它会输出文本


如何将匹配模板的结果存储在变量中,而不输出它?

您声明的全局变量可能只会在某个地方使用时进行计算。您得到的输出不是来自变量的输出,而是来自由执行触发的与foo匹配的模板的输出,请查看哪一个是不带变量的代码并生成该输出。因此,您要么需要重写内置模板,什么也不做,但这是毫无意义的,因为您肯定希望执行一些处理,要么需要在不同的模式下运行变量填充的代码,然后让默认模式执行其他处理,但不让它处理带有的foo元素


您最好更详细地解释您想要实现的目标,或者向我们展示您想要在何处/如何使用该变量,这样就更容易提出一个建议,而不是像重写内置模板那样激进,什么都不做。

在catalog.xml文件中,我写了一个xml文件列表,将uri存储为每个文件的一个元素。我希望能够编写一个xslt文件,将uri信息提取到一个或多个文件中,然后在其上运行xslt转换(可能来自多个xslt文件),然后将其输出到单个文件。现在阻止我的部分是从列表中获取uri,其余部分我应该能够管理。如果您有一个catalog.xml,其中包含一些要选择的uri元素,那么doc'catalog.xml'//uri允许您这样做,我不明白为什么需要任何模板。因此,我看不出你含糊不清的问题与你现在在评论中提出的问题之间有任何关系。我在这里找到了我问题的答案: