고유성을 확인하기 위해 특정 값을 갖는 XML 파일의 요소 수를 계산해야합니다. XML 파일은 다음과 같습니다.주어진 값을 가진 XSLT 요소 계산
EDIT : 원본 "단순화 된"XML을 누군가가 설계 한 실제 털이 혼란으로 업데이트했습니다. 불행하게도, 이것은 이전의 모든 Answers를 편집하지 않는 한 정말로 혼란스럽고 틀리게 만듭니다.
<root>
<ac>
<Properties>
<Property Name="Alive">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>11007</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
<Property Name="Dead">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>11008</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
...
<Property Name="MostlyDeadAllDay">
<Properties>
<Property Name="ID">
<Properties>
<Property Name="Value">
<long>99001</long>
</Property>
</Properties>
</Property>
</Properties>
</Property>
</Properties>
</ac>
</root>
나는 템플릿 매개 변수에 정의 된 긴 값 (ID)가 어떻게 살아/죽은 수준에서 속성의 많은 볼 수있는 변수를 정의하려합니다. 이 줄을 따라 뭔가 (비록 내가 틀린 것 같아요 ...)
<xsl:param name="parPropId"/>
<xsl:variable name="countProperties">
<xsl:value-of select="count(/root/ac/
Properties/Property/
Properties/Property[@Name = 'ID']/
Properites/Property[@Name = 'Value']/long = $parPropId)"/>
</xsl:variable>
"ID"수준에서 정의 된 여러 속성 요소가있을 수 있습니다. 그러나 "ID"아래에 하나의 속성 요소 ("값")가 있고 "값"아래에 하나의 "긴"요소 만있을 수 있다는 것이 확실합니다.
[면책 조항] [전체 이용가] 전체 XML 파일을 설계 한 사람은 누구나 XML을 구조화하는 방법을 알지 못했습니다 (예 : 속성 대 요소의 역방향 사용). 결과적으로 내 XSLT 사고가 일시적으로 뒤틀린 것을 두려워합니다. [/ 면책 조항]
왜 잘못 표시했는지 XPath 표현식이 맞습니까? 나는 그것에 문제가있는 것을 보지 못했다. – Cerebrus
확실하지 않습니다. 위의 XML을 단순화했습니다. 실제 xpath는 "/// Properties/Property/Properties/Property [@Name = 'ID']/Properties/Property [@Name = 'Value']/long입니다. 당신이 맞으면 "/ long"을 "[long = $ parPropId]"로 바꿀 수 있습니다. 두 개의 "[]"작전이 함께 이루어지기 때문에 잘못 된 것 같습니다. –
vartec의 text()가 올바른 텍스트를 제공한다는 것을 확인했습니다 (예 : "/// 속성/속성/속성/속성 [@Name = 'ID']/속성/속성 [@Name = '값']/long/text) "내 ID를 얻지 만 자신의 방법을 사용하여 계산 한 결과가 여전히 실패했습니다 –