使用Saxon在Altova XML中使用xsl:result-document的奇怪行为
发布时间:2020-12-16 23:29:31 所属栏目:百科 来源:网络整理
导读:我的输入文件: folders folder name="a" level="1" metadataFile="LVM20metadata.tsv" subfolder name="a/er" level="2" filter="no" / subfolder name="a/ir" level="2" filter="yes" / subfolder name="a/ar" level="2" filter="no" / subfolder name="a/
我的输入文件:
<folders> <folder name="a" level="1" metadataFile="LVM20metadata.tsv"> <subfolder name="a/er" level="2" filter="no" /> <subfolder name="a/ir" level="2" filter="yes" /> <subfolder name="a/ar" level="2" filter="no" /> <subfolder name="a/or" level="2" filter="yes" /> </folder> <folder name="b" level="1" metadataFile="LVM21metadata.tsv"> <subfolder name="b/er" level="2" filter="no" /> <subfolder name="b/ir" level="2" filter="yes" /> <subfolder name="b/ar" level="2" filter="no" /> <subfolder name="b/or" level="2" filter="yes" /> </folder> </folders> 我的样式表: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions " exclude-result-prefixes="fn xs"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="folders"> <xsl:apply-templates/> </xsl:template> <xsl:template match="folder"> <xsl:result-document method="xml" standalone="yes" href="{@name}.xml"> <hello></hello> </xsl:result-document> </xsl:template> </xsl:stylesheet> 它不会创建两个结果文档.这是为什么? (使用saxon9he) 这不应该创建两个名为a.xml和b.xml的XML文档吗? 解决方法
如果您从oXygen运行样式表,或者在您的Altova案例中运行样式表,那么这实际上是一个已知的功能(或者如果您愿意,可以使用bug).我不确定目前的版本是否还有这个“功能”,但它的工作原理如下:
>如果没有主要结果文档(即生成空序列) 我相信这是因为这些工具使用某种UriResolver来重定向主要结果.如果没有输出,则不调用UriResolver,但随后由下一个辅助输出调用,从而导致此行为.这就是为什么这个文件最终出现在系统的临时文件位置的原因(你会发现那里的主要输出文件也有“正常”变换). 每当我遇到这种情况并且我不喜欢这种行为时,简单的解决方案就是创建一个虚拟的主要结果文档.在你的情况下,这可能是这样的: <xsl:template match="/"> <root>Primary result doc,please ignore,see other files.</root> <xsl:apply-templates/> </xsl:template> 我相信有一个系统属性或环境变量可以用来询问它是否在UI中运行,或者在没有它的情况下,在调用命令行中添加一个设置静态参数的参数(不幸的是,这仅适用于在XSLT 3.0中,您可以在use-when中使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |