我认为一个陷阱是“ contentWithInputType”元素可以进一步包含“ contentWithInputType”元素,但“ contentType”元素只能包含“ contentType”元素。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://meinnamespace.meinefirma.de" targetNamespace="http://meinnamespace.meinefirma.de" elementFormDefault="qualified">
<xs:element name="ROOTNODE">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="content" type="contentType" />
<xs:element name="contentWithInput" type="contentWithInputType" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="contentType" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="span" type="contentType" />
<xs:element name="b" type="contentType" />
<xs:element name="i" type="contentType" />
</xs:choice>
</xs:complexType>
<xs:complexType name="contentWithInputType" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="span" type="contentWithInputType" />
<xs:element name="b" type="contentWithInputType" />
<xs:element name="i" type="contentWithInputType" />
<xs:element name="input" type="xs:string" />
</xs:choice>
</xs:complexType>
</xs:schema>
我有这个小的XML模式。是否可以扩展“ contentType”而不是重复其内容?我认为一个陷阱是“ contentWithInputType”元素可以包含更多的“ ...
inline
;使它成为contentType
中允许的唯一元素;然后用span
定义元素i
,b
,substitutionGroup="inline"
等。