2017-01-31 1 views
4

내 schematron 어설 션을 나타내는 변수를 사용하여 유효성 검사 메시지에 사용하고 싶습니다. 예 :schematron에서 변수를 전달하는 방법이 있습니까?

 <rule context="//Profile/User[@name]"> 
      <assert test="@name = ../business/@owner">User: '----' doesn't exist as a business owner. </assert> 
     </rule> 

'----'는 사용자의 이름과 동일합니다. schematron에서 변수를 사용하는 방법이 있습니까?

답변

3

당신은 변수의 값 또는 XPath를 검색 할 수 value-of을 사용할 수 있습니다 : 당신이 변수를 도입하고자하는 경우

<rule context="//Profile/User[@name]"> 
     <assert test="@name = ../business/@owner"> 
      User: <value-of select="@name"/> doesn't exist as a business owner. 
     </assert> 
    </rule> 

let 사용

<rule context="//Profile/User[@name]"> 
     <let name="userName" value="@name"/> 
     <assert test="@name = ../business/@owner"> 
      User: <value-of select="$userName"/> doesn't exist as a business owner. 
     </assert> 
    </rule> 
+0

이 실제로 단지 메모리 주소를 인쇄 : 사용자 : [PSValueOf @ 0x361c294e : select = @ name], 비즈니스 소유자로 존재하지 않습니다. – user3418847

+0

[Schematron "skeleton"- XSLT 구현] (https://github.com/Schematron/schematron)과 호환됩니다. Philip Helger의 구현을 사용하는 것 같습니다. 그 이유가 무엇인지 분명하지 않습니다. – kjhughes

+2

@kjhughes "let"구문을 보여 주셔서 감사합니다. – shrewmouse

관련 문제