XML 概述
可扩展标记语言(XML)是一种用于定义标记集(称为标记)的语言,应用于数据集或文档,用于描述各个元素的功能并编纂它们之间的层次结构关系。XML 标记看起来就像超文本标记语言 (HTML) 标记,但实际上 XML 是一种金属体标记,用于定义最适合所标记数据的标记。
有关 XML 的详细信息,请参阅 http://www.xml.com/pub/a/98/10/guide0.html 上的XML 技术 http://www.xml.com材料。来自万维网联盟 (W3C) 的官方 XML 规范(可扩展标记语言(XML) 1.0可在 http://www.w3.org/TR/REC-xml上获得。
以下部分讨论 XML 的常规方面:
标记元素
XML 有三种类型的标记:开始标记、结束标记和空标记。XML 标记名称括在尖括号中,区分大小写。符合 XML 的文档或数据集中的项目始终括在成对的开始标记和结束标记中,并且标记必须正确嵌套。也就是说,您必须按打开标记的顺序关闭标记。与 HTML(有时仅使用开放标记)一样,XML 在这方面更为严格。以下示例显示包含一个值的成对开始标记和结束标记。结束标记通过标记名称开头的正斜杠表示。
<interface-state>enabled</interface-state> <input-bytes>25378</input-bytes>
术语标记元素是指由三个方面决定的内容:开放标记、内容和结束标记。内容可以是前面示例中的字母数字字符串,也可以本身是包含其他标记元素的容器标记元素。 为简单起见,术语标记通常与标记元素或元素互换使用。
如果标记元素为空(没有内容),则它可表示为已成对的开始标记和结束标记,两者之间无内容,也可表示为标记名称后具有前斜杠的单一标记。例如,表示 <snmp-trap-flag/>
法等效于 <snmp-trap-flag></snmp-trap-flag>
。
如前面的示例所示,尖括号将标记元素的名称括起来。这是一种 XML 约定,而括号是完整标记元素名称的必需部分。它们不能与文档中使用的尖括号混淆,瞻博网络命令字符串的可选Junos OS CLI部分。
Junos XML 标记元素中的 XML 约定中标记元素名称指示标记随附的信息类型。例如,Junos XML 标记元素的名称表示其包含设备上某个接口的当前状态说明,而标记元素的名称表示其内容指定收到的字节 <interface-state>
<input-bytes>
数。
讨论文本中的标记元素时,本文档通常仅使用开放标记来表示完整的标记元素(开放标记、内容和结束标记)。例如,文档参考标记 <input-bytes>
来指示整个 <input-bytes>number-of-bytes</input-bytes>
标记元素。
属性
XML 元素可以包含以属性形式表示的关联 属性,用于指定有关某个元素的附加信息。属性出现在元素的开始标记中,由一个属性名称和值对组成。属性语法包括属性名称,然后是等值符号,再包含引号的属性值。一个 XML 元素可以有多个属性。多个属性被空格分隔,可以按任意顺序显示。
下例中, configuration
元素有两个属性, junos:changed-seconds
和 junos:changed-localtime
。
<configuration junos:changed-seconds="1279908006" junos:changed-localtime="2010-07-23 11:00:06 PDT">
属性的值为 junos:changed-seconds
"1279908006",并且属性值为 junos:changed-localtime
"2010-07-23 11:00:06 PDT"。
命名 空间
命名空间 允许 XML 文档出于不同目的包含相同的标记、属性或功能名称,并避免名称冲突。例如,许多命名空间可以定义一项 print
功能,而每个名称空间可能都提供不同的功能。要使用在一个特定命名空间中定义的功能,必须将该功能与定义所需功能的名称空间相关联。
要参考定义命名空间中的标记、属性或功能,您必须先在样式表声明提供命名空间统一资源标识符 (URI)。然后,通过 URI 从命名空间对标记、属性或功能进行限定。由于 URI 长度通常较短,因此通常将更短的前缀映射到 URI。
在下面的示例中,前缀映射到 URI http://xml.juniper.net/junos/commit-scripts/1.0 标识的名称空间,该命名空间定义了提交、操作、事件和 jcs
SNMP 脚本中使用的扩展功能。然后 jcs
,前缀会附加到函数中, output
该功能将在命名空间中定义。
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> ... <xsl:value-of select="jcs:output('The VPN is up.')"/> </xsl: stylesheet>
在处理过程中,前缀将扩展为 URI 参考。虽然可能有多个名称空间定义了一个元素或功能,但使用 output
jcs:output
明确定义使用了 output
哪个功能。您可以选择任何前缀来指量命名空间中的内容,但 XML 文档中必须有一个现有声明,用于将前缀绑定至关联的 URI。
文档类型定义
XML 标记的文档或数据集是结构化的,因为一组规则指定其中物品的排序和相互关系。这些规则定义了每个标记项目可以在其中发生的环境,在某些情况下必须发生。称为文档类型定义 (DTD)的文件将列出可出现在文档或数据集中每个标记元素,定义标记之间的父子关系,并指定其他标记特征。相同的 DTD 可应用于许多 XML 文档或数据集。