XML
(此文章仅为菜鸟教程的学习心得,仅涉及基础知识)
XML全称为extensible Markup language
- 自描述的
- 允许对文档内容进行检验
- 可以使用XML开发各种行业的专有标记语言
- 通用性
- 开放性
简介
-
XML 是独立于软件和硬件的信息传输工具。
-
只是用来传送和结构化存储数据,而非显示数据。不能做任何事情。
<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
-
标签未被预定义,需自定义标签。
用途
- XML把数据从HTML中分离。通过JavaScript代码读取XML文件,更新网页数据内容。
- XML以纯文本存储,简化数据共享。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9F7tmX0-1619408467107)(C:\Users\yinlu\AppData\Roaming\Typora\typora-user-images\image-20210401100701461.png)]
在上面的示例中,<note>
即为根元素,接下来四行为子元素,最后一行定义根元素结尾。
XML文件中必须包含根元素,该元素是其他所有元素的父元素。所有的元素都可以有子元素:
所有的元素都可以有文本内容和属性(类似 HTML 中)。
元素语法
-
元素名称、属性名称和其他语言类似
-
元素嵌套与HTML一致
-
注释同HTML
-
特殊字符
-
所有元素都必须有关闭标签,但声明没有标签。
<?xml version="1.0" encoding="utf-8"?>
-
标签对大小写敏感。
-
属性值必须加引号。
<note date="12/11/2007"> ...... </note>
-
实体引用。
(eg.解析器会把所有的“<”当做新元素的开始)
<
< less than >
> greater than &
& ampersand '
` apostrophe "
" quotation mark -
空格
在xml中,文档中的空格不会删减。
-
换行
回车符(CR)和换行符(LF)
属性与元素
-
元数据:有关数据的数据。应当存储为属性,数据应当存储为元素。
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。如下:
<messages> <note id="501"> ...... </note> <note id="502"> ...... </note> </messages>
以上的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。
-
具体操作时尽量避免使用属性,用元素代替。
xml验证
通过DTD验证的xml合法。
-
可以使用外部文件
<!DOCTYPE note SYSTEM "Note.dtd">
-
XML Schema(一种基于XML的DTD的替代者)
Schema
- XML Schema 是基于 XML 的 DTD 替代者。
- XML Schema 可描述 XML 文档的结构。
- XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。
<xsd:simpleType name="系别列表">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="中文系"/>
<xsd:enumeration value="计算机系"/>
<xsd:enumeration value="数学系"/>
</xsd:enumeration>
</xsd:simpleType>
<xsd:attributeGroup name="全名">
<xsd:attributeGroup name="姓" type="xsd:string" use ="required"/>
<xsd:attribute name="名" type="xsd:string"/>
</xsd:attributeGroup>
Schema对应的XML案例
XSLT
- XSL(EXtensible Stylesheet Language)是一个xml文档的样式表语言。
- XSLT指XSL转换。
大多数的浏览器都会仅仅把 XML 文档显示为源代码。所以我们使用xslt将xml转化为HTML格式。
DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
以上 DTD 解释如下:
- !DOCTYPE note (第二行)定义此文档是 note 类型的文档。
- !ELEMENT note (第三行)定义 note 元素有四个元素:“to、from、heading,、body”
- !ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
- !ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
- !ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
- !ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型