XML技术
与数据相关的技术,常用来存储数据和传输数据。
优势:xml是第三方的数据格式与任何编程语言都是不具有相关性的,所以可以用于任何的编程语言
类似HTML同样是标记文本语言,标签没有被预定义,由开发者随意书写,而HTML标签是预定义的,每个标签都有对应的意义。
未来也许会出现某种字处理软件、电子表格程序以及数据库,它们可以使用纯文本格式读取彼此的数据,而不需要使用任何的转换程序。
简化了数据的传输,解决了兼容性,简化了数据共享
xml是数据树形结构,标记本身嵌套使用。节点的划分。
类似HTML,各节点也具有属性。属性本身也可以看做一个节点,只不过不是用来连接上下级的节点。
XML语法;
1.文档声明
2.元素
3.属性
4.注释
5.CDATA块
6.处理指令
此处是简化之后的学习并不是XML的全部
文档声明
任何XML都必须具备文档声明,声明XML文档的类型
声明格式<?version="1.0" encoding="ISO-8859-1"?>
任何文档声明都必须具有version的声明,版本是可以随意的,但是一般用来记录数据更新的版本。
如果没有指定编码集默认采用编辑器默认编码格式,但是浏览器默认是ISO-8859-1格式解析,这个格式是不支持中文的,所以如果编码集不一致会导致乱码
文档是一种树形结构,必须要有根元素,钙元素是所有其他元素的父元素节点,所有元素都可以具有子元素。
所有 XML 元素都须有关闭标签
所有元素都必须彼此正确地嵌套:
XML 标签对大小写敏感
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
注释<!-- This is a comment -->
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。
名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为你需要提取第一个单词。
避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。
避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的名称规则来命名 XML 文档中的元素。
非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。
XML 的优势之一,就是可以经常在不中断应用程序的情况进行扩展。
属性
属性通常提供不属于数据组成部分的信息。在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。
因使用属性而引起的一些问题:
属性无法包含多重的值(元素可以)
属性无法描述树结构(元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护
验证XML文档
合法的 XML 文档是“形式良好”的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则
<!DOCTYPE note SYSTEM "Note.dtd">
DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:
XML显示
XSLT 是首选的 XML 样式表语言。当然CSS也可以
<?xml-stylesheet type="text/xsl" href="simple.xsl"?>
XMLHttpRequest 对象用于在后台与服务器交换数据。
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据
xmlhttp=new XMLHttpRequest();
CDATA 区段中的文本会被解析器忽略。
CDATA 部分中的所有内容都会被解析器忽略。通常用来存放一些特别的代码
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
CDATA与转义字符可以有相同的作用,但是优先使用CDATA,因为从解析的角度来看转义字符需要进行转义才可以看到最终效果,而CDATA则不需要转义
处理指令
简称PI,处理指令用来指挥解析引擎如何解析XML文档内容
<?xml-stylesheet type="text/css" href="1.css"?>//通知XML解析引擎应用css文件显示xml文档内容
处理指令必须以<? ?>开头结尾,文档声明语句就是最常见的指令处理语句
xml技术应用
1,传输和存储数据----程序员为了简化开发,不对xml使用约束技术
不使用xml约束技术,xml格式不一定正确
所有xml数据内容生成,解析过程都是通过程序来完成,而不是开发人员手动完成
2,使用xml配置文件
使用约束技术的保证xml元素的准确性
使用了xml约束的文档,又称为文档验证
元素内容更加规范
约束技术有两种DTD和Schema
DTD快速入门
Document Type Definition
语法<!ELEMENT 元素(子元素或者文本类型)>
DTD与xml文档关联的三种方式
1,内部DTD、
<!DOCTYPE 根元素[
// 此处写元素类型
<!ElEMENT books(book)>
<!ELEMENT book(name,price)>
<!ELEMENT name(#PDATD)>
]>
2,外部DTD
语法<!DOCTYPE 根元素 SYSTEM “DTDURL”>
3,公共DTD
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD网络文件URL">
DTD约束语法细节
元素定义
<!ELEMENT 元素名称(元素内容声明)>
属性定义
实体定义
XML Schema
是有一套预先定义的XML元素和属性,不同于普通的xml是没有预先定义的
Schema本身也是一个XML文档但他的扩展名是.xsd
一个Schema文档称之为模式文档,通过该规范写出来xml文档被称为实例文档
该文档中必须有一个根节点Schema
通常需要把这个文件中声明的元素绑定URI地址(又成为命名空间),用来表示元素来自哪一个schema文档
一个普通的XML文档
<?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
一个DTD约束文档note.dtd
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
一个xml Scheam约束文档note.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML文档对DTD约束文档的引用
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
XML文档对Schema文档的引用
<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>