第二章 XML的语法规则

对XML有了一个大概认识后,来学习它的语法规则。
元素就是标签,就是节点。
元素必须遵循以下命名规则:
1. 名称可以包含字母、数字以及其他的字符。
2. 名称不能以数字或者标点符号开始。
3. 名称不能以字母 xml(或者 XML、Xml 等等)开始。
4. 名称不能包含空格。
5. 对大小写敏感,标签 与标签 是不同的。
6. 避免-字符,以免误认为是减号。
7. 避免.字符,以免误认为是类的对象。
8. 避免:字符,以免命名空间混淆。
以xml自身的标准来讲,非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时也可能出现问题。
为了兼容性,还是都用英文字符吧。
除此之外,可使用任何名称,没有保留的字词。

所有的 XML 元素都必须有一个关闭标签(声明除外)。
嵌套必须正确,元素(节点)开始和结束标签要对应。
节点本身也可以拥有其对应的值(属性),该属性值要加双引号或者单引号,同时一个元素可以有多个属性值。
属性是为了提供有关元素的额外信息,注意和存储的文本数据区分。
事实上在数据构造时,元素,它们的文本,以及它们的属性,都被认为是节点。

注意事项:
1. 没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用元素。一般的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,应该尽量避免使用属性。
如果信息感觉起来很像数据,那么请多用元素(规范化,统一化)。
如前所述,不同的xml文档可以包含完全相同的信息,只要随意使用属性就行。
而且属性不容易扩展,又难以阅读和维护,请尽量使用元素来描述数据。

  1. 因为<>符号已经使用,需要实体引用来区分
    < < 小于
    > > 大于
    & & 和号
    ' ’ 单引号
    " ” 双引号

注释写法:

 <!-- 注释 -->

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

  1. 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
    这个 XML 携带 HTML 表格的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>

这个 XML 文档携带有关桌子的信息(一件家具):

<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的

元素,就会发生命名冲突。
XML 解析器无法确定如何处理这类冲突。

在 XML 中的命名冲突可以通过使用名称前缀从而容易地避免。
前缀使用:冒号,注意和元素命名规则区分,命名是避免使用:冒号,而前缀需要。
同时,命名空间必须额外在元素的开始标签的 xmlns 属性中定义的。

<root>

<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

</root>

这样就不会发生命名冲突,另一种写法也可以:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3cschool.cc/furniture">

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

</root>

更加简便的写法是,定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

<table xmlns="http://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

为什么要用那个URI?好像是要访问某个网址一样。
官方说其目的是赋予命名空间一个惟一的名称。
事实上,取唯一名称的方法很多,为什么用URI?
个人猜测是因为XML就是为了互联网传输信息而发明的,网址自然最能代表互联网,而且网址肯定不会重复,所以干脆用网址来标识区分。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值