复合元素
book.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.atguigu.cn"
elementFormDefault="qualified">
<element name="书架">
<complexType>
<sequence maxOccurs="unbounded">
<element name="书">
<complexType>
<sequence>
<element name="书名" type="string" />
<element name="作者" type="string" />
<element name="售价" type="string" />
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
shema约束文件的说明
1.第二行引入W3C标准约束文件约束shema这个标签。注入如果xmlns:name(这里的name是真这个shema的别名,这个是shema标签就变成shema:name)。
2.第三行targetNamespace术语叫命名空间,但实际就是一个名称的意思,这个的名称是一个URL形式的,但是这个URL可以不实际存在。
3.第四行elementFormDefault="qualified"> 是一个枚举的值,默认unqualified,说明这个命名空间,只约束到根标签,qualified 说明约束全标签,就是说这个命名空间能不能使用全部标签的意思。
2. shema对应的XML
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book>三国演义<book>
<books>
这个XML是还没有加入约束文件
XML加入约束文件中的主要步骤
找到shema的命名空间。
找到这个命名空间的实际文件。
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.atguigu.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
```xsi:schemaLocation="http://www.atguigu.cn book.xsd">```
<书>
<书名>JavaScript开发</书名>
<作者>老佟</作者>
<售价>28.00元</售价>
</书>
</书架>
第二行引入了shema文件约束的命名空间。但是在引入schemaLocation(命名空间文件)的时候,是出现一个问题,就是这个标签没人约束,W3C规定了,这个标签,所以我们只需要直接引用W3C URL就行了,这里也用到了别名机制,这里W3C命名空间起了别名,这样这引用schemaLocation的时候就可以用别名的机制。