2012-02-07 16 views
4

私はXLSTを使用して変換しようとしていますことを、次のXMLコードを持っている:カウントXML要素

<setting> 
    <type>house</type> 
    <context>roof</context> 
    <value>blue</value> 
</setting> 
<setting> 
    <type>house</type> 
    <context>kitchen</context> 
    <value>red</value> 
</setting> 
<setting> 
    <type>house</type> 
    <context>floor</context> 
    <value>black</value> 
</setting> 
<setting> 
    <type>apartment</type> 
    <context>roof</context> 
    <value>red</value> 
</setting> 

私は設定 - >タイプ「マンション」は「コンテキストを持っているかどうかをカウントします - >フロア "。

私はこれを実行しようとしました:

<xsl:if test="count(setting[type='apartment'] and setting[context='floor']) &lt; 1"> 
    <!-- do what ever !--> 
</xsl:if> 

動作するようには思えません。ブール値に数値を変換しようとすることについて例外がありますか?助言がありますか?

更新:回数内部の文が正しくありませんブール値を返している

<xsl:if test="count(setting[type='apartment' and context='floor']) &lt; 1"> 

答えて

2

: は私が使用できることを考え出しました。 count()は、node-setがノードを数えられることを要求します。あなたがタイプ=アパートやコンテキスト=床を持って設定する要素の和が必要な場合は、それ以外の場合は

count(setting[type='apartment' and context='floor']) &lt; 1 

:この必要な値を持つタイプとアパートの要素を持っている必要が同じ設定要素ならば、あなたはおそらく見ています(必要な値との両方の要素を持つカウントの設定を除く)は、おそらく必要があります。

count(setting[type='apartment'] | setting[context='floor']) &lt; 1 
0

使用についてはこれのような述語をカスケード接続する方法?:

count(setting[type='apartment'][context='floor']) &lt; 1