11.3 XML是元语言
XML并没有限定标签的使用方式,使用什么样的标签都可以。可以说XML仅仅限定了进行标记时标签的书写格式(书写风格)。也就是说通过定义要使用的标签种类,就可以创造出一门新的标记语言。通常把这种用于创造语言的语言称为“元语言”,例如,可以使用<dog>和<cat>等标签,创造一种属于自己的标记语言 – 宠物语言。不过,就算新语言是自己创造的,也毕竟属于XML格式的标记语言,所以不遵循一定的规范是不行的。如果只是在文档中胡乱地堆积标签,则无法称之为符合XML格式的语言。表11.1中列出了作为元语言的XML中的约束。因为这些约束都很简单,所以请先粗略地浏览一下
表11.1 XML中的主要约束
约束:示例
XML文档的开头要写有XML声明,表明使用的XML版本和字符编码:
<?xml version=”1.0” endcoding=”UTF-8”?>
信息要用形如“<标签名>”的开始标签和形如“</标签名>”的结束标签括起来:
<cat>Tom</cat>
标签名不能以数字开头,中间也不能含空格:
<5cat>、<my cat>不能作为标签名
由于半角空格、换行符、制表符(TAB)都会被视为空白字符,所以在文档中可以任务换行或缩进书写:
参考图11.4
对于没有内容的元素,不但可以写成“<标签名></标签名>”,还可以写成“<标签名/>”
<cat></cat>和<cat/>是等价的
标签名区分大小写:
<cat>、<CAT>和<Cat>是不相同的标签
标签中可以再嵌套标签以表示层次结构,但不能交叉嵌套:
<pet><cat>Tom</cat></pet>正确,<cat><pet>Tom</cat></pet>错误
在XML声明的后面,必须有且只有一个“根元素”,该标签包含了所有其他标签:
<pet>……其他标签……</pet>
在开始标签中,可以以“属性名=“属性值””的形式,加入任意属性:
<cat type=”黑猫”>To</cat>
如果要在内容中使用<和>,&和“”这5个特殊符号,就要把它们写成<、>、&、"和':
<cat>Tom&汤姆</cat>
只要用<![CDATA[和]]>把内容括起来,就可以在里面直接使用<、>、&和“”这5个特殊符号了。这种写法适用于要书写大量特殊符号的场景:
<cat><![CDATA[Tom&汤姆&Garfield&加菲]]</cat>
注释的写法是用<!--和-->把注释的内容括起来:
<!--这是注释-->
XML的数据是纯文本格式的,也就是说只包含字符。通常把遵循了XML的约束编写出的文档称为XML文档;把保存着XML文档的文件称为XML文件。可以使用记事本等文本编辑器编写XML文件
图11.4展示了一个用描述宠物的标记语言编写的XML文件示例。
图11.4 描述宠物的标记语言
其中使用了3种标签<pet>,<cat>,<dog>。虽然标签的名字是自己决定的,但在标签排列和XML声明等方面遵循了XML的约束,所以是一个良好的XML文件
把图11.4所示的文件保存为MyPet.xml,然后用Web浏览器打开该文件看看,当然,由于它不HTML文件,所以不会显示成网页。但现在的Web浏览器都集成了XML解析器,可以用这个功能来检查XML文件的书写格式。如果用Internet Explorer Web浏览器打开MyPet.xml,就可以看到为了便于理解,里面的关键词、标签以及其他信息都用不同的颜色区分了出来。虽然图11.5是黑白的,但实际上在Web浏览器中最开始的1行是蓝色的。在<pet>等标签中,表示标签开始和结束的符号<,</,>也都是蓝色的,而pet和cat等标签的名字是褐色的,用标签括起来的“小玉”和“小不点儿”则是黑色的
图11.5 用Internet Explorer Web浏览器打开图11.4所示的XML文件
通常把遵循XML约束、正确标记了的文档称为“格式良好的XML文档(Well-formed XML Document)”。换言之,只要能通过XML解析器的解析,就是格式良好的XML文档。下面做一个实验,将MyPet.xml中的</cat>删除,保存后用Web浏览器再次加载该文件。因为XML约束中规定,标签必须以<标签名>,</标签名>的形式成对出现,所以如果删除了</cat>而且留下了<cat>的话,就不再是格式良好的XML文档了,这导致XML解析器不能正确解析,在Web浏览器上自然也就无法正常显示了(如图11.6所示)
图11.6 打开不符合XML规范的XML文档
所以在创建XML文档时,可以利用Web浏览器带有的XML解析器,检查XML文档的格式是否正确
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论