먼저 my previous thread에 회신 해 주신 모든 분들께 감사드립니다. 혼란을 피하기 위해 여기에 비슷한 정보를 게시하고 있지만 그에 따라 업데이트되는 질문입니다.XSL generate-key()와 고유 한 요소
내 문제는 아래 표시된 xsl for-each가 결코 실행되지 않고 결과 집합에 아무것도 없음을 나타냅니다. 그러나, 나는 이유를 알 수 없다. 아래의 추가 설명. 내 XSL 파일의 맨 위에
입력 구조
<AllMyResults>
<Result>
<someElement>value</state>
<otherElement>value 2</state>
<subject>Get unique subjects!</state>
</Result>
</AllMyResults>
나는 키 문장을 가지고
<xsl:key name="SubjectKey" match="All_Results/Result" use="subject"/>
[2] 다른를 사용하여 내 XSL 파일의 고기 입력 구조 :
<xsl:for-each select="$ResultSet/subject[
generate-id()
= generate-id(key('SubjectKey', 'subject')[1])
]">
... this point is never reached ...
</xsl:for-each>
위의 [2]에서 사용하는 입력 구조 입력 구조는 요소 목록 일뿐입니다.
무엇이 여기에 있습니까? for-each가 실행되지 않았 음을 확인하기 위해 디버거를 사용했습니다. 이는 표현식 $ResultSet/subject[generate-id() = generate-id(key('SubjectKey', 'subject')[1])]
에 의해 생성 된 세트가 빈 세트 였음을 나타냅니다. 하지만 왜?
추가 정보
$없는 결과는 노드 집합이다. 그것은 템플릿에 전달 된 매개 변수였습니다. 내 디버거에 따르면 "핵심"문은 적절한 시간에 실행됩니다. 한 번 "피사체"가 입력 파일에 표시됩니다. params없이 generate-id()에 대해 읽은 바에 따르면, 현재 노드에서 작동합니다. $ResultSet/subject
대신 모든 종류의 유사 콘텐츠를 사용해 보았습니다. ($ResultSet/*/subject
, $ResultSet/*
등)
키 선언에 '결과'요소가 일치합니다 ... –
XML에 AllMyResults라는 요소가 있지만 키 정의에 All_Results가 있습니다. 거의 틀림없이 오타가 있지만 질문에 오타를 만들면 사용자가 제공 한 정보를 신뢰할 수 없습니다. –
으로 요소를 닫습니다. 유효한 XML로 보이지 않습니다. –