XML --- 传输和存储数据 HTML--- 显示数据
XML 指可扩展标记语言,很类似HTML,设计宗旨是传输数据,而非显示数据。没有预定义,需要自行定义标签,具有自我描述性。
没有任何行为的XML,XML是不作为的。XML被设计用来结构化、存储及传输信息。
XML 仅仅是纯文本,有能力处理纯文本的软件都可以处理XML
XML不是HTML的替代,他是对HTML的补充,XML是独立于软件和硬件的信息传输工具
XML文档结构是一种树结构,他从“根部”开始,然后扩展到“树枝”
XML的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用:
所有XML元素都必须有关闭标签、XML标签对大小写敏感、XML必须正确的嵌套、XML文档必须有根元素、XML的属性值必须加引号
实体引号
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ‘’ | 单引号 |
" | " | 引号 |
<bookstore> <!--元素内容(因为含有元素)-->
<book category="CHILDREN"> <!--元素内容(因为含有元素)-->
<title>Harry Potter</title>
<author>J K. Rowling</author> <!--文本内容,因为author仅包含文本-->
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
<!--
仅有<book>元素拥有属性(category="CHILDREN");
命名规则:名称可以含有字母、数字及其他字符;
名称不能以数字或者标点符号开始;
名称不能以字符“xml”(或者XML、Xml)开始
名称不能包括空格
可以使用任何名称,没有保留字
最佳命名习惯,使用下划线,比如:简短的<book_title>,而不是复杂的:<the_title_of_the_book>.
避免“-”字符、“·”字符、“:”字符;
实用经验:使用数据库命名鬼则来命名XML文档的元素。XML文档经常会有一个对应的数据库,其中的字段会对应XML文档中的元素;
-->
<!--XML元素是可扩展的-->
<note >
<to>George</to>
<form>John</form>
<body>Don't forget the meeting!</body>
</note>
<!--再像XML文档添加一些额外的信息-->
<note>
<date>2017-01-10</date>
<to>George</to>
<form>John</form>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!--应用程序即使加了新的<date><heading>内容,仍然可以找到XML文档中的<to>、<from>以及<body>,并产生相同的输出,而不会中断或奔溃-->
<!--XML的优势之一,就是可以经常在不中断的情况进行扩展-->
XML元素可以在开始标签中包含属性,类似HTML。属性(Attribute)提供关于元素的额外(附加)信息
<!--XML属性(属性提供有关元素的额外信息)-->
<!--XML属性必须加引号-->
<person sex="female"></person>
<person sex='female'></person>
<gangster name='George "Shotgun" Ziegler'></gangster>
<gangster name="George "e;Shotgun" Ziegler"></gangster>
<!--XML元素 vs.属性-->
<person sex="female"><!--sex是一个属性-->
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex><!--sex是一个子元素-->
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<!--在HTML中,属性用起来很便利,但是XML中,应尽量避免使用属性-->
<!--三种XML文档包含相同的信息-->
<!--第一个例子-->
<note date="08/08/2008">
<to>George</to>
<form>John</form>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!--第二个例子-->
<note>
<date>08/08/2008</date>
<to>George</to>
<form>John</form>
<heading>Reminder</heading>
<body>Don't forget the meeting</body>
</note>
<!--第三个例子-->
<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<form>John</form>
<heading>Reminder</heading>
<body>Don't forget the meeting</body>
</note>
<!--避免使用属性-->
<!--属性无法包含多重的值(元素可以)、属性无法描述树结构(元素可以)、属性不易扩展(为未来的变化)、属性难以阅读和维护-->
<!--尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息-->
拥有正确语法的XML被称为“形式良好”的XML。通过DTD验证的XML是“合法”的XML
合法的XML文档是“形式良好”的XML文档,同样遵守文档定义(DTD)的语法规则:
<?xml version="1.0" encoding="" ?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<form>John</form>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
XML DTD
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
XMLHttpRequest对象用于在后台与服务器交换数据
优势:在不重新加载页面的情况下更新网页、在页面已加载后从服务器请求数据、在页面已加载后从服务器接收数据、在后台向服务器发送数据