返回介绍

11.3 XML是元语言

发布于 2023-05-19 17:35:11 字数 3295 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文