2012-02-07 4 views
4

나는이 다음 XML 코드, 나는 XLST를 사용하여 변환하려고 오전 :카운트 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 
을 술어를 직렬 사용에 대한