在 XSD 中定义和重用限制
Defining and reusing restriction in XSD
在我的 XSD 中,我有一个经常使用的限制。相同的限制在多个地方使用,更新时可能会遗漏。我知道有一些工具 (find/replace),但我认为最好在全局范围内定义这些限制。这样,我们只需要修改一个地方,而不用修改x次。
我还有一个额外的问题,就是元素的名称总是不同的,并且无法更改它(例如 long_summary、short_summary、...)
XSD
的设置
<xs:schema>
<xs:complexType name="eventType">
<xs:sequence>
<xs:element name="short_summary">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="long_summary">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
基本上我只想定义一次限制 ([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?
并将其重新用于 short_summary 和 long_summary。
如有任何建议或指示,我们将不胜感激。同时,我会进一步寻找,如果找到答案,我会把它放在这里。
我的问题的答案:
全局限制
<xs:simpleType name="Text">
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
用于XSD
....
<xs:element name="short_summary" type="Text"/>
<xs:element name="long_summary" type="Text"/>
....
在我的 XSD 中,我有一个经常使用的限制。相同的限制在多个地方使用,更新时可能会遗漏。我知道有一些工具 (find/replace),但我认为最好在全局范围内定义这些限制。这样,我们只需要修改一个地方,而不用修改x次。
我还有一个额外的问题,就是元素的名称总是不同的,并且无法更改它(例如 long_summary、short_summary、...)
XSD
的设置<xs:schema>
<xs:complexType name="eventType">
<xs:sequence>
<xs:element name="short_summary">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="long_summary">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
基本上我只想定义一次限制 ([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?
并将其重新用于 short_summary 和 long_summary。
如有任何建议或指示,我们将不胜感激。同时,我会进一步寻找,如果找到答案,我会把它放在这里。
我的问题的答案:
全局限制
<xs:simpleType name="Text">
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}\p{M}\p{N}\p{P}\p{Z}\p{S}\p{C}]+)?"/>
</xs:restriction>
</xs:simpleType>
用于XSD
....
<xs:element name="short_summary" type="Text"/>
<xs:element name="long_summary" type="Text"/>
....