他の誰かの XSD 仕様に基づいて XML ファイルを作成していますが、それが検証されない理由がわかりません。
ルールは次のとおりです。
<xs:simpleType name="NonEmptyStringType">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:pattern value="[^\t\n\r]*[^\s][^\t\n\r]*" />
</xs:restriction>
</xs:simpleType>
私は次のようにパターンを読みました:
[^\t\n\r]*
タブ、改行、またはスペース以外のすべてに一致し、 0 回以上を返します[^\s]
スペース以外のものにマッチ[^\t\n\r]*
タブ、改行、またはスペース以外のすべてに一致し、 0 回以上を返します
そして、多くの不一致 xml の 1 つの次の例:
<Zipcode>3506 RT</Zipcode>
xmllint によると、次のエラーで一致していません3506 RT
(または3506RT
、さらに言えば、一致すると予想される他の多くのもの)。
element Zipcode: Schemas validity error : Element '{http://www.reeleezee.nl/taxonomy/1.23}Zipcode': [facet 'pattern'] The value '3506 RT' is not accepted by the pattern '[^\t\n\r]*[^\s][^\t\n\r]*'.
私が正しく解釈していないことについてのヒントはありますか? (私は彼らの NonEmptyStringType の厳密さを理解していません.+を使用します)
要求に応じて、郵便番号の宣言を次に示します。
<xs:element name="Zipcode" minOccurs="0" nillable="true" rse:CanIgnore="true">
<xs:annotation>
<xs:documentation>Postcode</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="NonEmptyStringType">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
ご覧のとおり、これは NonEmptyStringType のパターンにリンクしています (上記の最初のルール)。