xml的标记、元素和属性 | 引用自IBM Developer Works入门教程 |
有三个通用术语用来描述 XML 文档的组成部分:标记、元素和属性。下面的样本文档说明了这些术语:
<address>
<name>
<title>Mrs.</title>
<first-name>
Mary
</first-name>
<last-name>
McGoon
</last-name>
</name>
<street>
1401 Main Street
</street>
<city state="NC">Anytown</city>
<postal-code>
34829
</postal-code>
</address>
- 标记是左尖括号(
<
)和右尖括号(>
)之间的文本。有开始标记(例如<name>
)和结束标记(例如</name>
) - 元素是开始标记、结束标记以及位于二者之间的所有内容。在上面的样本中,
<name>
元素包含三个子元素:<title>
、<first-name>
和<last-name>
。 - 属性是一个元素的开始标记中的名称-值对。在该示例中,
state
是<city>
元素的属性;
名称空间 |
XML 的能力来自它的灵活性,即您和我以及数百万其他人可以定义我们自己的标记来描述我们的数据。记得表示个人姓名和地址的样本 XML 文档吗?那个文档包括表示个人尊称的 <title>
元素,这是对元素名称非常合理的选择。如果您经营一家网上书店,您或许会创建一个表示书名的 <title>
元素。如果您经营一家网上抵押放款公司,您或许会创建表示一份财产名称的 <title>
元素。所有这些都是合理的选择,但它们都用相同的名称创建元素。如何分辨某个特定的 <title>
元素指的是人、书籍还是一份财产呢?可以使用名称空间。
要使用名称空间,您要定义一个名称空间前缀,然后将它映射至一个特殊字符串。下面介绍如何定义我们这三个 <title>
元素的名称空间前缀:
<?xml version="1.0"?>
<customer_summary
xmlns:addr="http://www.xyz.com/addresses/"
xmlns:books="http://www.zyx.com/books/"
xmlns:mortgage="http://www.yyz.com/title/"
>
... <addr:name><title>Mrs.</title> ... </addr:name> ...
... <books:title>Lord of the Rings</books:title> ...
... <mortgage:title>NC2948-388-1983</mortgage:title> ...
在该示例中,三个名称空间前缀是 addr
、books
和 mortgage
。请注意,为特定元素定义名称空间意味着该元素的所有子元素都属于同一名称空间。第一个 <title>
元素属于 addr
名称空间,因为其父元素 <addr:Name>
属于该名称空间。
最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。您可以定义 xmlns:addr="mike"
,那也是有效的。名称空间唯一的重要性在于其唯一性;这就是为什么大多数名称空间定义看起来象 URL 的原因。XML 解析器不会到 http://www.zyx.com/books/
去搜索 DTD 或模式,它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。