在我的XSD中,我有一个经常使用的限制。在几个地方使用相同的限制,更新时可能会错过。我知道有工具(查找/替换),但我认为全局定义这些限制更好。这样,我们只需要在一个地方改变它而不是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。
任何建议或指示都表示赞赏。与此同时,我会更进一步,如果我找到答案,我会把它放在这里。
答案 0 :(得分:4)
我的问题的答案:
全球限制
<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"/>
....