XML文件的定义和约束

0x00

XML : Extensible Markup Language 可扩展标记语言

        可扩展:标签都是自定义的。 <user>  <student>

        设计宗旨是传输数据

        XML 是对 HTML 的补充

0x01

XML结构

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

这个和HTML类似,在这个示例中根元素是<bookstore>。所有的<book>都在<bookstore>中。

<book>有4个元素<title>、< author>、<year>、<price>。

0x02

注意事项:

所有 XML 元素都须有关闭标签

对大小写敏感

必须有根元素

属性值须加引号

0x03 DTD

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构

1.内部的 DOCTYPE 声明

<!DOCTYOE   根元素  [元素声明]>

DTD的XML文档案例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
       <!ELEMENT books (book*)>
       <!ELEMENT book (name,price)>
       <!ELEMENT name (#PCDATA)>
       <!ELEMENT price (#PCDATA)>
]
>
<books>
    <book>
        <name>数据结构</name>
        <price>16</price>
    </book>
    <book>
        <name>sta</name>
        <price>12</price>
    </book>

</books>

        !DOCTYPE books 定义这个文档是 books 类型的文档
       <!ELEMENT books (book*)> 定义了有n个book
       <!ELEMENT book (name,price)> 定义book元素里有2个元素:name、price
       <!ELEMENT name (#PCDATA)> name元素为 "#PCDATA" 类型
       <!ELEMENT price  (#PCDATA)> price 元素为 "#PCDATA" 类型

2.外部文档声明

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中

<!DOCTYPE 根元素 SYSTEM "文件名">

0x04 构建模块

  • 元素
  • 属性
  • 实体
  • PCDATA
  • CDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记

CDATA 的意思是字符数据(character data)。

CDATA 是不会被解析器解析的文本。

0x05 DTD - 元素

1.声明一个元素

<!ELEMENT 元素名称 类别>

 或

<!ELEMENT 元素名称 (元素内容)>

 

2.空元素

<!ELEMENT 元素名称 EMPTY>

3.只有 PCDATA 的元素

 <!ELEMENT 元素名称 (#PCDATA)>

4.带有任何内容的元素

<!ELEMENT 元素名称 ANY>

 5.带有子元素(序列)的元素

<!ELEMENT 元素名称 (子元素名称 1)>

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

6.声明只出现一次的元素 

<!ELEMENT 元素名称 (子元素名称)>

7.声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>

8.声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>

9.声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>

0x06 DTD - 属性

1.声明属性:

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

属性类型的选项

类型描述
CDATA值为字符数据 (character data)
ID值为唯一的 id
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
xml:值是一个预定义的 XML 值

默认值参数可使用下列值:

解释
属性的默认值
#REQUIRED属性值是必需的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值