2009-07-24 2 views
1
<ClinicalDocument> 
    <entry> 
    <substaceAdministration> 
     <effectiveTime></effectiveTime> 
    </substaceAdministration> 
    </entry> 
    <entry> 
    <substaceAdministration> 
     <effectiveTime></effectiveTime> 
    </substaceAdministration> 
    </entry> 
    <entry> 
    <substaceAdministration> 
    </substaceAdministration> 
    </entry> 
</ClinicalDocument> 

각 항목/substaceAdministration이 effectiveTime 요소가 존재하는지 여부를 주장해야합니다.각 자식에 대해 하나의 요소가 존재하는지 확인하는 방법

은 내가이 요구 사항을 충족하기 위해 내 XPath 식을 변경하는 방법에 대한 조언을 찾고 있는데요,이 식

<xsl:when test="count(ClinicalDocument/entry/substanceAdministration/effectiveTime)=1"/> 

으로 노력했다. 대신 자식 요소의 모든 인스턴스를 계산하기 위해 노력

답변

1

, 어쩌면 당신은 모든 인스턴스 자식 요소가없는 계산한다 (이 하나의 형식에 대한 미안, 그것은 오래이다) :

<xsl:when 
test="count(ClinicalDocument/entry/substanceAdministration[not(effectiveTime)]) 
     = 0"> 
    <!-- True when all substanceAdministration elements 
     have an effectiveTime child 
    --> 
</xsl:when> 

을 당신도 할 수 에서 당 substanceAdministration 기준으로이 검사 중 하나를위한 각 루프 또는 같은 것을 사용하여 템플릿 :

<!-- Assuming the current node is substanceAdministration --> 
<xsl:if test="count(effectiveTime) = 1"> 
    <!-- True when there is one and only one effectiveTime child --> 
</xsl:if> 
0

귀하의 문

을3210
test="count(ClinicalDocument/entry/substanceAdministration/effectiveTime)=1" 

은 유효 시간> < 개의 요소가 하나만있는 경우에만 true를 반환합니다.

더 많은 xsl : 템플릿을 보면서 무엇을하려고하는지 쉽게 이해할 수 있습니다. 컨텍스트 노드 란 무엇입니까? 각 < 항목>> < effectiveTime> 자손을 처리하려고합니까?

<xsl:template match="entry[descendant::effectiveTime]">...</xsl:template> 
: 그렇다면, 당신은 단지 템플릿을 사용할 수 있습니다
관련 문제