如何在XSLT中处理更多的XML文档?

时间:2010-05-12 10:21:12

标签: xml xslt

是否有任何技巧可以通过一个XSLT匹配两个XML?我的意思是我可以将XSLT应用于传递的参数。

例如(我错过了声明简短)。 XML1:要转换的XML:

<myData>
   <Collection>

   </Collection>
</myData>

XSLT需要应用于以前的XML:

<xsl:param name='items' />
<xsl:template match='Collection'>
    <!-- some transformation here -->
</xsl:template>

XML2:作为参数'items'传递的XML数据:

<newData>
   <Item>1</Item>
   <Item>2</Item>
   <Item>3</Item>
</newData>

我需要使用XSLT为XML2中的每个'Item'元素在XML1中的'Collection'节点中创建一组节点。而且我不知道XML2在设计时究竟包含了什么。它是在运行时生成的,所以我不能将它放在XSLT中,我只知道它的模式。

2 个答案:

答案 0 :(得分:1)

(1)。您可以生成XSLT而不是使用静态XSLT:

用xslt1转换xml2,导致xslt2
使用xslt2转换xml1,这将导致所需的输出

(2)。您可以使用document()函数加载xml2。这需要将xml2持久化到磁盘或由uri访问。

      <xsl:copy-of select="document('xml2.xml')//newData" />  

答案 1 :(得分:1)

阅读并使用标准XSLT函数document()