我試圖獲取外部文檔的節點值,但無法獲取任何可用的東西。XSL 1.0如何從外部獲取文檔
這是這是文件被轉化companys.xml
<INVENTORY>
<PRODUCTS>
<ITEMS>
<ITEM TYPE="Toys">111111</ITEM>
</ITEMS>
</PRODUCTS>
<PRODUCTS>
<ITEMS>
<ITEM TYPE="Toys">222222</ITEM>
</ITEMS>
</PRODUCTS>
<INVENTORY>
這是xsl代碼products.xml
<TESTS>
<CHILD>
<KEY>111111</KEY>
<PRODUCT>Toy 1</PRODUCT>
</CHILD>
<CHILD>
<KEY>222222</KEY>
<PRODUCT>Toy 2</PRODUCT>
</CHILD>
</TESTS>
我
<xsl:variable name="lookupDoc" select="document('products.xml')" />
<xsl:key name="product-lookup" match="KEY" use="."/>
<xsl:template match="PRODUCT_HTML">
<xsl:value-of select="./@TYPE"/> <xsl:value-of select="."/> <xsl:value-of select="$lookupDoc/exam-lookup" />
</xsl:template>
我是什麼從這得到是
Toys 111111
我想要得到的是
Toys 111111 Toy 1
你能幫我嗎?
謝謝,
亞歷
非常感謝您的幫助!我很親密。當我使用 時,它會打印玩具111111111111玩具1,所以它抓住了KEY和PRODUCT。當我執行 時,出現XSL tarnsformation錯誤「無法在XPath表達式中使用結果樹fragmentError,無法使用結果樹片段」。如果我只能打印相應PRODUCT節點的玩具1值,我就會被設置。 –
AlexScript
@AlexScript,我的錯誤。這與XSLT中的隱式類型轉換有關。一個直接綁定到節點的變量(比如'select')會給你一個節點引用,你可以在以後的XPath表達式中使用它。但是當你使用'value-of'時,它將結果轉換爲一個字符串。你有幾個選擇。如果你想要的只是產品名稱,你可以直接在'key()'表達式的'/ PRODUCT'上完成(見編輯)。或者,你可以在'for-each'內進行進一步的處理(如果你需要和其他的'CHILD'的其他部分一起工作,最後你可以使用'node-set'擴展名。 – harpo
謝謝@harpo!你是一個巨大的幫助!!非常感謝。 – AlexScript