XML基础 XML的基本语法相当简单。如果您有HTML的相关经验,那您实际上对XML也有所了解。象HTML一样,XML将信息表示为使用标签添加结构的文本。标签以夹在小于号(<)和大于号(>)之间的名字开始。和HTML不同的是,XML的标签必须匹配。换言之,开始标签之后必须有相应的结束标签。结束标签很象开始标签,但它以小于号和斜杠(</)打头。开始标签、结束标签以及开始标签和结束标签之间的所有内容合起来被称为XML文档的元素(element)。元素中可以包含其它元素,但它们必须正确嵌套,所有元素内的开始标签必须在元素本身结束前用结束标签结束。元素可以包含纯文本和文本和元素的混合物。注释放置于标记“<!—”和“ -->”之间。下面是几个例子。
<!-- Simple --> <Sentence>This is text.</Sentence> <!-- Element --> <Paragraph><Sentence>This is text.</Sentence></Paragraph>
<!-- Mixed --> <Paragraph> <Sentence>This <verb>is</verb> text.</Sentence> </Paragraph> <!-- Empty -->
<PageBreak></PageBreak> |
空白标签可以用一个以斜杠和大于号结束的单个标签更紧凑的表示(/>),如下所示:
<PageBreak/>
属性 XML元素可以包含属性,也就是开始标签中提供的名-值对。如:
<document.nbsptype="LEGAL" ID="42">...</document>
<Image name="truffle.jpg"/> |
属性值必须包含在引号中,使用双引号(”)或单引号(’)都可以。单引号在值本身含有双引号时尤其有用。
属性用于和元素数据相关的简单、非结构性的性质或标识。总是可以把属性组织为子元素,所以没有必须使用属性的真正要求。但使用属性通常使XML文档更赋逻辑,更易阅读。在上面的小例子片断中,document.素的属性type和 ID代表文档的元数据。我们可能期望代表document.
Java类拥有文档类型(如LEGAL)的静态标识。对Image元素而言,属性是只包含文件名的更为简洁的形式。通常属性没有重要的内部结构,是不可再分的;而子元素却可以任意复杂。
XML文档 XML文档以下列文档头开头并且有一个根元素。
<?xml version="1.0" encoding="UTF-8"?>
<Mydocument>
</Mydocument> |
文件头指明了XML的版本和文件的编码特征。可以把元素层次理解为一棵树的形式,根元素也就是元素层次的顶层元素。如果您漏掉这样的文件头或者XML文本中没有单个根元素,那样的东西只能称为XML片断。
编码 XML文档的默认编码方式是UTF-8,一种ASCII使用者易于使用的8位Unicode编码方式。但XML文档可以通过指定XML文件头的encoding属性来指定文档编码。
XML文档中有些字符是需要保留使用的,比如表示元素标签的字符“<”和“>”。如果您需要在XML文档内容中包含这些字符,则必须对它们进行转码。XML提供了称为“实体(entities)”的转义机制以对特殊结构进行转码。XML中有五种预定义的实体。如表23-1所示。
表23-1 XML实体
Entity Encodes
& & (ampersand)
< < (less than)
> > (greater than)
" " (quotation mark)
' ' (apostrophe) |
也可以使用被称作字符数据(CDATA)的特殊的不解析文本段来进行编码。一个CDATA块以<![CDATA[开始,以]]>结束,如下所示:
| [code]<![CDATA[ Learning Java, O'Reilly & Associates ]]>[/code] |
CDATA块看起来有点象注释,但CDATA块中的数据确实是XML文档的一部分,只不过对解析器来说是不透明的。
