在XSD中定义和重用限制

时间:2017-06-07 06:22:04

标签: xml xsd restriction

在我的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。

任何建议或指示都表示赞赏。与此同时,我会更进一步,如果我找到答案,我会把它放在这里。

1 个答案:

答案 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"/>
....