(1)前两点OK;第三个:
All the elements within the XML instance which do not have a prefix automatically belong to http://www.cmu.edu/ns/blank namespace as elementFormDefault is qualified
是不正确的。
在架构中声明前缀并不意味着 XML 实例必须使用相同的前缀。XSD 文件中的任何命名空间声明仅适用于 XSD 的 XML 文件(XSD 是 XML,因此...)
一般来说,没有办法假设任何带前缀或不带前缀的元素名称。即下面的例子都是正确的。
<some xmlns="" .../>
<some xmlns="urn:tempuri-org:XSD:1" .../>
<x:some xmlns:x="urn:tempuri-org:XSD:1" .../>
唯一可以确定的是,表示非限定名称的唯一方法是通过没有前缀的名称(即不能为“空”名称空间添加前缀)。
elementFormDefault
当元素在内容模型中声明时(即不是全局的),控制元素名称的形式。
(2) 部分正确。部分because of elementFormDefault.
不正确。同样,XSD 只是一种模式规范。XML 存在并且有自己的规则,与 XSD 或任何其他模式语言无关。此处适用的规则是XML 名称空间的规则,特别是范围。
(3) 您必须为每个命名空间创建一个 XSD;在每个命名空间中,您声明学生及其内容。然后定义人员的 XSD 将导入其他 XSD 并适当地引用学生。
所以这是一个基本的设置:
伯克利.xsd
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema targetNamespace="urn:berkeley-org" xmlns="urn:berkeley-org" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="student"/>
</xsd:schema>
哈佛.xsd
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema targetNamespace="urn:harvard-org" xmlns="urn:harvard-org" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="student"/>
</xsd:schema>
人.xsd
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema targetNamespace="urn:people-org" xmlns="urn:people-org" xmlns:harv="urn:harvard-org" xmlns:berk="urn:berkeley-org" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="urn:harvard-org" schemaLocation="harvard.xsd"/>
<xsd:import namespace="urn:berkeley-org" schemaLocation="berkeley.xsd"/>
<xsd:element name="people">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="harv:student"/>
<xsd:element ref="berk:student"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
文件图:
示例 XML(显示名称空间的使用):
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:harv="urn:harvard-org" xmlns:berk="urn:berkeley-org" xmlns="urn:people-org">
<harv:student/>
<berk:student/>
</people>