Contents
XML学习
XML是一种标记语言, 可以用来描述结构化的内容.
XML是一种标记语言
properties文件,内容是key=value的形式, 常用来描述程序配置等内容. 是一种平面的结构,如果要分层,常在key上做区分
title.fontname=Helvetica
title.fontsize=16
要求键唯一, 如果要存放一个值序列, 需要变通.
menu.item.1=Times Roman
menu.item.2=Helvetica
menu.item.3=Goudy Old Style
xml格式解决了这种问题, 它能表示层次结构. 描述程序配置的xml文件可能会像这样:
<config>
<entry id="title">
<font>
<name>Helvetica</name>
<size>36</size>
</font>
</entry>
<entry id="body">
<font>
<name>Times Roman</name>
<size>12</size>
</font>
</entry>
<entry id="background">
<color>
<red>0</red>
<green>50</green>
<blue>100</blue>
</color>
</entry>
</config>
XML文件的格式与HTML非常相似. 事实上, 两者都来源于古老的标准通用标记语言(STANDARD Generalized Markup Language, SGML), 都算是其衍生语言. SGML比较复杂, XML设计成用于因特网的SGML的简化版本.
XML与HTML的区别:
- 与HTML不同, XML是大小写敏感的.
- 在HTML中,如果上下文可以分清那里是段落或者列表项的结尾, 那结束标签就可以省略(如
</p>, </li>
等标签), 而在XML中结束标签绝不能省略 - 在XML中,只有单个标签而没有相应的结束标签的元素,必须以正斜杠“/”结尾(如
<img src="pcoffecup.png"/>
) - 在XML中,属性必须用引号括起来…而在HTML中引号可有可无(如
<applet code="MyApplet.class" width=300 height=300>
对HTML是合法的,对XML来说不合法.XML中必须使用引号,如width=“300”) - 在HTML中,属性可以没有值. 而在XML中,属性必须要有值(如
<input name="language" value="Java" checked>
在HTML中是合法的, 在XML中,徐u要有属性值, 如checked=“true”或checked=“checked”)
XML文档结构
以下是一个例子
<?xml version="1.0"?>
<!DOCTYPE config ...>
<config>
<entry id="title">
<font>
<name>Helvetica</name>
<size>36</size>
</font>
</entry>
...</config>
文档头
其中<?xml version="1.0"?>
是文档头. 可选, 但是建议加上
文档类型定义
其中<!DOCTYPE config ...>
是文档类型定义(Document Type Definition, DTD), 比如<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app\_2\_3.dtd">
元素
根元素
XML必须包含根元素,根元素包含其他元素. 上面例子中<!DOCTYPE config ...>
指明了根元素config, 后面正文也是以<config>
为根配置的.
元素与文本
XML元素可以有子元素, 文本元素, 或者两者皆有. 两者皆有称为混合式内容, 如:
<font>
Helvetica<size>16</size>
</font>
最好避免出现混合式内容.
元素和文本时XML文档的主要支撑要素.
元素属性
XML元素可以有属性.
<font>
<name>Helvetica</name>
<size>36</size>
</font>
或许描述为使用属性的方式更简单
<font name="Helvetica" size="16"/>
但是使用属性的灵活性会差很多, 也不方便进一步扩展. 若要为size添加单位, 若size为属性, 则只能把单位也加入到属性值当中去.
<font name="Helvetica" size="16 pt"/>
而这正是XML被设计用来避免的那种麻烦.
有时候, 你会发现有些内容设计为属性或者元素都可以. 一条常用的经验法则是, 属性值只应该用来修改值的解释,而不是用来指定值. 如你发现自己陷入了争论, 那就直接用元素, 舍弃使用属性吧.
其他标记
元素和文本时XML文档的主要支撑要素. 可能还会遇到一些其他标记
字符引用
&#十进制值
&#x十六进制值
实体引用
形式是&name;
<
>
&
"
'
上面斗鱼预定义的含义:小于,大于,&,引号,省略号等. 还可以在DTD中定义其他的实体引用.
CADATA部分
用<![CADATA[]]
来限定, 它是字符数据的特殊形式. 可以用它来囊括那些有<,>,&
之类字符的字符串,而不会将它们解释为标记.特别注意CDATA部分不能包含字符串]]>
.
处理指令
是那些专门在处理XML文档的应用程序中使用的指令, 用<?
和?>
来限定其界限. 如:
<?xml-stylesheet href="mystyle.css" type="text/css"?>
注释
用<!--
和-->
限定其范围. 如:
<!-- This is a comment -->
发表回复