2009-10-19 42 views
2

我正在尝试此操作,看起来无法使其工作。有人可以看看,看看我是否缺少明显的东西。从单个xslt采购多个xml文档

我在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文档与独特的架构,其中包含项目特定的子部分,如支持,将包含文件路径,电话号码等

我的问题是如何从一个单一的xslt ?

感谢

回答

3

看一看的文件()功能。

这个article提供了它的用法的概述。

+1

也在这里:http://www.w3schools.com/xsl/func_document.asp – Murph 2009-10-19 21:41:21

0

当然,您可以在样式表中使用两次xsl:document()函数。但为什么你想这样呢?似乎没有明显的理由这样做。

其他选项是XPath或xsl:document元素的fn:doc()函数。

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>