将XSLT应用于多个文件,就像它们已合并一样

时间:2013-06-21 15:49:48

标签: xml xslt

我对xslt的功能有疑问。我有一堆不同的xml文件,它们共享一个共同的xslt转换,将它们转换为html。但是,仅对单个xml文件应用转换不会提取有关它们的所有信息。某些文件具有其他共享xml文件,可帮助定义它们。因此,我需要能够对所有这些文件执行转换,就好像它们是单个文件而不实际合并文件一样。

例如,我们有一个名为“transform.xslt”的转换文件。我们将调用共享的xml文件“common.xml”和常规的xml文件“a.xml”。我们有另一个xml文件“b.xml”和另一个共享文件“other.xml”。为了有效地转换a.xml,common.xml和a.xml需要在transform.xslt中定义转换,就好像它们是单个文件一样。同样,为了有效地转换b.xml,common.xml,b.xml和other.xml都需要转换,就好像它们是合并的单个文件一样。我真的很想知道我是否可以创建导入转换xslt的xslt文件并指定哪些文件需要一起作为一个文件。这样,我可以创建一个a.xslt,b.xslt等,它将执行transform.xslt的转换,但是对不同的文件组进行转换,并为每个xslt生成一个输出(a.html,b.html)等等。)

如果它对任何人都有帮助,具体的用例是为WSDL创建文档页面。一些额外的信息,例如公共数据结构和类型,在common.xsd中声明。此外,一些WSDL引用了并非每个WSDL引用的其他XSD。

如果这个问题不清楚,我也真的很抱歉。出于某种原因,我很难准确地阐明我想要做的事情。这是一个可视化我正在思考的种类的概述

案例1:

  • 输入(在a.xslt中定义)

    • a.xml
    • common.xml
  • 转换(在a.xslt中导入)

    • transform.xslt
  • 输出
    • a.html

案例2:

  • 输入(在b.xslt中定义)
    • B.XML
    • common.xml
    • other.xml
  • 转换(在b.xslt中导入)
    • transform.xslt
  • 输出
    • b.html

如果有人仍然感到困惑,请告诉我。我会尽力解释清楚。

谢谢!

1 个答案:

答案 0 :(得分:1)

有一个名为doc的XPath函数(请参阅here),它允许您在xsl:variable中保存文件的内容。然后,您可以对变量进行操作,即将其传递给<xsl:apply-templates>,或者对其应用XPath表达式。 如果您需要更具体的帮助,请发布您的实际数据样本,我将为您设置XSLT。您使用的是XSLT / XPath版本1,2或3吗?