我正在尝试这个并且似乎无法让它发挥作用。有人可以看看我是否遗漏了一些明显的东西。
我在test.xsl中引用了这样的额外文档。
<xsl:value-of select="document('/customercare/library/test/test1.xml')/resources/resource/name" />
这是xml test1.xml。
<resources>
<resource>
<name>configuration</name>
</resource>
</resources>
这是我的asp页面index.aspx中的片段调用。
<%
Dim mm_xsl As MM.XSLTransform = new MM.XSLTransform()
mm_xsl.setXML(Server.MapPath("/customercare/library/test/test2.xml"))
mm_xsl.setXSL(Server.MapPath("/customercare/library/test/test.xsl"))
Response.write(mm_xsl.Transform())
%>
我正在构建一个拥有数百种产品的网站。我想有一个包含高级详细信息的xml文档,例如可以从任何地方获取的每个产品的名称和图像路径,这将具有唯一的模式。然后让另一个xml doc具有唯一的模式,该模式包含特定于子部分的项目,例如包含文档路径,电话号码等的支持。
我的问题是如何从单个xslt中获取两个xml文档?
谢谢
答案 0 :(得分:3)
查看 document()函数。
此article概述了其用法。
答案 1 :(得分:1)
当我以您描述的方式使用XML文档时(即在转换期间要引用的查找表),我通常将它们加载到变换顶部的变量中:
<xsl:stylesheet...>
<xsl:variable name='resources' select=document('resources.xml')/>
<xsl:variable name='products' select="$resources/resources/products/product"/>
然后我可以在适当的地方查找这些变量的信息,例如:
<xsl:template match='product'>
<tr>
<td>
<xsl:value-of select='@id'/>
</td>
<td>
<xsl:value-of select='@description'/>
<td>
<td>
<img src='{$products[@id=current()/@id]/image}'/>
</td>
</tr>
<xsl:template>
答案 2 :(得分:0)
当然,您可以在样式表中使用xsl:document()函数两次。但是你为什么这么想呢?似乎没有明显的理由这样做。
其他选项是XPath的fn:doc()函数或xsl:document元素。