>

루프에서 현재 하위 요소 (End @value)의 특성을 다음 하위 요소 특성 (Origin @value)과 비교하기 위해 schematron 규칙을 작성하려고합니다. 내가 옳은 일을하고 있는지 잘 모르겠으므로 여기에 내 시도가 있습니다

내 시도는 다음과 같습니다 :

<sch:rule context="test">
    <sch:assert test="End/@value = following-sibling::test/Origin/@value " >Both the value are not Equal. </sch:assert>
</sch:rule>

이 규칙은 마지막 요소까지 잘 작동하고 마지막 요소는 존재하지 않는 다른 요소를 예상합니다. "following-sibling"문제 일 수 있습니다.

다음은 XML 파일입니다 :

<tests>
<test x="-276.724" xEnd="-276.193">
    <Origin value="36.599"/>
    <End value="36.6"/>
</test>
<test x="-276.193" xEnd="-260.29">
    <Origin value="36.6"/>
    <End value="36.603"/>
</test>
<test x="-260.29" xEnd="-240.194">
    <Origin value="36.603"/>
    <End value="36.601"/>
</test>
<test x="-240.194" xEnd="-220.046">
    <Origin value="36.601"/>
    <End value="36.601"/>
</test>
<test x="-220.046" xEnd="-200.09">
    <Origin value="36.601"/>
    <End value="36.602"/>
</test>

예상 결과 : 현재 하위 요소 (End @value) = 다음 하위 요소 속성 (Origin @value)이므로 출력이 성공해야합니다.

실제 결과.

   <test x="-220.046" xEnd="-200.09">
    <Origin value="36.601"/>
    <End value="36.602"/>
</test>

이 요소에 대해 어설 션 오류가 발생했습니다


  • 답변 # 1

    XSLT 2.0 바인딩을 사용한다고 가정합니다.

    그렇다면, End/@value = following-sibling::test/Origin/@value   value 를 비교   End 의 속성   value 와 자식 요소   Origin 의 속성  형제 test 에 따라모든의 자식 요소  요소. Origin/@valueany이면 true로 평가됩니다.  값이 일치합니다. 아마 당신이 원하는 것이 아닐 것입니다.

    와이즈 비즈  그리고 End  요소는 모두 Origin 의 자식입니다.  요소 (XPath 표현식의 컨텍스트) 두 개의 하위 요소를 테스트하려면 다음을 수행하십시오.

    test
    
    

    <sch:rule context="test"> <sch:assert test="End/@value = Origin/@value" >Both the value are not Equal. </sch:assert> </sch:rule> 를 테스트하려면  현재 End/@value 에서   test 와 요소  다음 Origin/@value 에서  다음 test 가 없을 때 요소가 실패하지 않습니다.  요소 :

    test
    
    

    와이즈 비즈  XPath를 첫 번째 <sch:rule context="test[exists(following-sibling::test[1])]"> <sch:assert test="End/@value = following-sibling::test[1]/Origin/@value" >Both the value are not Equal. </sch:assert> </sch:rule> 만 선택하도록 제한합니다. .

    [1]

  • 이전 arrays - 자바 스크립트 요소 계층에서 루프를 감지하는 방법
  • 다음 PHP로 SFTP하는 방법?