0

我希望字符串有两种可能的长度:1013

我尝试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,它可以是 10 或 13 个字符长。但是 ISBN 有其他约束,您可能也希望以简单类型表示(在 XSD 1.1 中,您甚至可以使用断言来强制执行正确的校验位......)。所以我倾向于定义两种类型 ISBN-10 和 ISBN-13,然后将它们作为其成员类型的联合类型。

于 2013-07-09T12:51:06.850 回答