在测试条件不满足时避免XML声明

在测试条件不满足时避免XML声明,xml,xslt,filter,Xml,Xslt,Filter,如果条件不满足,我正在运行转换 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="urn:oasis:names:tc:xliff:document:1.1" version="2.0"> <!-- this captures

如果条件不满足,我正在运行转换

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xpath-default-namespace="urn:oasis:names:tc:xliff:document:1.1"
    version="2.0">

    <!-- this captures the folder parameter given in the call -->  
    <xsl:param name="dir" select="dir" />

    <!-- this template iterates through the files in the input folder except for en-GB --> 
    <xsl:template name="main">
        <xsl:if test="not(contains($dir, 'en-GB'))">
            <xsl:variable name="input-files" select="concat($dir, '?select=*.xlf')" />
            <xsl:apply-templates select="collection($input-files)"/>
        </xsl:if>
    </xsl:template>

    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:strip-space elements="*"/> 
该条件检查文件夹是否不是en GB。如果文件夹不是en GB,则迭代xx。如果文件夹为en GB,则迭代将忽略该文件夹并移动到集合中的下一个文件夹

问题是,当满足该条件(例如“path/to/en-GB”)时,尽管没有输出文件,但命令行上仍有一些输出,即不会生成结果文件的XML声明:

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


我正在寻找一种避免这种部分输出的方法,例如,使其也以测试为条件,因此,如果测试不成功,则不会输出任何内容。

我认为您可以简单地使用例如
作为主要转换结果,为您的文档添加
,然后在未显示的代码部分使用例如

我认为您可以简单地使用例如
作为主要转换结果转换结果并为您的文档添加
,然后在未显示的代码部分使用

另一个选项是使用
,然后有条件地将声明作为文本重新添加

有关代码示例,请参阅另一篇文章:


另一种选择是使用
,然后有条件地将声明添加回文本中

有关代码示例,请参阅另一篇文章:


您不希望从该样式表向控制台输出任何内容,是吗?通常,如果样式表不使用
xsl:result document
生成任何文档,那么,如中所述,“如果在转换过程中未计算xsl:result-document指令,则当结果序列为空时也会创建隐式结果树。在这种情况下,隐式结果树将由一个没有子节点的文档节点组成。“。最好将主输出方法更改为
text
,并对
xsl:result document
指令使用不同的方法。不,不需要向控制台输出。谢谢。您不希望从该样式表向控制台输出任何内容,是吗?通常,如果样式表不使用
xsl:result document
生成任何文档,那么,如中所述,“如果在转换过程中未计算xsl:result-document指令,则当结果序列为空时也会创建隐式结果树。在这种情况下,隐式结果树将由一个没有子节点的文档节点组成。“。最好将主输出方法更改为
text
,并对
xsl:result document
指令使用不同的方法。不,不需要向控制台输出。谢谢。我没有试过,但是假设它在XSLT2.0中也能工作,这个方法听起来也不错。我没有试过,但是假设它在XSLT2.0中也能工作,这个方法听起来也不错。
<?xml version="1.0" encoding="UTF-8"?>