xml

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;

&lt;
&gt;
&amp;
&quot;
&apos;

上面斗鱼预定义的含义:小于,大于,&,引号,省略号等. 还可以在DTD中定义其他的实体引用.

CADATA部分

<![CADATA[]]来限定, 它是字符数据的特殊形式. 可以用它来囊括那些有<,>,&之类字符的字符串,而不会将它们解释为标记.特别注意CDATA部分不能包含字符串]]>.

处理指令

是那些专门在处理XML文档的应用程序中使用的指令, 用<??>来限定其界限. 如:

<?xml-stylesheet href="mystyle.css" type="text/css"?>
注释

<!---->限定其范围. 如:

<!-- This is a comment -->

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注