2012-11-05 5 views
0

우리는이 코드를 사용하여, 우리는 방법 선택 자세한 XSL을 제거 할 수 있다는 사실을 알고이 link.XSLT - 프로그래밍 기술

에서 XSLT 프로그래밍에 대한 올리버 베 커스 효율적인 방법에 대한 질문 우리가 지정할 수있는 그러나

concat(
substring(Str1,1 div Cond), 
substring(Str2,1 div not(Cond)) 
) 

'조건'에서 노드의 유무를 확인하기 만하면됩니까?

우리는 구문 오류를 던질 것이다

concat(
substring(Str1,1 div test="/node"), 
substring(Str2,1 div not(test="/node")) 
) 

를 지정할 수 없습니다.

+1

는 COND 부울 XPath 식이어야합니다. (test = "/ node")는 부울 XPath 식이지만 아마도 의도 한 XPath식이 아니며, 큰 따옴표가 허용되지 않는 컨텍스트에 있기 때문에 아마도 실패합니다. 부울 (/ 노드)을 사용하십시오. –

답변

2

이 표현을 시도는 (여기서 노드는 테스트 할 노드의 이름입니다) :

<xsl:value-of select="concat(
    substring('Yes', 1 div not(not(/root/node))), 
    substring('No', 1 div not(/root/node)))"/> 

또는 더 나은 아직

다음 이 XML에 적용
<xsl:value-of select="concat(
    substring('Yes', 1 div boolean(/root/node)), 
    substring('No', 1 div not(/root/node)))"/> 

이 출력됩니다.

<root> 
    <node>Test</node> 
</root> 

그러나이 XML에 적용하면, 없음 출력

<root> 
    <othernode>Test</othernode> 
</root> 
+0

좋다, +1,'not (not)를'boolean()으로 대체하는 것이 낫다. –

+0

아, 그게 낫겠 네. 나는 이것을 보여주기 위해 나의 답을 수정했다. 감사! –