Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将xml文件递归加载到一个共同响应的xslt文件?_Xml_Xslt - Fatal编程技术网

如何将xml文件递归加载到一个共同响应的xslt文件?

如何将xml文件递归加载到一个共同响应的xslt文件?,xml,xslt,Xml,Xslt,我有10个相同布局的xml文件,需要用相同的xslt文件转换它们。所以我的问题是: 是否有一种方法可以将xml文件名作为参数,并在XSLT文件中加载这些xml文件并递归转换它们 因为通常,xml和xslt是通过在xml文件中指定xslt名称绑定的,如下所示。 这是一对一的关系。 那么,xslt中是否有某种doc函数可以实现另一种功能:加载xml XSLT文件中的文件是否为一对多关系 一些示例代码将受到高度赞赏!谢谢。XSLT具有加载外部XML文件的功能 请参见以下问题:。 在这个答案中,XSD(

我有10个相同布局的xml文件,需要用相同的xslt文件转换它们。所以我的问题是: 是否有一种方法可以将xml文件名作为参数,并在XSLT文件中加载这些xml文件并递归转换它们

因为通常,xml和xslt是通过在xml文件中指定xslt名称绑定的,如下所示。 这是一对一的关系。 那么,xslt中是否有某种doc函数可以实现另一种功能:加载xml XSLT文件中的文件是否为一对多关系

一些示例代码将受到高度赞赏!谢谢。

XSLT具有加载外部XML文件的功能

请参见以下问题:。
在这个答案中,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
    或扩展和多输出)

注意没有递归