【发布时间】:2014-10-12 14:23:04
【问题描述】:
我正在尝试在以下 XML 请求中提取 messageIdentifier 的值:
<?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。