0

XSLTを使用して、特定のparentIDを持つオブジェクトを選択してループしますが、これは正常に機能しています。次に、XMLで選択した各要素のIDを値と照合する必要があります。

これが私のコードです:

XSL:

<xsl:for-each select="categories/category[@parentId='1333']">
    <xsl:choose>
       <xsl:when test="id='1349'">Yes</xsl:when>
       <xsl:otherwise>No</xsl:otherwise>
    </xsl:choose>
</xsl:for-each>

XMLブロックの例を次に示します。

 <categories>
    <category !!!!THIS IS THE ID I WANT!!!!! id="1348" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    <category id="1349" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
    <category id="1352" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
    <category id="1370" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
  </categories> 
4

2 に答える 2

1

属性を正しくチェックしていないだけだと思います。

変化する...

<xsl:when test="id='1349'"> 

@To(要素名ではなく属性名であることを意味する余分なものに注意してください)...

<xsl:when test="@id='1349'">
于 2012-07-25T09:30:23.860 に答える
1

必要な要素を見つけて処理するためにとxsl:for-eachは必要ありません。xsl:choose

必要な要素に一致するテンプレートを用意するだけです。

<xsl:template match="categories/category[@id='1349' and @parentId='1333']">
  <!-- Your processing here -->
</xsl:template>
于 2012-07-25T12:15:44.897 に答える