XML约束

本文深入探讨了XML约束的概念,包括DTD约束与Schema约束,并详细介绍了DTD约束的导入方式、语法及约束属性,同时阐述了Schema约束的名称空间、XML文件的引入方式以及使用XMLSchema文档的多种情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML约束

    XML约束要求:大家能够看懂约束内容,根据约束内容写出符合规则的xml文件。

引入

    XML语法: 规范的xml文件的基本编写规则。(由w3c组织制定的)
    XML约束: 规范XML文件数据内容格式的编写规则。(由开发者自行定义)

XML约束技术

    DTD约束:语法相对简单,功能也相对简单。学习成本也低。
    Schema约束:语法相对复杂,功能也相对强大。学习成本相对高!!!(名称空间)

DTD约束

    1)导入dtd方式
        内部导入

        <!DOCTYPE note [
          <!ELEMENT note (to,from,heading,body)>
          <!ELEMENT to      (#PCDATA)>
          <!ELEMENT from    (#PCDATA)>
          <!ELEMENT heading (#PCDATA)>
          <!ELEMENT body    (#PCDATA)>
        ]>

        外部导入
          本地文件系统:           

            <!DOCTYPE note SYSTEM "note.dtd">

          公共的外部导入:

            <!DOCTYPE 根元素 PUBLIC "http://gz.itcast.cn/itcast.dtd">

    2)DTD语法

            约束标签
                <!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)>

                类别:
                        空标签: EMPTY。 表示元素一定是空元素。
                        普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。
                        任何内容: ANY。表示元素的内容可以是任意内容(包括子标签) 

                (元素内容):
                        顺序问题:
                            <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签

                        次数问题:
                                标签   :  必须且只出现1次。
                                标签+  : 至少出现1次
                                标签*   : 0或n次。
                                标签?  : 0 或1次。

            约束属性
                    <!ATTLIST 元素名称 属性名称 属性类型 默认值>

                默认值:
                        #REQUIRED 属性值是必需的 
                        #IMPLIED   属性不是必需的 
                        #FIXED value 属性不是必须的,但属性值是固定的

                属性类型:控制属性值的
                    CDATA :表示普通字符串 
                    (en1|en2|..): 表示一定是任选其中的一个值
                    ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头

Schema约束

        名称空间:告诉xml文档的哪个元素被哪个schema文档约束。 在一个xml文档中,不同的标签可以受到不同的schema文档的约束。

         1)一个名称空间受到schema文档约束的情况
         2)多个名称空间受到多个schema文档约束的情况
         3)默认名称空间的情况
         4)没有名称空间的情况

举例

/*book.xsd*/
<?xml version="1.0" encoding="UTF-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                      targetNamespace="http://www. itcast.cn"
                      elementFormDefault="qualified">
    <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>
/*xml文件*/
<?xml version="1.0" encoding="UTF-8"?>

<itcast:书架 xmlns:itcast="http://www.itcast.cn"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.itcast.cn book.xsd">

    <itcast:书>
        <itcast:书名>JavaScript网页开发</itcast:书名>
        <itcast:作者>张孝祥</itcast:作者>
        <itcast:售价>28.00元</itcast:售价>
    </itcast:书>
</itcast:书架>

引入Schema文件

这里写图片描述

默认名称空间

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

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

<?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元</售价>
    </>
</书架>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值