0

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

我如何去声明一个 XSLTvariable 的值,true当存在​​的LineItem/extendedAttributes/item/name值为 时subscriptionLineItemId?对于上面提供的 XML,所需的行为是Item 1具有变量 = true,而Item 2具有变量 = false

4

1 回答 1

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

于 2013-06-08T12:06:16.547 回答