什么是Schema
Schema是新的XML文档约束;
Schema要比DTD约束强大,是DTD替代者
Schema本身也是XML文档,但是Schema文档的扩展名为xsd,而不是xml
Schema功能更加强大,数据类型更完善
Schema支持名称空间
Schema重点
与DTD一样,要求可以通过Schema约束文档编辑xml文件。常见框架使用Schema的有
Spring 等
什么是命名空间
如果XML文档中使用多个Schema文件,而且这些Schema文件中定义了相同名称的元素就
会出现名字冲突。就像一个java文件中使用了import java.util和import java.sql
在使用Data类时,那么就不明确Data是哪个包下的Data
总之名称就是用来处理元素和属性的名称冲突问题,与java中的包是同一类用途。
如果每个元素和属性都有自己的名称空间,那么就不会出现名字冲突问题,
就像是每个类都有自己所在的包一样,那么雷明杰不会出现问题
代码格式
<?xml version="1.0" encoding="UTF-8"?>
<!--
如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。
格式如下:
<web-app xmlns="http://www.example.org/web-app_2_5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
version="2.5">
-->
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/web-app_2_5"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/web-app_2_5"
elementFormDefault="qualified">
<xsd:element name="web-app">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="servlet">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="servlet-name"></xsd:element>
<xsd:element name="servlet-class"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="servlet-mapping">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="servlet-name"></xsd:element>
<xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="welcome-file-list">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>