我遇到了一个预期的问题,我想知道是否有比我更好的解决方案。
因此,我有一个文档节点变量:
<xsl:variable name="variableNode" as="document-node()">
<xsl:document>
<root>
<element>...content...</element>
<root>
</xsl:document>
</xsl:variable>
此文档节点变量的内容稍后由for-each循环处理:
<xsl:for-each select="$variableNode/root/element">
...content...
</xsl:for-each>
从这个for-each循环的内容中,我尝试通过此xslt样式表获取实际xml文件beeing过程的元素。但这没有用。
因此,我将文件名放入这样的变量中
<xsl:variable name="actual_filename" select="base-uri()"/>
并通过doc-Function获得了所需的元素。(doc($ actual_filename)/)
在我的情况下,这很好用,但是我想知道这是否是一个优雅的解决方案,尤其是如果输入的不是文件而是其他一些xml内容时。
您能想到更好的解决方案吗?谢谢!
通常的方法是顶层
<xsl:variable name="main-root" select="/"/>
将主输入文档节点存储在变量中,然后在for-each或带有来自其他文档的上下文节点的模板中,您始终可以访问变量
<xsl:for-each select="$variableNode/root/element">
<xsl:value-of select="$main-root//foo[@id = current()/@id]"/>
</xsl:for-each>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句