XML简易教程之三

夏烈日

夏烈日

2016-02-19 22:28

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的XML简易教程之三,希望大家看完后能赶快学习起来。

  XML的未来
  现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可
  以定义文档可以包含的内容的选项。但还不只这些。

  考虑一个数据交换对其很重要的产业,如银行。银行使用所有
  权系统来跟踪内部的交易,但是如果他们在Web上使用一种通用
  的XML格式,那么他们必须描述交易信息给另一个机构或应用程
  序(如Quicken或MS Money)。当然,他们也可以在Web页面上
  表示数据。FYI:这个标记不存在。它叫做OFEX,开放金融交易
  格式(Open Financial Exchange)。

  在某种情况下,如果PC上的IE 4碰到一个SOFTPKG 标记符,一
  个函数会被启动以给用户更新已安装的软件的机会。如果你用
  的是Windows 98,你可能看见过这种情况,但是不知道它是一
  个XML应用程序。

  这里我们有三个XML应用程序,看起来与Andy Grove在70年代看
  到的加法机、打字机和铅笔不同。但是与最终出现在PC上的应
  用程序相似,XML的好处可以被一般性地描述为:“当你使用人
  类和机器可读的标记符描述你的数据时,会有好事发生的。”

  这些好事是什么呢?我不知道。但是我也不知道我的PC上的下
  一代程序将会是什么样。只要数据以这种方式标记,可以产生
  不同的应用。

  你开始考虑它会扩展到什么程度了吗?

  我们有很多XML的实际应用可以谈论,我会在不久的将来谈到它
  们的。既然我们都是网民,以后将是XSL(扩展样式语言 -
  eXtensible Style Language)了。

  顺便提一句,这个菜谱确实是我妈妈_的,而且很杰出。如果你
  用之,再加半杯碎椰子。

  
  我写这篇文章是因为我真诚地关心你对我的看法。我担心的是:如果你读过我写的XML简介然后准备开始写自己的XML文档。于是你开始寻找一个已经建立的DTD来表示你的信息。你找到一个,如下所示:

   

  !ATTLIST fn

  %attr.lang;

  value CDATA #FIXED "TEXT"

  !ENTITY % attr.img "

  img.type CDATA #REQUIRED

  img.data ENTITY #REQUIRED"

  
  马上你就会认为Jay一定是一个白痴。他没有说关于ATTLIST和ENTITY的任何事 - 不管它们是什么。

  那么让我们谈谈这件事,先有一点耐心。

  上面这些行可能不好看,但实际上没什么。它们被用在DTD中来定义XML文档中的属性和实体。了解HTML的人会对这很清楚。属性是带有HTML标记符的条目,用来更准确地描述标记符。在经常出现的img src="my.gif" height="20" width="20"中,有两个属性:height和width。你在后面会看到,在XML文档使用属性与之很相似。

  对实体也没有什么新东西。如果你用过&,你就已经掌握了最基本的东西。一个被&和分号包围起来的字符串用来表示另一个或一套字符。(这里有ISO实体的完整清单。)

  当然,XML中属性和实体还有其它功能。这就不可避免地要引入语法,虽然不太多。一旦知道了这些,就会不费劲地使用XML文档。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  简化菜谱

  如果你读过我写的XML简介,你会记得用简单的标记符表示的菜谱中的组成成分,如item2 cups flour/item。在写完那篇文章后,我在网上漫游,发现关于菜谱的另一个XML文档。其中的菜谱元素如下所示:

  
  ingredient quantity="2" units="cups"flour/ingredient

  这种方法有一个实际的好处:可以更容易控制数据。用第一种方法,item标记符用来容纳一堆不同的信息。如果我想提取组成成分的清单而不需要各成分的量,我就不会那么做。

  我可以用如下的结构取得相似的功能:

  
  itemflour

  quantity2/quantity

  unitscups/units

  
  这可以被处理,但是有两个问题:首先,item元素包含了混合的内容:文本和其它标记符。我很快就发现应该尽量避免这种结构。其次是标记符几乎没有独立的意义。很难想象只要units而不要实际的组成成分的情况。这些条目可以被简单描述,我宁愿把它们当作属性。

  首先要注意的是属性名,quantity和units只有被能够翻译它们的应用程序处理时才有意义。

  在被包含在有效的文档中之前,应告诉DTD来允许它。对于上面的ingredient元素,我们在DTD中只包含了以下代码:

   

  !ELEMENT ingredient #PCDATA

  !ATTLIST ingredient quantity CDATA #REQUIRED

  !ATTLIST ingredient units CDATA #REQUIRED

  
  第一行看起来很熟悉 - 在任何DTD中都能看到的标准元素定义。每个ATTLIST行都依次包含以下信息:

  
  !ATTLIST ingredient quantity CDATA #REQUIRED

  这是属性依附的元素。

  !ATTLIST ingredient quantity CDATA #REQUIRED

  这里定义属性名。

  !ATTLIST ingredient quantity CDATA #REQUIRED

  这里设置属性类型。CDATA代表字符数据。意味着处理器在属性内可以得到文本。

  !ATTLIST ingredient quantity CDATA #REQUIRED

  最后的部分定义属性的缺省值。可以使用实际的数值,如3。这样,XML中空白长度的属性值将为3。输入的值将覆盖缺省值。

  在上面的例子中我没有设置特定的数量,而是使用XML的关键字#REQUIRED。它告诉处理器次属性必须包含一个值。如果空白,文档将不被处理。

  缺省值有另外两个关键字。第一个是#FIXED - 如果属性值在整个文档中保持相同的值。假设我定义一个image的标记符属性,所有图像的大小都相同,比如说100*50像素,就可以在DTD中这样定义属性:

  
  !ATTLIST picture length CDATA #FIXED "100 px"

  !ATTLIST picture width CDATA #FIXED "50 px"

   

  另一个关键字是#IMPLIED,表示属性可以包含值或是空的。

  下面让我们看看属性类型。

  如果你决定自己写DTD,可能需要一本解释ATTLIST语句中所有组合的XML的书。但是如果借用DTD,或许只知道CDATA和另外三种属性就性了。

  第一个是ID。它要求属性的值在文档中不重复。使用过数据库的人都知道唯一标志符的必要性。DTD ATTLIST语句看起来象这样:

  !ATTLIST element_name attribute_name ID #REQUIRED

  很难想象没有#REQUIRED缺省值的ID属性类型。如果那样,任何重复的或空的ID都会迫使处理器返回一个错误。ID必须以字母或下划线开始并且不能包含任何空格。

  NMTOKEN类型也使用上面的命名规则。但是允许重复。它被用做传递数据给应用程序的保障。大多数程序语言,包括Java和JavaScript,在模块名中不能有空格。大多数情况下,最好保证属性符合它们的规则。

  最后是枚举类型,不需要特定的关键字。而是用"|"符号包含在括号内的值,例如:

  !ATTLIST sibling (brother | sister) #REQUIRED

  如果有有限的可能的属性值,可以用这种方式。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  不会认为今天的课程无趣吧,那么就接着读吧!
  

展开更多 50%)
分享

猜你喜欢

XML简易教程之三

Web开发
XML简易教程之三

XML简易教程之四

Web开发
XML简易教程之四

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

XML简易教程之二

Web开发
XML简易教程之二

XML简易教程之一

Web开发
XML简易教程之一

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

调色练习教程之三

PS PS教程
调色练习教程之三

PS鼠绘插画详解教程之三

PS鼠绘 PS PS效果 PS基础
PS鼠绘插画详解教程之三

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

关于IE缓存和AJAX的一点思考和疑问

关于IE缓存和AJAX的一点思考和疑问

XML教程:什么是XML及XML和HTML的区别

XML教程:什么是XML及XML和HTML的区别
下拉加载更多内容 ↓