我試圖提取在下面的XML請求的messageIdentifier的值:XSLT與所述節點的XPATH訪問該節點值
<?xml version="1.0"?>
<ordersRequest>
<requestHeader>
<verb>get</verb>
<transaction>OrderRequest</transaction>
<version>1.0</version>
<consumer>Web</consumer>
<messageIdentifier>123456789</messageIdentifier>
</requestHeader>
</ordersRequest>
的意圖是所述的XPath信息傳遞給樣式表,使得相同的XSL可以用於任何其他請求(paymentRequest/requestHeader/messageIdentifier)以及requestHeader(paymentRequest/requestHeader/consumer)下的任何其他節點。我想出了以下XSL吧:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:param name="xpath" select="/" />
<xsl:template match="/">
<xsl:value-of select="concat('/*/requestHeader/',$xpath)" />
</xsl:template>
</xsl:stylesheet>
輸出這裏出來爲/*/requestHeader/messageIdentifier
。當我將上面的樣式表應用於以下編輯<xsl:value-of select="/*/messageHeader/messageIdentifier" />
時,我在輸出中獲得值123456789
。爲什麼輸出有差異?請幫忙。
您需要的是評估以字符串形式給出的XPath表達式。據我所知,這隻有在XSLT 3.0中才有可能。你可以做的是使用XPath生成XSLT,然後執行生成的XSLT。 – 2014-10-12 14:29:23