simpleType
用字符串restriction
和命名*pattern*
。此 sT basicType应用于多个elements
. 问题是其中两个elements
需要将类型更改为 base="xs:ID"。
这可以通过创建唯一的 sT 来完成:一个 sT 用于使用基本 ID 的*pattern* restriction
字段,另一个 sT 用于需要 ID 基础的两个字段。问题是模式必须在两个 sT 声明中重复。这是我的应用程序中的一个问题,但我想了解是否有另一种方法可用。具体来说,一种允许模式被继承的模式,因此由于所有常见的原因而不会被复制。顺便说一句:任何替代的 XSD 1.0 方法都可以。我不打算将其仅限于simpleType
解决方案。
我想做的是有一个单一的模式sT 可以应用于非 ID 字段,并有另一个派生的 sT 为需要 ID 的字段添加 ID 基础,同时继承其他 sT 的模式。因此,模式只在一个地方定义和维护。
FWIW,这是一个 MSXML6 Excel 应用程序。
以下代码片段显示该模式在每个 sT 中都有重复。
问)如何简化这个过程?
<xs:simpleType name="basicType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]([A-Z0-9;-]){1,8}">
<!-- Upper case A~Z followed by 1~8, upper-case alphanumerics including hyphen. No whitespace. -->
</xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IDType">
<xs:restriction base="xs:ID">
<xs:pattern value="[A-Z]([A-Z0-9;-]){1,8}"/>
</xs:restriction>
</xs:simpleType>