如果不满足条件,我正在进行转换。
<?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="*"/>
我在命令行中使用以下调用运行样式表:
$> java -jar saxon9.jar -it:main -xsl:this_stylesheet.xsl dir="path/to/xx-XX"
条件检查文件夹是否不是en-GB。如果文件夹不是en-GB,则迭代xx-XX。如果文件夹是en-GB,则迭代将忽略该文件夹并移动到集合中的下一个文件夹。
问题是当满足该条件时(例如“path / to / en-GB”),虽然没有输出文件,但命令行上有一些输出,即结果文件的XML声明不会生成:
<?xml version="1.0" encoding="UTF-8"?>
我正在寻找一种避免这种局部输出的方法,例如:使它也以测试为条件,因此如果测试不成功则不输出任何内容。
答案 0 :(得分:1)
我认为你可以简单地使用例如<xsl:output method="text"/>
用于主要转化结果,并为您的文档添加<xsl:output name="docs" method="xml" version="1.0" encoding="UTF-8" indent="yes" />
,然后使用例如您未显示的代码部分中的<xsl:result-document format="docs" ...></xsl:result-document>
。
答案 1 :(得分:1)
另一种选择是使用<xsl:output method="xml" omit-xml-declaration="yes"/>
,然后有条件地将声明添加为文本。
请参阅此其他帖子以获取代码示例: