在使用Xquery的XSLT中,我需要找到给定Key的值:
<ExtendedProperties>
<ExtendedProperty>
<Key>AvailabilityStatus</Key>
<Value>test</Value>
</ExtendedProperty>
<ExtendedProperty>
<Key>HomeDelivery</Key>
<Value>1</Value>
</ExtendedProperty>
<ExtendedProperty>
<Key>LogisticNature</Key>
<Value>1</Value>
</ExtendedProperty>
</ExtendedProperties>
示例:如果我提供密钥AvailabilityStatus,我应该得到结果:test
答案 0 :(得分:0)
以下是我想要完成的想法的示例。我正在使用XSLT 2.0并将搜索字符串作为参数传递给样式表。如果您需要XSLT 1.0,我们可以轻松修改示例。
使用您的示例XML并将'AvailabilityStatus'作为searchString
参数传递,此XSLT 2.0:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:param name="searchString"/>
<xsl:template match="/">
<xsl:value-of select="ExtendedProperties/ExtendedProperty[contains(lower-case(Key),lower-case($searchString))]/Value"/>
</xsl:template>
</xsl:stylesheet>
产生想要的(??)输出:
test
如果您想要更精确的匹配,请使用=
代替contains()
功能并删除lower-case()
处理。
修改强>
第三次阅读评论后,看起来你真正想要的是XPath。我的XSLT示例中的XPath可能不是您正在寻找的。也许是这样的:
/ExtendedProperties/ExtendedProperty[Key='AvailabilityStatus']/Value