xml学习笔记

1.所有的标记都必须要有一个相应的结束标记;

2.所有的XML标记都必须合理嵌套;

3.所有XML标记都区分大小写;

4.所有标记的属性必须用""括起来;


XML标记必须遵循下面的命名规则:

1.名字中可以包含字母、数字以及其它字母;

2.名字不能以数字或"_" (下划线) 开头;

3.名字不能以字母 xml (或 XML 或 Xml ..) 开头;

4.名字中不能包含空格。


在XML文档中任何的差错,都会得到同一个结果:网页不能被显示。各浏览器开发商已经达成协

议,对XML实行严格而挑剔的解析,任何细小的错误都会被报告。


XML 文档必须包含根元素。该元素是所有其他元素的父元素。

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有元素均可拥有子元素

所有元素均可拥有文本内容和属性(类似 HTML 中)。


XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。

在 HTML,经常会看到没有关闭标签的元素:

在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签:

声明不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。

XML 元素使用 XML 标签进行定义。

XML 标签对大小写敏感。在 XML 中,标签 <Letter> 与标签 <letter> 是不同的。

必须使用相同的大小写来编写打开标签和关闭标签

打开标签和关闭标签通常被称为开始标签和结束标签。

在 XML 中,所有元素都必须彼此正确地嵌套

XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。

与 HTML 类似,XML 也可拥有属性(名称/值的对)。

在 XML 中,XML 的属性值须加引号。请研究下面的两个 XML 文档。第一个是错误的,第二个

是正确的:

<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
在第一个文档中的错误是,note 元素中的 date 属性没有加引号。


在 XML 中,有 5 个预定义的实体引用:

&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 省略号
&quot; " 引号

注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来

代替它是一个好习惯。

在 XML 中编写注释的语法与 HTML 的语法很相似:

<!-- This is a comment -->

在 XML 中,文档中的空格不会被删节。


XML 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字

符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而

Macintosh 应用程序使用 CR 来存储新行。

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

XML 元素必须遵循以下命名规则:

名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。


XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验

,即使用数据库的名称规则来命名 XML 文档中的元素。

非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符

时可能出现的问题。


XML 的优势之一,就是可以经常在不中断应用程序的情况进行扩展。

XML 元素可以在开始标签中包含属性,类似 HTML。

属性 (Attribute) 提供关于元素的额外信息。

XML 属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用。

注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:

<gangster name='George "Shotgun" Ziegler'>或者可以使用实体引用:

<gangster name="George &quot;Shotgun&quot; Ziegler">

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。我的经验是在

HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来

很像数据,那么请使用子元素吧。

因使用属性而引起的一些问题:

属性无法包含多个值(子元素可以)
属性无法描述树结构(子元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护
请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。


针对元数据的 XML 属性
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML

中 ID 属性是一样的。这个例子向我们演示了这种情况:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note>
</messages>
上面的 ID 仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应

当存储为元素。

 

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

通过某个 DTD 进行了验证的 XML 是“合法”的 XML。


一个"形式良好"的 XML 文档拥有正确的语法。

一个"形式良好"的 XML 文档会遵守前几章介绍过的 XML 语法规则:

XML 文档必须有根元素
XML 文档必须有关闭标签
XML 标签对大小写敏感
XML 元素必须被正确的嵌套
XML 属性必须加引号


一个合法的 XML 文档是"形式良好"的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 
在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。


DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

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


W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:

<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>

W3C 的 XML 规范声明:如果 XML 文档存在错误,那么程序就不应当继续处理这个文档。理由

是,XML 软件应当轻巧,快速,具有良好的兼容性。

XSLT 是首选的 XML 样式表语言。

XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值