是否有任何技巧可以通过一个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中,我只知道它的模式。
答案 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()
。