2011-08-18 4 views
1

속성이 없거나 비어있는 경우 내 변수를 false()으로 설정합니다.속성이 비어 있거나 존재하지 않는 경우 XSLT 부울 변수를 true로 설정하는 방법은 무엇입니까?

XML :

<cd name="One" /> 
<cd name="Two" incollection=""/> 
<cd name="Three" incollection="true"/> 

XSL :

<!-- this will only set to false when attribute is missing --> 
<xsl:variable name="incollection" select="boolean(@incollection)"/> 
<!-- this will set to false both when attribute is missing or is empty--> 
<xsl:variable name="incollection2" select="boolean(@incollection) or @incollection=''"/> 

두 번째 표현은 나를 위해 작동하지만, 나는이 표현을 쓰기의 더 나은 더 관용적 인 방법이 있었는지 궁금 해서요 ? 당신은 누구의 문자열 속성을 제외 할 경우

string-length(@incollection) > 0 

:

+0

@empo XSLT 프로세서를 사용하고 계십니까? 예를 들어 Chrome 또는 Java Xalan에 내장 된 XSLT 프로세서에서 작동하지 않습니다. –

+0

좋은 질문입니다. +1. 두 가지 대체 one-liner XPath 식에 대한 내 대답을 참조하십시오. –

답변

2

사용 같은 것을 시도하는 경향 것 값이 공백 인 경우 다음을 사용하십시오.

string-length(normalize-space(@incollection)) > 0 
+0

그냥 해봤지만 효과가 있었다. –

+0

@Tahir Akhtar : 천만에요. –

1

는 개인적으로 나는

select="count(@incollection != '') > 0

(안된)

+0

멋진데,하지만 너무 쉽게 읽을 수있는 기능이나 무언가가있을 것이라고 생각 했어 –

관련 문제