XML的约束

作者: 嗷老板 | 来源:发表于2018-03-13 22:20 被阅读0次

  由于xml是一种可扩展的标记语言,我们可以自己定义标签的写法,但我们在实际开发的时候,不能每人都按照自己的想法来写xml文件,因此我们需要规定xml中只能出现的元素。
  xml中的约束技术:dtd约束和schema约束(看懂即可)

一、dtd约束

1、使用dtd定义元素(标签)

(1)语法

  <!ELEMENT 元素名 约束>

(2)简单元素的定义

  简单元素就是没有子元素的元素。

语法:<!ELEMENT name (#PCDATA)>
  (#PCDATA):约束name是字符串类型
  EMPTY:元素为空(没有内容)
  ANY:任意

(3)复杂元素的定义

  复杂元素就是有子元素的元素。

语法:<!ELEMENT 元素名称 (子元素)>
  表示子元素出现的次数:
    +:表示一次或者多次
    ?:表示零次或者一次
    *:表示零次或者多次
  子元素直接使用逗号隔开:表示元素出现的顺序;
  子元素直接用 | 隔开:表示元素只能出现其中的任意一个。

举例:

<?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT 书架 (书+)>
        <!ELEMENT 书 (书名,作者,售价)>
        <!ELEMENT 书名 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 售价 (#PCDATA)>

(4)dtd文件的引用

语法:<!DOCTYPE 根元素名称 SYSTEM "文件的路径">
举例:

<?xml version="1.0" encoding="UTF-8"?>
    <!--由于book.dtd文件在项目目录下,所以我们直接输入文件名即可>
    <!DOCTYPE 书架 SYSTEM "book.dtd">
    <书架>
        <书>
            <书名></书名>
            <作者></作者>
            <售价></售价>
        </书>
    </书架>

  eclipse中可以实现dtd的快速引入:创建xml文件时,选择next --> Create XML file from a DTD file --> next --> 工作空间选择dtd --> finish。

2、使用dtd定义属性

(1)语法:

  <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>

(2)属性类型

  • CDATA:字符串
    例:
    <!ATTLIST 商品 类别 CDATA #REQUIRED>
    <商品 类别="abc"></商品>
  • 枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
    例:
    <!ATTLIST 商品 颜色 (红色|黄色|蓝色)  #REQUIRED>
    <商品 颜色="红色"></商品>
  • ID:值只能是字母和下划线开头且不能重复
<!ATTLIST 商品 价格 ID   #REQUIRED>
<商品 价格="c001"></商品>

(3)属性的约束

#REQUIRED:属性必须存在

#IMPLIED:属性可有可无

#FIXED: 表示一个固定值,属性的值必须是设置的这个固定值
    <!ATTLIST 商品 品种 CDATA #FIXED "ABC">
    <商品 品种="ABC" />

直接值:如果不写属性,使用默认值;如果写了属性,使用设置那个值
    <!ATTLIST 商品 颜色 CDATA "黄色">         
    <商品 />

(4)定义属性示例一

<!--为了使读者可以看清,所以讲属性进行了换行-->
<!ATTLIST 商品 
       类别 CDATA #REQUIRED 
       颜色 CDATA #IMPLIED
>
<商品 类别="服装"颜色="黄色" />

(5)定义属性示例二

<!DOCTYPE 购物篮 [
    <!ELEMENT 购物篮 (肉+)>
    <!ELEMENT 肉 EMPTY>
    <!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]> 

<购物篮>
        <肉 品种="鱼肉"/>
        <肉 品种="牛肉"/>
        <肉/>
</购物篮>

二、schema约束

1、schema的概述

  schema约束符合xml的语法,xml语句。一个xml中可以有多个schema,多个schema使用名称空间区分(类似于java包名)xmlns(XML Namespaces的缩写)。
  schema相较于xml可以支持更多的数据类型,且语法更为复杂,但是schema目前不能替代dtd。

2、schema的案例

(1)schema约束文件

<?xml version='1.0' encoding='UTF-8' ?> 
    <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' //固定的(标准名称空间):表示当前xml文件是一个约束文件
            targetNamespace='http://www.itheima.com' //想使用schema约束文件,就直接通过这个地址引入约束文件
                    > 
        <xs:element name='书架' >
            <xs:complexType>
                <xs:sequence maxOccurs='unbounded' >
                    <xs:element name='书' >
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name='书名' type='xs:string' />
                                <xs:element name='作者' type='xs:string' />
                                <xs:element name='售价' type='xs:string' />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>

名词解释:
  <sequence>:表示元素的出现的顺序
  <complexType>:表示这是一个复杂元素,有子标签
  maxOccurs="unbounded":表示元素出现的次数,没有限制
  xmlns(XML Namespaces的缩写)默认命名空间,如文件中没有使用前缀,则采用该默认命名空间,如果后面有前缀,命名空间里面的元素或者属性就必须加上前缀,如:例子中的xs。

(3)根据约束文件写xml

<?xml version="1.0" encoding="UTF-8"?>
    <it:书架 xmlns:it="http://www.itheima.com"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation="http://www.itheima.com book.xsd">//引入schema: 名称空间 dtd文件名称(注意空格一定不能漏掉)

        <it:书>
            <it:书名>Java基础</it:书名>
            <it:作者>张三</it:作者>
            <it:售价>99.00元</it:售价>
        </it:书>
    </it:书架>

schema约束的快速引入:
  创建xml文件的时候,选择next --> Create XML file from a DTD file --> next --> 工作空间选择xsd --> finish

相关文章

  • 3/30day22_XML_XML约束

    day22_XML_XML约束 思维导图 复习 今日内容 XML XML约束 XML的学习 XML概念 XML的介...

  • xml约束

    什么是xml约束 在xml技术里,编写一个文档/文件来约束一个xml文档的书写规范、称为xml约束。因为没有约束 ...

  • XML约束

    xml约束:规范了xml文件数据内容格式的编写规则 xml约束技术: DTD约束:语法相对简单,功能也相对简单 s...

  • xml约束

    定义约束tes.xsd 引用约束my.xml

  • XML的约束

      由于xml是一种可扩展的标记语言,我们可以自己定义标签的写法,但我们在实际开发的时候,不能每人都按照自己的想法...

  • XML中的DTD约束

    什么是约束? 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这就是XML约束。约束定义了文档的结...

  • XML约束——DTD约束

    约束 XML技术中,可以编写一个文档来约束一个XML的书写规范,约束文档定义了在XML中允许出现的元素名称、属性及...

  • XML约束——Schema约束

    Schema与DTD XML Schema符合XML语法结构。 DOM、SAX等XML API很容易解析出XML ...

  • XML(二)XML约束

    XML约束 DTD DTD(Document Type Define),dtd文件中描述并规定了元素、属性和其他内...

  • XML约束和解析

    XML基本语法 XML解析 一 XML约束 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之...

网友评论

    本文标题:XML的约束

    本文链接:https://www.haomeiwen.com/subject/qjptqftx.html