声明XSLT变量挂起值

时间:2013-06-08 09:28:00

标签: xml xslt

假设我有以下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

1 个答案:

答案 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