0

文字列に10または13の 2 つの可能な長さを持たせたいと考えています。

and とxs:restriction一緒に使用してみましたが、これは機能しません。xs:enumerationxs:length

明らかな何かが欠けていると確信しています。誰でも解決策を提案できますか?

4

2 に答える 2

2

次のようなものはどうですか?

<xs:simpleType name="string_10_13">
    <xs:restriction base="xs:string">
        <xs:pattern value=".{10}|.{13}" />
    </xs:restriction>
</xs:simpleType>

より正確にする必要があります(たとえば、空白を削除するなど)が、方法になる可能性があります。

正規表現がなければ、次のように動作する可能性があります:

<xs:simpleType name="string_10">
    <xs:restriction base="xs:string">
        <xs:length value="10" />
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="string_13">
    <xs:restriction base="xs:string">
        <xs:length value="13" />
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="string_10_13">
    <xs:union memberTypes="string_10 string_13"/>
</xs:simpleType>
于 2013-07-09T10:39:27.227 に答える
0

ここでの本当の要件は、ISBN をサポートすることだと思います。ISBN は 10 文字から 13 文字の長さにすることができます。しかし、ISBN には他の制約があり、単純な型でも表現したい場合があります (XSD 1.1 では、アサーションを使用して正しいチェック ディジットを強制することさえできます...)。そのため、ISBN-10 と ISBN-13 の 2 つの型を定義してから、これらをメンバー型として共用体型にする傾向があります。

于 2013-07-09T12:51:06.850 に答える