2012-08-14 2 views
2

사실 인 경우에만 부울 필드 값의 수를 찾아야하는 경우가 있습니다.XPath를 통해서만 특정 어린이 수를 계산하십시오.

입력 XML :

<PersonInfo> 
    <ArrayOfPersonInfo> 
    <CertAsAdultFlag>true</CertAsAdultFlag> 
    <DeceasedFlag>true</DeceasedFlag> 
    <WantedFlag>false</WantedFlag> 
    <CPSORFlag>true</CPSORFlag> 
    <ConditonalReleaseFlag>false</ConditonalReleaseFlag> 
    <ProbationFlag>true</ProbationFlag> 
    <MissingFlag>true</MissingFlag> 
    <ATLFlag>true</ATLFlag> 
    <CCWFlag>false</CCWFlag> 
    <VictimIDTheftFlag>true</VictimIDTheftFlag> 
    </ArrayOfPersonInfo>  
</PersonInfo> 

나는 그들이 'true'를하는 경우 조건이 플래그의 수를 찾아야합니다. 난 정말 내가 그것을 통해 얻기 위해 열심히 노력했습니다 같은 사람에서이 도움이 필요

<xsl:variable name="AlertCount" select=" 
    count(
    PersonInfo/ArrayOfPersonInfo[ 
     CPSORFlag[.='true'] | CertAsAdultFlag[.='true'] | 
     DeceasedFlag[.='true'] | WantedFlag[.='true'] | 
     ConditonalReleaseFlag[.='true'] | MissingFlag[.='true'] | 
     ATLFlag[.='true'] | ProbationFlag[.='true'] | CCWFlag[.='true'] | 
     VictimIDTheftFlag[.='true'] | CHRIFlag[.='true'] | 
     CivilWritFlag[.='true'] | MentalPetitionFlag[.='true'] | 
     ProtectionOrderFlag[.='true'] | juvWantedFlag[.='true'] | 
     WeaponsFlag[.='true'] | WorkCardFlag[.='true'] 
    ] 
) 
"/> 

: 여기

내가 시도에 실패한 것입니다. 미리 감사드립니다. 당신의 접근 방식에

대괄호는 노드 집합을 통해 조건을 만들 : 당신의이 작동하지 않는 이유

답변

0
<xsl:variable name="AlertCount" select="count(PersonInfo//*[. = 'true'])" /> 

는 여기에 있습니다.

해당 노드 집합은 조건을 충족시키는 언급 된 모든 자식 노드의 합집합입니다. 비어 있지 않은 노드 집합은 true이고 비어 있지 않은 노드 집합은 false입니다. 아이들의이 사실 그들 모두가 거짓 인 경우에 항상 0 될 경우 결과에

당신의 count() 항상 1이 될 것입니다.

즉, 하나의 <ArrayOfPersonInfo> 노드를 선택했습니다. 그것이 조건을 만족 시키면 (수치로 'true'의 숫자를 가짐) 계산 되었으나 그렇지 않은 경우 계산되었습니다.

<xsl:variable name="AlertCount" select=" 
    count(
    PersonInfo//*[ 
     self::CPSORFlag or 
     self::CertAsAdultFlag or 
     self::DeceasedFlag or 
     self::WantedFlag or 
     self::ConditonalReleaseFlag or 
     self::MissingFlag or 
     self::ATLFlag or 
     self::ProbationFlag or 
     self::CCWFlag or 
     self::VictimIDTheftFlag or 
     self::CHRIFlag or 
     self::CivilWritFlag or 
     self::MentalPetitionFlag or 
     self::ProtectionOrderFlag or 
     self::juvWantedFlag or 
     self::WeaponsFlag or 
     self::WorkCardFlag 
    ][. = 'true'] 
) 
" /> 
+0

안녕하세요 Tomalak을 :


는 코멘트에 설명 후 ( "나는 위의 XML에 언급 된 플래그에 대한 유일한 걱정할 필요"). 답장을 보내 주셔서 감사합니다. 미안해. 내가 더 일찍 알려 줘야 했어. 동일한 XML에는 위에 언급하지 않은 다른 플래그가 있으며 위의 XML에서 언급 한 플래그에 대해서만 걱정할 필요가 있습니다. 귀하의 답변을 사용하면 다른 모든 국기가 계산됩니다. 지금 이걸 도와 주실 수 있습니까? – Harsh

+0

내 코드가 작동하지 않는 이유에 대해 설명해 주셔서 감사합니다.하지만 올바른 방법을 알려주십시오. 응답에 2-3 플래그를 포함하십시오. 도와 주셔서 다시 한번 감사드립니다. – Harsh

+0

@Harshavardhan 수정 된 답변보기. – Tomalak

관련 문제