我正在使用xsl:result-document将输入XML文件拆分为多个子文档。当我的转换在输入文件上的大型数组上运行时,一些输入“有数据”,使得xsl:result-document尝试两次创建相同的输出文件,从而遇到错误。
理想情况下,我想在文件扩展名之前创建一个附加了“_2”的第二个文档。我是XSL 2.0的新手,无法想象我如何实现这一目标。有一个数组(更像是一个地图)是文档的全局,我可以保持每个输出文件名(连同计数器)将是伟大的。在XSL中执行此操作似乎并非简单的任务。有没有人对如何解决这个问题有任何想法?
XSL变量的范围让我感到困惑,我想知道这是否可能。例如,如果我在匹配的第一个模板中创建一个变量,那么模板中是否可以看到该变量,该变量是从第一个匹配的模板中调用模板“调用”的结果?
另一个想法是,可以使用一些疯狂的“身份转换”来查找重复项并在进一步模板匹配之前将“_2”附加到数据中吗?
感谢您的时间。
使用结果文档用法示例进行编辑:
<xsl:result-document href="{$directory_name}{$misc_string}.xml" format="MainOutput" cdata-section-elements="SomeSection">
克里斯
答案 0 :(得分:1)
您可以使用generate-id() ...
<xsl:result-document href="{$directory_name}{$misc_string}{generate-id()}.xml"
format="MainOutput" cdata-section-elements="SomeSection">
您也可以使用xsl:number,但如果没有工作示例(XML和XSLT),则很难提供示例。 (上下文非常重要。)这很可能是它的样子:
<xsl:variable name="nbr">
<xsl:number level="any"/>
</xsl:variable>
<xsl:result-document href="{$directory_name}{$misc_string}_{$nbr}.xml"
format="MainOutput" cdata-section-elements="SomeSection">
查看xsl:number
链接并了解一些属性(例如@count
),并且应该这样做。