假设我有以下XML:
<ShoppingCart>
<!-- Item 1 -->
<LineItem>
<extendedAttributes>
<item>
<name>RenewingSubscriptionID</name>
<value>2106596709</value>
<valueDataType>string</valueDataType>
</item>
<item>
<name>subscriptionLineItemId</name>
<value>3145223500</value>
<valueDataType>string</valueDataType>
</item>
</extendedAttributes>
</LineItem>
<!-- Item 2 -->
<LineItem>
<extendedAttributes>
<item>
<name>RenewingSubscriptionID</name>
<value>2106596709</value>
<valueDataType>string</valueDataType>
</item>
</extendedAttributes>
</LineItem>
</ShoppingCart>
当true
的值为LineItem/extendedAttributes/item/name
时,如何声明值subscriptionLineItemId
的XSLT变量?对于上面提供的XML,期望的行为是Item 1
将变量= true
,而Item 2
将具有变量= false
。
答案 0 :(得分:1)
你会写这样的东西
<xsl:template match="LineItem">
<xsl:variable name="has-item-id" select="boolean(extendedAttributes/item[name = 'subscriptionLineItemId'])"/>
<has-item-id><xsl:value-of select="$has-item-id"/></has-item-id>
</xsl:template>
从LineItem
元素的角度来看,XPath表达式查找具有所需值extendedAttributes/item
的所有name
元素,并将结果节点集转换为布尔值。空节点集将转换为false
。