2017-12-01 3 views
0

My XMLスキーマは、パターンは整数であり文字列ではない場合に機能します。制限パターンが文字列ではない整数の場合、XMLスキーマの検証が機能する

私の文字列のXMLは、ファセット有効でないパターンに対して私に

を与える '[AZ]' 型 'oldPhone'

XML:

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

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

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の暗黙のwhiteSpaceファセットがあり、パターンマッチが適用される前に先頭と末尾の空白が削除されます。明示的なwhiteSpaceファセットを追加するか、xs:stringの代わりにxs:tokenをベースタイプとして使用して、文字列と同じ効果を得ることができます。

また、先頭と末尾の空白を許可するようにパターンを変更してください。

+0

これを修正するために、xs:トークンを変更するか、明示的なwhiteSpaceファセットを追加します。明示的なwhiteSpaceファセットを追加することによって何を意味するのかについてもう少し説明できますか?また、 "崩壊"の "ホワイトスペースファセット"についてもう少し詳しく教えてください。 – Byron

+0

これについてウェブサイトや本が話している場合は?ありがとう! – Byron

+0

私は今それを理解しています。ありがとう! – Byron

関連する問題