我正在处理一些 XSLT 转换。这些转换必须以自动化的方式每天应用于数千个 XML 文档。生成的文件应输出到目标目录。
请注意,有些转换产生 XML,有些产生纯文本。
我有一个新要求,即当输入 XML 包含某些值时,某些 XSLT 转换根本不应该产生任何输出,也不应该写入任何文件。
我正在.net 中处理来自 XSLT 的输出,因此对于产生文本的 XSLT,我只需检查结果输出是空白还是只有空格;在这种情况下,我不写文件,一切都很完美。
当我尝试从产生 XML 的 XSLT 识别空白输出时,问题就出现了,因为即使我指定在我的块中不应该输出任何内容,即使文档是空白xsl:template
的,输出也会包含 XML doctype 。<?xml version="1.0" encoding="UTF-8"?>
该问题的一种解决方案是让我的 .net 代码过滤掉仅包含 XML doctype 的文档,但我不确定最好的方法是什么。到目前为止,我已经尝试过 and xml.Trim().StartsWith("<?xml") && xml.Trim().EndsWith("?>")
,但我不知道它有多防弹。
如果我能以某种方式使我的 XSLT 仅在有数据要输出的情况下输出文档类型,那可能会更好。我尝试将<xsl:output>
节点放在节点内<xsl:if>
,但这不起作用。
什么是获得我需要的结果的好方法?