XML的学习
XML的定义
XML是指可扩展标记语言(eXtensible Markup Language)。 被设计用来传输和存储数据,不用于表现和展示数据,其焦点是数据的内容。而HTML 则用来表现数据,其焦点是数据的外观。
HTML旨在显示内容,XML旨在传输信息。
XML的实例
例一
<?xml version="1.0" encoding="UTF-8"?>
<site>
<name>RUNOOB</name>
<url>https://www.runoob.com</url>
<logo>runoob-logo.png</logo>
<desc>编程学习网站</desc>
</site>
XML文档第一行以XML声明开始,用来表述文档的一些信息
以上面为例,site为父节点,而name,url,logo,desc,为子节点,他们也分别为标签,标签内包含了要传递的信息。且标签必须成对出现,有开始标签就需要要结束标签,例如:开始标签为<name>,结束标签为 </name>
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>
实例中的根元素是 <bookstore>(根节点)。文档中的所有 <book>(父节点) 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素(子节点):<title>、<author>、<year>、<price>。
XML的语法规则
1.XML文档必须有根元素
在例二中,bookstore就是根元素
2.XML声明
在例一中,第一行就是XML声明
3.所有XML元素都必须有一个关闭的标签
即在以上的例子中所有元素后面都必须带上关闭标签(结束标签)
4.XML标签对大小写敏感
<Message>这是错误的</message>
<message>这是正确的</message>
5.XML必须正确嵌套
<b><i>This text is bold and italic</i></b>
在上面的实例中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。
6.XML属性必须加引号
<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>
note元素中date属性加上了引号
一个元素可以有多个属性,他的基本格式为:
<元素名 属性名1="属性值1" 属性名2="属性值2">
7.实体引用
"<"在解析器中会把它当作新元素的开始,这样会产生XML错误,为避免错误产生,就会有实体引用来代替"<"。例如:
<message>if salary < 1000 then</message>
在XML中有5个预定义的实体引用
注:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的。
8.XML中的注释
<!-- This is a comment -->
9.在XML中空格会保留
10.XML以LF存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。XML以LF存储换行。
XML元素
XML元素是指从开始标签直到结束标签的部分。一个元素可以包含其他元素、文本、属性、或者混合以上所有。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</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>
在上面的实例中,<bookstore> 和 <book> 都有 元素内容,因为他们包含其他元素。<book> 元素也有属性(category="CHILDREN")。<title>、<author>、<year> 和 <price> 有文本内容,因为他们包含文本。
XML的命名规则
1.名称可以包含字母、数字以及其他的字符
2.名称不能以数字或者标点符号开始
3.名称不能以字母 xml(或者 XML、Xml 等等)开始
4.名称不能包含空格
最佳命名习惯
使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。
名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name。
避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。
避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。
在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。
XML的属性
在下面的实例中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:
<file type="gif">computer.gif</file>
XML属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用
例如:
<person sex="female">
或者这样也可以:
<person sex='female'>
如果属性值本身包含双引号,您可以使用单引号,就像这个实例:
<gangster name='George "Shotgun" Ziegler'>
或者您可以使用字符实体:
<gangster name="George "Shotgun" Ziegler">
XML的元素于属性的区分
<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
在这个例子中,date是一个属性。
<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
而在这个例子中,date是一个元素。
<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这个例子则扩展了date的元素。
注意:属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。
针对元数据的XML属性
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。这个实例向我们演示了这种情况:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。(有点绕)
以上所有内容,是个人看菜鸟教程总结和搬运的,为的是我以后学习和使用XML时有一定的了解。