在测试条件不满足时避免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"?>