概念

  • xml的目的是:传输和存储数据,而html是为了展示数据用

  • htmlxss很相似,不同的地方在于

    • HTML标签不能自定义,XML标签可以自定义
    • HTML语法要求不严格;XML语法要求极其严格,必须是成对标签
    • 目的不同
  • xml的用途

    • 程序之间的数据传输通讯

      PHP->APP->JAVA

    • 配置文件

      config.xml

    • 存储数据,充当小型数据库

      data.xml

    • 规范数据格式,使数据具有结构性,易读,易处理

  • XML指的是可拓展性标记语言

  • XML的标签必须自定义,但是写标签名要有含义

  • XML必须要有一个root节点

XML基本语法

书写要点

  • XML必须有根节点

    根节点就是其他所有结点的父节点

    <root>
    <user>abc</user>
    <msg>abc</msg>
    </root>
  • XML头声明

    <?xml version="1.0" encoding="utf-8"?>

    这种头声明实际上是可有可无的

  • XML中的标签需要正确嵌套

  • XML中的标签对大小写敏感

  • 注释,与html一致

    <!-- XXX -->

  • HTML会将多个连续的空格字符合并为1个

    XML中,文档中的空格不会删减

  • XMLLF存储换行

  • 特殊字符使用实体转义

    XML中需要转义的字符有

    &lt; < less than
    &gt; > greater than
    &amp; & ampersand
    &apos; apostrophe
    &quot; " quotation mark

属性

html的语法规则一样

<man>
<name age="38" gender="">张三</name>
</man>
  • 一个标签可以有多个属性,属性的值必须使用引号引起来
  • 命名规则:数字字母下划线,数字不能开头

属性就是表示标签自身的一些额外信息;

XML中属性其实比较鸡肋

CDATA

XML文档中的所有文本均会被解析器解析

只有CDATA区段中的文本会被解析器忽略

PCDATA-被解析的字符数据

XML 解析器通常会解析 XML 文档中所有的文本。

当某个 XML 元素被解析时,其标签之间的文本也会被解析:

<message>**This text is also parsed**</message>

解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个实例中,其中的 元素包含着另外的两个元素(first 和 last):

<name><first>Bill</first><last>Gates</last></name>

而解析器会把它分解为像这样的子元素:

<name> <first>Bill</first> <last>Gates</last> </name>

解析字符数据(PCDATA)是 XML 解析器解析的文本数据使用的一个术语。

CDATA-(未解析)字符数据

术语 CDATA 是不应该由 XML 解析器解析的文本数据。

像 “<” 和 “&” 字符在 XML 元素中都是非法的。

“<” 会产生错误,因为解析器会把该字符解释为新元素的开始。

“&” 会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 “” 结束:

<script><![CDATA[function matchwo(a,b){if (a < b && a < 0) then{return 1;}else{return 0;}}]]></script>

在上面的实例中,解析器会忽略 CDATA 部分中的所有内容。

关于 CDATA 部分的注释:

CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 “]]>” 不能包含空格或换行。

命名空间

当两个不同的文档使用相同的元素名的时候就会发生命名冲突

避免方法

  • 使用前缀来避免命名冲突

    <h:table>
    <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
    </h:tr>
    </h:table>
    
    <f:table>
    <f:name>African Coffee Table</f:name>
    <f:width>80</f:width>
    <f:length>120</f:length>
    </f:table>
  • xmlns属性

    当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。

    命名空间是在元素的开始标签的 xmlns 属性中定义的。

    命名空间声明的语法如下。xmlns:前缀=“URI”。

验证

拥有正确语法的 XML 被称为"形式良好"的 XML。

通过 DTD 验证的XML是"合法"的 XML。

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

<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>