【问题标题】:How to select an attribute based on another attribute's value如何根据另一个属性的值选择一个属性
【发布时间】:2014-11-18 15:08:12
【问题描述】:

Credit_Term_Code="4" 时,我需要通过在XSLT 中循环来选择NativeDescription 值:

<Credit_code_parents>
  <Credit_Term_parent Credit_Term_Code="1" NativeDescription="Letter of Credit" EnglishDescription="Letter of Credit" />
  <Credit_Term_parent Credit_Term_Code="2" NativeDescription="Cash on Delivery" EnglishDescription="Cash on Delivery" />
  <Credit_Term_parent Credit_Term_Code="3" NativeDescription="Contract" EnglishDescription="Contract" />
  <Credit_Term_parent Credit_Term_Code="4" NativeDescription="Net" EnglishDescription="Net" />
  <Credit_Term_parent Credit_Term_Code="5" NativeDescription="Contract" EnglishDescription="Contract" />
  <Credit_Term_parent Credit_Term_Code="6" NativeDescription="Net" EnglishDescription="Net" />
  <Credit_Term_parent Credit_Term_Code="7" NativeDescription="Contract" EnglishDescription="Contract" />
  <Credit_Term_parent Credit_Term_Code="8" NativeDescription="Net" EnglishDescription="Net" />
</Credit_code_parents>

【问题讨论】:

  • 发布问题时,请发布输入 XML,尝试 XSLT 或 XPATH 以及所需的结果。

标签: xml xslt xpath


【解决方案1】:

要选择Credit_Term_parent 元素的NativeDescription 属性且Credit_Term_Code 等于4,使用以下XPath 之一

  1. 如果Credit_Term_parent上面的祖传结构固定如图:

    /Credit_code_parents/Credit_Term_parent[@Credit_Term_Code='4']/@NativeDescription
    
  2. 如果上面有潜在的可变祖先结构 Credit_Term_parent(并假设提供的 Credit_Term_Code 在整个文档中是唯一的):

    //Credit_Term_parent[@Credit_Term_Code='4']/@NativeDescription
    

您要求 XSLT 循环代码:

<xsl:for-each select="/Credit_code_parents/Credit_Term_parent">
   <xsl:if test="@Credit_Term_Code=4">
     <xsl:value-of select="@Credit_Term_parent"/>
   </xsl:if>
</xsl:for-each>

或者,没有循环:

 <xsl:value-of
          select="//Credit_Term_parent[@Credit_Term_Code='4']/@NativeDescription"/>

...或者,或者,使用上面 #1 中的 XPath 而不是 #2 中的 XPath。

【讨论】:

    【解决方案2】:

    试试下面的

    <xsl:for-each select="Credit_code_parents/Credit_Term_parent">
      <xsl:variable name="temp" select="@Credit_Term_Code"/>
      <xsl:if test="$temp='1'">
        <check>
          <xsl:value-of select="@NativeDescription"/>
        </check>
      </xsl:if>
    </xsl:for-each>
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多