2010-02-08 2 views
8

간단히 xsl에서 다음을 실행할 수 있습니까?xsl에서 'and'연산자를 for-each로 사용할 수 있습니까?

<xsl:for-each select="trip/instance[.!=''] and trip/result[.!='']"> 
</xsl:for-each> 

Q : 나는 "에서 ="선택 사용하는 경우를위한 각은 I가-각각의 내부에 사용하는 코드에 대한 내 선택의 범위를 변경합니까?

답변

7

당신은 어느
처럼 내가 당신의 요구 사항 뭔가를 가정에 대한-각 루프,하지만 당신이 언급 한 방법으로

을 (정확히 무엇을 달성하고자하는 확실하지 않은 것)하지에 사용 '과'수
1) 당신은 당신이 이런 식으로 작성해야이 경우 그 두 아이 엔티티 Trip (instanceresult) null가 아닌, 을 통해 루프 싶어요 ..

<xsl:for-each select="trip[instance!='' and result!='']> 

인스턴스와 결과 중 하나라도 null이면 루프는 요소 즉 trip을 입력하지 않습니다.


2)는 그 값이 null이 아닌 부모 trip 내부의 각 instanceresult 아이들을 통해 추구하고자합니다. 이 경우이 작동

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 

.. and 필요하지 않습니다.

이제 질문에 대한 답변 .. 당신은 선택의 범위를 설정할 수 있습니다 FOR-각 루프
..
을위한-예 : 경우 (1), 선택의 범위가 있었다 "root_name//trip"과 경우 (선택 2) 범위는

I 희망, 내가 제대로 질문을 이해하고 이해를 대답 ... "root_name//trip/instance"또한 "root_name//trip/result"이었다 ..

6

아니요, select 속성에 and을 사용할 수 없습니다. |, 및 종류의 당신이 그것에 대해 어떻게 생각하는지에 따라 또는, 같은 같은 종류의 동작 :

당신은 union 연산자를 사용하고 싶습니다.

두 세트의 노드 목록을 구별하고 문서 순서대로 노드를 반환합니다 (모두 instance, 그 다음 모두 result 요소). 문맥이 각 반복하는 동안 선택된 각 노드 사이를 전환 할 for-each 내부

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 
</xsl:for-each> 

. . 또는 current()을 사용하여 현재 노드에 액세스 할 수 있습니다.

+0

UNION 연산자에 대한 설명은 1 .. 및 대한 "당신이 그것에 대해 생각하는 방법에 따라 달라지는 점" –

+0

@Mads Hansen : 감사합니다. – Zoheir