2009-10-19 20 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>