XML 约束 (DTD和 schema)

 

 

 

book.DTD 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.atguigu.com/bookSchema"
    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>
 
<!--
    schema规范中:
    1. 所有标签和属性都需要有schema文件来定义
    2. 所有的schema文件都需要有一个id, 但在这里它叫namespace,
    3. namespace的值由什么来指定?
        由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)
    4. 如何引入一个Schema约束?
        属性? : 用xmlns属性
        属性值: 对应的schema文件的id(namespace值)
 -->

  

book.xml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.atguigu.com/bookSchema"
    xmlns:dd="http://www.w3.org/2001/XMLSchema-instance"
    dd:schemaLocation="http://www.atguigu.com/bookSchema book.xsd">
    <书>
        <书名>JavaScript开发</书名>
        <作者>老佟</作者>
        <售价>28.00元</售价>
    </书>
</书架>
<!--
    schema规范中:
    1. 所有标签和属性都需要有schema文件来定义
    2. 所有的schema文件都需要有一个id, 但在这里它叫namespace,
    3. namespace的值由什么来指定?
        由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)
    4. 如何引入一个Schema约束?
        属性? : 用xmlns属性
        属性值: 对应的schema文件的id(namespace值)
    5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置
    6. schema文件的位置由什么属性来指定?
        属性? : schemaLocation
        属性值: namespace path
    7. 如果引入了N个约束, 需要给n-1个取别名
 -->

  

 

posted @   K____K  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
阅读排行:
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 想让你多爱自己一些的开源计时器
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析
点击右上角即可分享
微信分享提示