2016-07-29 2 views
0

要素に対して最大長10を定義するXSDがあります。文字列"12345678'"は、"12345678'"にエスケープされ、10文字を超えるため無効です。私は"12345678'"も同様に有効にしたいが、これを行う方法を見つけることができなかった。要素のエスケープされていない長さを検証する

XSD:

<xs:element name="ElementName"> 
    <xs:annotation> 
    <xs:appinfo> 
     <b:recordInfo notes="XXX" xmlns:b="XXX" /> 
    </xs:appinfo> 
    </xs:annotation> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="Element1"> 
     <xs:annotation> 
      <xs:appinfo> 
      <b:fieldInfo notes="XXX" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:minLength value="1" /> 
      <xs:maxLength value="10" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
     <xs:element minOccurs="0" name="Element2"> 
     <xs:annotation> 
      <xs:appinfo> 
      <b:fieldInfo notes="XXX" xmlns:b="XXX" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
      <xs:minLength value="1" /> 
      <xs:maxLength value="10" /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

答えて

1

データモデルの観点から、&apos;は、単一の文字としてカウントして'と同じです。エンティティ参照がすでに解決されているconsumes the XML infosetであるため、XMLスキーマは抽象化レベルがさらに高くなりますas a character code

一部の解析エンティティリファレンスはstill appear in the XML infosetでもかまいませんが、これは外部エンティティと(DTD検証の意味で)検証していないプロセッサと、私が知る限り、XMLスキーマdoes not explicitly reference themです。

私はこれが簡単な方法では不可能であることを恐れています。もちろん私は間違っていることを証明して何かを学ぶことができれば幸いです。 XMLスキーマに対して、どの文字がエスケープされていると考えられるかを説明すると、パターンやユニオンで制約付きファセットを使用している可能性がありますが、多少の努力が必要になりますが、構文レベルではまだ'&apos;を区別できません。

関連する問題