JavaWeb_02_XML Schema约束

XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd

  • 一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。

  • 和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

  • 编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

名称空间:本质上是一个全世界独一无二的名字,作用是为了能够独一无二的标识资源而起的名字。为了保证这个名字全世界独一无二,一般使用开发者公式的域名进行一些扩展来保证名称空间的独一无二,名称空间只是一个名字而已,不是真的地址,访问这个地址并不能真的访问到这个资源。

XML中使用名称空间引入Schema

为了在一个XML文档中声明它所遵循的Schema文件的具体位置,通常需要在Xml文档中的根结点中使用schemaLocation属性来指定,例如:

<itcast:书架 xmlns:itcast="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.itcast.cn book.xsd">
  • schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置,两者之间用空格分隔。
  • 注意,在使用schemaLocation属性时,也需要指定该属性来自哪里。

使用默认名称空间

基本格式:

    xmlns="URI"  

举例:

    <书架 xmlns="http://www.itcast.cn"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=“http://www.itcast.cn book.xsd">
        <>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价>28.00元</售价>
        </>
    <书架>

使用名称空间引入多个XML Schema文档

文件清单:xmlbook.xml

<?xml version="1.0" encoding="UTF-8"?>

<书架 xmlns="http://www.it315.org/xmlbook/schema" 
    xmlns:demo="http://www.it315.org/demo/schema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.it315.org/xmlbook/schema                 http://www.it315.org/xmlbook.xsd 
        http://www.it315.org/demo/schema http://www.it315.org/demo.xsd">
    <>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价 demo:币种=”人民币”>28.00元</售价>
    </>
</书架>

不使用名称空间引入XML Schema文档 (有限制)
文件清单:xmlbook.xml

<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="xmlbook.xsd">
    <>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价>28.00元</售价>
    </>
</书架>

在XML Schema文档中声明名称空间

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="http://www. itcast.cn"
               elementFormDefault="qualified">
<xs:schema>
  • targetNamespace元素用于指定schema文档中声明的元素属于哪个名称空间。
  • elementFormDefault元素用于指定,该schema文档中声明的根元素及其所有子元素是否都属于targetNamespace所指定的名称空间。
    Schema语法 参看w3c文档
原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932928.html