魔兽世界编程宝典读书笔记(7)

XML是一种可以构建图形框架的语言,利用它你可以组成自己的用户界面。
与Lua不同,标记语言是一种描述性语言,它有许多的其它信息(我们称它为标记),这些标记可以用来描述文件的结构,也可以说明在电脑屏幕的什么位置显示什么图片或文本。
HTML是一种用结构信息描述文本怎样显示的标记语言,而XML则完全是一种结构语言,它只说明元素之间的关系(也就是它们的结构是什么样的),但不会说明这些元素应该怎么样显示。
XML与HTML相比还有一点不同之处在于:HTML的标记都是固定不变的,而XML可以进行扩展,定义自己的标记。所以,在魔兽世界里,我们就有了一套自定义的标记,这些标记是由魔兽世界的开发人员们定义的。
XML被要求为要让人和机器都能看懂,而机器明显比人要弱智得多,所以XML有非常严格的语法。一个XML文档包括了标记、元素、属性和特殊字符。下面分开讨论。
1.XML 标记
XML是一个被尖括号括起来的标识 符,形如<tag>。这些标记是区分大小写的,也就是说<tag>和<Tag>是不同的标记,标记总是成对出现,形 如<tag></tag>就是一组完整的标记。开始标记和结束标记写法相似,只是结束标记多了一个斜杠。
2.XML 元素
元素就是整个标记的总称,通常元素的名称就是标记去掉尖括号后剩下的英文字母。例如<tag>叫tag标签,而它就是由tag(去掉尖括号剩下的英文字母)元素来组成的。元素和标记其实没有本质的区别,只是概念上的不同。元素一般按下面的规则来定义:
(1)非空元素必须由开始和结束标记组成
(2)一个没有内容的元素可以用开始和结束标记,也可以使用自闭合标记(形如<tag />)来表示
3.XML 属性
每一个XML元素可以有多个属性,每个属性都可以赋值。它们均写在开始标记的尖括号内,书写顺序可以随意,但每个属性之间都需要有空格分隔,属性和元素名之间也需要有空格分隔,并且元素必须写在最前面,形式如下:
<tag name=”sample” size=”3”>
需要注意的一个问题是,在HTML中标记的写法也是类似的,但HTML中给属性的值可以不用打双引号或单引号,而XML给属性的值必须打上双引号或单引号。
4.XML 特殊字符
XML采用了与HTML一样的特殊字符,如下表

 

字符
对应的特殊字符
&
&amp;
&lt;
&gt;
&quot;
&apos;
规范的XML文档是一个可用的,并且可以从语法的角度去分析的文档,它遵循如下的标准:
每一个XML文档都必须有一个根元 素,它是不能嵌套在其他任何元素内部的元素;每一个赋给属性的值都打上了单引号或双引号;标记只可以嵌套,而不能跨越形 如<a><i></a></i>这样的写法就是错误的。 而<a><i></i></a>就是正确的。
如果你拿到了一个XML文档,你可以 看到它的格式,也可以看懂它的内容,但是你却无法弄明白它的结构(比如都可以使用哪些标记,标记之间是个什么关系,每个标记可以使用哪些属性,赋值有什么 意义等等),这时候你可能就需要另一个文档,这个文档就是专门用来描述XML文档的结构的。一些功能强大的IDE甚至可以根据这个描述XML结构的文档来 检查你写的XML文档是否符合规定或在你编写XML文档时根据这个描述文件给出正确信息提示。这个文档有以下三种形式:
文档类型定义(DTD ,是一个通过各种符号来描述XML文档结构的规范,容易学习,功能一般,文件后缀名为.dtd。
schema,使用XML文档格式来描述你自己定义的XML文档结构的规范,功能强大,但学习难度较大。文件后缀名为xsd
WoW用schema规范标准定义了它自己的规范。
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
       <xs:element name=”addressbook” type=”AddressBook” />
       <xs:complexType name=”AddressBook”>
              <xs:sequence>
                     <xs:element name=”name” type=”xs:string” />
                     <xs:element name=”phone” type=”xs:string” />
                     <xs:element name=”address” type=”xs:string ” />
              </xs:sequence>
       </xs:complexType>
</xs:schema>
第一行声明一个规范,说明我们这个模式是按照哪个规范来声明的。
第二行声明了一个元素,它叫addressbook,它的类型是AddressBook。
而从第三行开始,具体描述了类型AddressBook的组成,很明显它有三个子标记,name、phone和address。
如果我们把上一节的文件存放于addressbook.xsd中,那么根据上面的描述,我们就可以创建下面这个符合addressbook.xsd文件规范的XML文件:
<addressbook xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=”addressbook.xsd”>
              <name>真正的默然</name>
              <phone>1580xxxxx48</phone>
              <address>昆明市五华区螺峰街4号</address>
</addressbook>
WoW用户界面有一个极详细的XML规范定义描述文件,精确地指出了在定义窗体时,怎样的标记、属性和值是合法的。为了更好地理解这一切是如何构建的,你可以依照第8章中给出的提示解压最新的XML定义描述文件。它的文件名为UI.Xsd。
XML非常的灵活,原因就是你可以完全自定义你自己的XML文档格式,但是这里你只需要掌握魔兽世界定义的文档格式就够了。当然,如果你想了解更多,你可以以此为起点,具体学习更多知识。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值