如何使用XSLT处理输入XML中引用的XML文件?
假设我的输入XML文件中有一个指向另一个XML文件的引用(URL)。我想处理这个引用的XML文件,就好像它是我的样式表/模板的输入一样。我该怎么做?如何使用XSLT处理输入XML中引用的XML文件?,xml,xslt,reference,include,Xml,Xslt,Reference,Include,假设我的输入XML文件中有一个指向另一个XML文件的引用(URL)。我想处理这个引用的XML文件,就好像它是我的样式表/模板的输入一样。我该怎么做? <xsl:copy-of select="document('document.xml')/rootnode/subnode" /> <xsl:copy-of select="document('http://example.com/document.xml')/rootnode/subnode" /> 使用标准XSLT函
<xsl:copy-of select="document('document.xml')/rootnode/subnode" />
<xsl:copy-of select="document('http://example.com/document.xml')/rootnode/subnode" />
使用标准XSLT函数,如下所示:
<xsl:template match="someElementContainingURL">
<xsl:apply-templates select="document(string(.))" mode="doc2"/>
</xsl:template>
在上面的示例中,我们假设在源XML文档中,名为someElementContainingURL
的元素(用特定XML文档中的实际元素名称替换)包含要处理的第二个文档的URL
在模板匹配
someElementContainingURL
中,当将当前节点的字符串值作为参数传递时,我们将模板应用于document()
函数的结果。最好以不同的模式组织第二个文档的处理,以便两个文档中相同的节点名称和节点类型可以由不同的模板处理,避免冲突。使用标准XSLT函数,如下所示:
<xsl:template match="someElementContainingURL">
<xsl:apply-templates select="document(string(.))" mode="doc2"/>
</xsl:template>
在上面的示例中,我们假设在源XML文档中,名为someElementContainingURL
的元素(用特定XML文档中的实际元素名称替换)包含要处理的第二个文档的URL
在模板匹配
someElementContainingURL
中,当将当前节点的字符串值作为参数传递时,我们将模板应用于document()
函数的结果。最好以不同的模式组织第二个文档的处理,以便两个文档中相同的节点名称和节点类型可以用不同的模板处理,避免冲突。好问题,+1。请参阅我的答案,以获得一个简单而标准的解决方案。好问题,+1。请参阅我的答案,以获得简单而标准的解决方案。