如何将xml文件递归加载到一个共同响应的xslt文件?
我有10个相同布局的xml文件,需要用相同的xslt文件转换它们。所以我的问题是: 是否有一种方法可以将xml文件名作为参数,并在XSLT文件中加载这些xml文件并递归转换它们 因为通常,xml和xslt是通过在xml文件中指定xslt名称绑定的,如下所示。 这是一对一的关系。 那么,xslt中是否有某种doc函数可以实现另一种功能:加载xml XSLT文件中的文件是否为一对多关系 一些示例代码将受到高度赞赏!谢谢。XSLT具有加载外部XML文件的功能 请参见以下问题:。如何将xml文件递归加载到一个共同响应的xslt文件?,xml,xslt,Xml,Xslt,我有10个相同布局的xml文件,需要用相同的xslt文件转换它们。所以我的问题是: 是否有一种方法可以将xml文件名作为参数,并在XSLT文件中加载这些xml文件并递归转换它们 因为通常,xml和xslt是通过在xml文件中指定xslt名称绑定的,如下所示。 这是一对一的关系。 那么,xslt中是否有某种doc函数可以实现另一种功能:加载xml XSLT文件中的文件是否为一对多关系 一些示例代码将受到高度赞赏!谢谢。XSLT具有加载外部XML文件的功能 请参见以下问题:。 在这个答案中,XSD(
在这个答案中,XSD(您的XML)使用
文档加载到XSLT中。如果您使用的是XSLT 2,您可以使用索引XML文件:
<?xml-stylesheet href="your-stylesheet.xsl" ?>
<index>
<doc href="doc1.xml" />
<doc href="doc2.xml" />
[...]
</index>
[...]
然后利用写入结果文件:
<xsl:template match="/index/doc">
<xsl:variable name="target" select="concat(@href, '.result.html')" />
<xsl:result-document href="$target">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Document</title></head>
<body>
<xsl:apply-templates select="document(@href, .)/" />
</body>
</html>
</xsl:result-document>
</xsl:template>
文件
要转换具有相同样式表的多个文件,通常使用包含要转换文件路径的文件作为输入xml
然后解析输入文件,并使用document函数将模板应用于多个文件。这是正确的XSLT1.0/2.0方法
如果还需要为每个文件生成单独的输出,可以使用XSLT 2.0指令xs:result document
或等效的XSLT 1.0 EXSLT扩展名
因此,最后您可以:
- 1对1(单输入->单输出)
- n到1(多输入,带有
文档()
->单输出)
- n到n(使用
document()
->xsl:result document
或扩展和多输出进行多输入)
- 1到n(单输入->
xsl:result document
或扩展和多输出)
注意没有递归