我试图提取在下面的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