Xml 序列中具有不同名称的元素
如何为以下XML定义架构:Xml 序列中具有不同名称的元素,xml,schema,Xml,Schema,如何为以下XML定义架构: <root> <elements> <element1/> <element2/> <element1/> </elements> <elements> <element2/> <element1/> </elements> <
<root>
<elements>
<element1/>
<element2/>
<element1/>
</elements>
<elements>
<element2/>
<element1/>
</elements>
<elements>
<element1/>
<element2/>
</elements>
</root>
其中元素element1和element2的数量是无限的,它们可以以不同的顺序混合。有可能吗?或者我应该将XML重新定义为:
<root>
<elements>
<element type="1"/>
<element type="2"/>
<element type="1"/>
</elements>
<elements>
<element type="2"/>
<element type="1"/>
</elements>
<elements>
<element type="1"/>
<element type="2"/>
</elements>
</root>
第一个结构的模式
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="elements">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="element1" />
<xs:element name="element2" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="elements">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="element">
<xs:complexType>
<xs:attribute name="type" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
第二个结构的模式定义
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="elements">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="element1" />
<xs:element name="element2" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="elements">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="element">
<xs:complexType>
<xs:attribute name="type" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
根据Visual Studio架构生成器,您可以这样做:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="elements">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="element1" />
<xs:element name="element2" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
只是一个旁注,您发布的代码都不是有效的XML,结束标记必须具有
/
。