XML简易教程之一

在Intel的早期,Andy Grove遇到一个雇员 - 他
建议公司在芯片的基础上开发个人计算机。Andy
Grove疑问道“个人计算机能做什么呢?”,这个
雇员举例说,它可以存储处方。Grove考虑到整个
研究、开发和市场费用要数百万美圆,最终决定
以为红绿灯提供芯片作为开始。
每个人都是事后诸葛亮。Andy Grove,不管你怎样看他,被普遍
认为是一个非常聪明的人 - 能够做出发展公司的重大决定。但
是在七十年代,不可能强求他预见到个人计算机的潜力。如果
他当时见过Excel、Quark、Photoshop、Oracle或者网络,他就会
理解把强大的处理器放在桌面上会允许软件做任何事。

但是如果没亲眼见过,谁能想到呢。在用打字机、加法机和铅
笔作为计算的工具的时代,你能解释PC和它的用途吗?

这个例子可以用在解释扩展标记语言(XML - eXtensible Markup
Language)上。现在还没有和它相似的东西,所以很难做出比
较。你可能听说过XML是HTML的替代物或XML与HTML相似,可以
定义自己的标记符。这两种说法都不全对,就象说PC是存储处
方的机器一样。

我妈妈是一个训练有素的厨师,如果我用她的配方,我的家庭
会省下很大一笔钱。

我以简单的开始。因此我打开文本编辑器,开始写一些HTML
代码:

<HTML>

<H1 ALIGN=CENTER>Recipe</H1>

<FONT FACE size=2>Chocolate Chip Bars</FONT>

在写完上面几行后,我想接着写我妈妈 的精妙菜谱。那么怎么
做呢?一份老式的Web页面。接下来呢?把我的页面的URL送给
对这个菜谱感兴趣的人们,然后让他们剥掉其中的<P>和<FONT
FACE size=2>吗?这得花些时间,我想得到实际的内容。

看看下面可能的XML标记:

<author>Carol Schmidt</author>

<recipe_name>Chocolate Chip Bars</recipe_name>

在XML中,标记符可以最好地描述内容。以这种方式,我可以肯
定任何查找出现在<recipe_name>标记符中的“Chocolate Chip”
的人都可以得到妈妈_的菜谱。进一步说,如果我的信息被象这
样的标记符(有意义的标记符)包围 - 我可以告诉其它程序如
何使用它们。我还可以通过编码把<recipe_name>标记符中的内
容放入数据库的某个域中,然后把它输出到一本书的硬拷贝中。
还有,我可以用一个支持XML的字处理器使网页的出版轻而易举。

这就是XML的本质:使标记对人和机器都可读。但是在实现这个
目标之前,应该理解用XML编码所涉及的东西。

文档要组织良好
一个XML文件必须满足两点:组织良好和有效。我们以一个组
织良好的文档开始。

我发明了一些描述菜谱的标记符,并把它们组织成一种合理
和可读的方式。它可能不是最好的标记,但是在下面的例子
中工作得很好。

<?xml version="1.0"?>
<list>
<recipe>
<author>Carol Schmidt</author>
<recipe_name>Chocolate Chip Bars</recipe_name>
<meal>Dinner
<course>Dessert</course>
</meal>
<ingredients>
<item>2/3 C butter</item>
<item>2 C brown sugar</item>
<item>1 tsp vanilla</item>
<item>1 3/4 C unsifted all-purpose flour</item>
<item>1 1/2 tsp baking powder</item>
<item>1/2 tsp salt</item>
<item>3 eggs</item>
<item>1/2 C chopped nuts</item>
<item>2 cups (12-oz pkg.) semi-sweet choc. chips</item>
</ingredients>
<directions>
Preheat oven to 350 degrees. Melt butter;
combine with brown sugar and vanilla in large mixing bowl.
Set aside to cool. Combine flour, baking powder, and salt;
set aside.Add eggs to cooled sugar mixture; beat well.
Stir in reserved dryingredients, nuts, and chips.
Spread in greased 13-by-9-inch pan.
Bake for 25 to 30 minutes until goldenbrown;
cool. Cut into squares.
</directions>
</recipe>
</list>
这就是一份可以接受的XML文档 - 告诉你XML是什么:把数据
以一种有实际意义的方式进行组织。

虽然这些标记符看起来有点象HTML,但是有很大的区别:文件
中没有指出数据如何表示的信息。版面指令,当我们准备好时,
就会从其它地方出现。这和把地址簿的信息放在数据库的字段
和记录中而不是放在字处理器产生的清单中的道理一样。数据
库可以让你把地址簿中的信息合成到标签、信封、信件或其它
任何想要的载体上面。最后,就是把这份菜谱文件合成到一种
表现语言中,如HTML或CSS。

前面说过,XML文档必须组织良好。这意味着文件必须满足以下
三项基本规则:

文档以XML定义<?xml version="1.0"?>开始。
有一个包含所有其它内容的根元素,如上面例子中的<list>
和</list>标记符。
所有元素必须合理地嵌套,不允许交叉嵌套。
上面的例子中,几个<item>元素被合理地嵌套<ingredients>和
</ingredients>标记符中。但是下面的标记却有严重的问题:

<ingredients><item></ingredients>chocolate chips</item>

于是"chocolate chips"没有被包含在ingredients清单中。因此
这份文档就没有组织好。这在HTML中可能不算什么,因为浏览器
已经被设计成可以处理这种问题。

但是在XML中却是致命的 - 应用程序将拒绝处理没有组织好的
文件。

我们现在知道组织良好非常重要,但是还不止这些

(0)

相关推荐

  • XML简易教程之三

    XML的未来 现在你已经知道XML.确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项.但还不只这些. 考虑一个数据交换对其很重要的产业,如银行.银行使用所有权系统来跟踪内部的交易,但是如果他们在Web上使用一种通用的XML格式,那么他们必须描述交易信息给另一个机构或应用程序(如Quicken或MS Money).当然,他们也可以在Web页面上表示数据.FYI:这个标记不存在.它叫做OFEX,开放金融交易格式(Open Financial Exchange). 在某种情况下,如

  • XML简易教程之四

    实体 有五种预定义的XML实体,HTML编码者应该熟悉.XML文档中的字符&.<.>."和'被分别表示为&.@lt;.>."和&apos;. XML很大程度上扩展了实体的功能 - 允许在DTD中定义实体以便在文档的其余部分使用.例如,我在XML文档中需要频繁使用词组"Wired Digital",可以在DTD中这样表示: <!ENTITY wd "Wired Digital"> 这样当我使用这

  • XML简易教程之一

    在Intel的早期,Andy Grove遇到一个雇员 - 他建议公司在芯片的基础上开发个人计算机.AndyGrove疑问道"个人计算机能做什么呢?",这个雇员举例说,它可以存储处方.Grove考虑到整个研究.开发和市场费用要数百万美圆,最终决定以为红绿灯提供芯片作为开始. 每个人都是事后诸葛亮.Andy Grove,不管你怎样看他,被普遍认为是一个非常聪明的人 - 能够做出发展公司的重大决定.但是在七十年代,不可能强求他预见到个人计算机的潜力.如果他当时见过Excel.Quark.Ph

  • Java反射简易教程

    关于Java反射,我们需要弄懂以下几个问题: 反射是什么?反射有什么用?怎么用反射? 下面我们来一一进行讲解: 一.反射是什么? Reflection的意思是"反射.映象.倒影",用在Java身上指的是我们可以于运行时加载.探知.使用编译期间完全未知的classes.换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体.或对其fields设值.或唤起其methods. Java反射机制是在运行状态中,对于任意一个

  • Mysql 5.7.20压缩版下载和安装简易教程

    一.下载地址: http://dev.mysql.com/downloads/mysql/ http://www.jb51.net/softs/451120.html 1.进入官网下载,显示的应该是最新版本,选择第二个(mysql5.7.20-winx64.zip) 2.下载完成后,直接解压到自定义目录,解压目录就是安装目录 二.配置环境变量 1.新增环境变量,例: 变量名:MYSQL_HOME 变量值:D:\mysql\mysql5.7.20-winx64 2.修改环境变量PATH 在PATH

  • ubuntu18.04安装搜狗拼音的简易教程

    1.下载好搜狗安装包http://pinyin.sogou.com/linux/ ,注意位数! 2.打开终端安装依赖 sudo apt install libfcitx-qt0 3.提取下载好的搜狗安装包到临时文件夹 unpack cd /下载包所在目录路径/ dpkg-deb -R sogoupinyin_2.2.0.0102_amd64.deb unpack/ 4.修改搜狗安装包文件 编辑 unpack/DEBIAN/control 把 Depends: 那一行里面的   fcitx-lib

  • java 中maven pom.xml文件教程详解

    maven pom.xml文件教程详解,具体内容如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x

  • Jdk1.8的安装简易教程(Linux和windows)

    jdk (SunMicrosystems针对Java开发员的产品) JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具. 本文重点给大家介绍Jdk1.8的安装简易教程,具体内容如下所示: 1.1 JDK1.8下载地址 JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow

  • Linux调试工具GDB使用简易教程

    本文所述主要是Linux调试工具GDB的使用教程,具体如下. 声明:本博客内容是由本人经过实验楼教程整理得来. GDB的相关概念 GDB, 是 The GNU Project Debugger 的缩写, 是 Linux 下功能全面的调试工具.GDB 支持断点.单步执行.打印变量.观察变量.查看寄存器.查看堆栈等调试手段.在 Linux 环境软件开发中,GDB 是主要的调试工具,用来调试 C 和 C++ 程序. GDB的相关操作 下面给出一个具有buging.c的程序: [yqtao@localh

  • Python Matplotlib简易教程(小白教程)

    简单演示 import matplotlib.pyplot as plt import numpy as np # 从[-1,1]中等距去50个数作为x的取值 x = np.linspace(-1, 1, 50) print(x) y = 2*x + 1 # 第一个是横坐标的值,第二个是纵坐标的值 plt.plot(x, y) # 必要方法,用于将设置好的figure对象显示出来 plt.show() import matplotlib.pyplot as plt import numpy as

随机推荐