2012-10-25 4 views
1

가능한 중복 여러 값 중 하나 인 경우
XSLT expression to check if variable belongs to set of elements테스트 매개 변수는 XSLT에

은 그 값이 있는지 확인하기 위해 짧고 깨끗한 방법이 무엇인지 매개 변수, $name을 감안할 때 유한 수의 값 중 하나와 같습니까?

예를 들어, 내용이 정확히 동일했기 때문에 when 테스트의 처음 3 개를 병합하고 싶다고합시다.

<choose> 
    <when test="$name='Alice'"> 
    <when test="$name='Bob'"> 
    <when test="$name='Cindy'"> 
    <when test="$name='Dave'"> 
    <otherwise> 

뭔가 test="$name in ['Alice','Bob','Cindy']" 같은, 실제로 유효한 제외 : P (XSLT 1.0과 XSLT 2.0 두)

답변

6

XSLT 2.0에서는 $name = ('Alice', 'Bob', 'Cindy') 만 사용하면 충분합니다.

+0

니스! 그것을 사랑해. concat/contains 및 fn : tokenize/fn : index-of 패턴보다 훨씬 깔끔합니다. 이것을 복제본의 대안으로 추가해야합니다 : http://stackoverflow.com/q/1007018/39321 – Svish

+0

값이 목록에 없는지 테스트 할 때'not ($ name = ('Alice', 'Bob', 'Cindy')의 결과는 참 (true)입니다 ('Alice', 'Bob', 'Cindy')). – iddo

1

사용 :

contains('|Alice|Bob|Cindy|', concat('|', $name, '|')) 

을하고, 마틴 Honnen 이미 언급 한 바와 같이, XPath 2.0 (XSLT 2.0)의 경우에만을 쓸 수 있습니다.

$name = ($seqOfNames)