2017-12-01 27 views
0

내 XML 스키마는 패턴이 정수이지만 문자열이 아닌 경우 작동합니다.제한 패턴이 문자열이 아닌 정수 일 때 XML 스키마 유효성 검사가 작동합니다.

<phone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="./phone.xsd"> 

    <oldPhone> 
    a 
    </oldPhone> 
</phone> 
:

문자열 내 XML은이 'oldPhone'

XML 유형의 패턴 '[AZ]'에 대한면 - 유효하지 않은 나

에게 제공

XSD :

<xs:schema version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      elementFormDefault="qualified"> 

    <xs:simpleType name="oldPhone"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[a-z]"/> 
     </xs:restriction> 
     </xs:simpleType> 

    <xs:element name="phone"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name = "oldPhone" type = "oldPhone"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

</xs:schema> 

xs:stringxs:integer으로 대체 할 때 간단히 작동합니다. [a-z]에서 [0-9]으로 변경하고 XML의 입력을 정수로 변경하십시오.

답변

0

값 주변의 공백으로 인해 패턴 일치가 실패합니다.

xs : integer가 xs : integer에 작동하는 이유는 xs : integer에 "collapse"라는 암시 적 whiteSpace 패싯이 있기 때문에 패턴 일치가 적용되기 전에 선행 공백과 후행 공백이 제거됩니다. 명시 적 whiteSpace 패싯을 추가하거나 xs : token 대신 xs : token을 기본 유형으로 사용하여 문자열과 동일한 효과를 얻을 수 있습니다.

또는 앞과 뒤 공백을 허용하도록 패턴을 변경하십시오.

+0

나는 그것을 보완하기 위해 xs : 토큰을 변경하거나 명시 적 whiteSpace 패싯을 추가한다. 명시 적 whiteSpace 패싯을 추가하는 것의 의미에 대해 좀 더 설명해 주시겠습니까? 또한 "붕괴"의 "whiteSpace 측면"에 대해 좀 더 알고 싶습니까? – Byron

+0

또는 웹 사이트 나 책에서 이것에 대해 이야기하고 있다면? 감사! – Byron

+0

나는 그것을 지금 이해한다. 고맙다! – Byron