如何在XSD中声明多个组?
问题描述:
在我的情况我XSD应该有一个根标签, #XSD# 如何在XSD中声明多个组?
<xs:group name="location">
<xs:sequence>
<xs:element name="city" type="xs:string"/>
<xs:element name="flat_num" type="xs:string"/>
<xs:element name="landmark" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:group name="student">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="mothername" type="xs:string"/>
<xs:element name="fathername" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:element name="Student_details" type="details"/>
<xs:complexType name="details">
<xs:group ref="location"/>
<xs:group ref="student"/>
</xs:complexType>
</xs:schema>
当我使用XML验证,它说这种格式是错误的, 任何一个可以帮助在多个组让我知道如何创建多个组
答
你缺少复杂的数据类型序列
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2017 - Developer Bundle Edition (Trial) 15.0.0.7089 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="location">
<xs:sequence>
<xs:element name="city" type="xs:string" />
<xs:element name="flat_num" type="xs:string" />
<xs:element name="landmark" type="xs:string" />
<xs:element name="street" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:group name="student">
<xs:sequence>
<xs:element name="firstname" type="xs:string" />
<xs:element name="lastname" type="xs:string" />
<xs:element name="mothername" type="xs:string" />
<xs:element name="fathername" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:element name="Student_details" type="details" />
<xs:complexType name="details">
<xs:sequence>
<xs:group ref="location" />
<xs:group ref="student" />
</xs:sequence>
</xs:complexType>
</xs:schema>
我也会质疑一个组是否最能实现你想描述的内容。你目前会产生这样的XML
<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid Studio 2017 - Developer Bundle Edition (Trial) 15.0.0.7089 (https://www.liquid-technologies.com) -->
<Student_details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema.xsd">
<city>string</city>
<flat_num>string</flat_num>
<landmark>string</landmark>
<street>string</street>
<firstname>string</firstname>
<lastname>string</lastname>
<mothername>string</mothername>
<fathername>string</fathername>
</Student_details>
这是工作的感谢,在我的情况下如何将位置组元素设置为非强制性和学生组为必修元素。 – Santhosh