XML Overview
Extensible Markup Language (XML) is a language for defining a set of markers, called tags, that are applied to a data set or document to describe the function of individual elements and codify the hierarchical relationships between them. XML tags look much like HTML tags, but XML is actually a metalanguage used to define tags that best suit the kind of data being marked.
For more details about XML, see A Technical Introduction to XML at http://www.xml.com/pub/a/98/10/guide0.html and the additional reference material at the http://www.xml.com site. The official XML specification from the World Wide Web Consortium (W3C), Extensible Markup Language (XML) 1.0, is available at http://www.w3.org/TR/REC-xml.
The following sections discuss general aspects of XML.
Tag Elements
XML has three types of tags: opening tags, closing tags, and empty tags. XML tag names are enclosed in angle brackets and are case sensitive. Items in an XML-compliant document or data set are always enclosed in paired opening and closing tags, and the tags must be properly nested. That is, you must close the tags in the same order in which you opened them. XML is stricter in this respect than HTML, which sometimes uses only opening tags. The following examples show paired opening and closing tags enclosing a value. The closing tags are indicated by the forward slash at the start of the tag name.
<interface-state>enabled</interface-state> <input-bytes>25378</input-bytes>
The term tag element or element refers to a three-part set: opening tag, contents, and closing tag. The content can be an alphanumeric character string as in the preceding examples, or can itself be a container tag element, which contains other tag elements. For simplicity, the term tag is often used interchangeably with tag element or element.
If an element is empty—has no contents—it can be represented either as paired opening and
closing tags with nothing between them, or as a single tag with a forward slash
after the tag name. For example, the notation
<snmp-trap-flag/>
is equivalent to
<snmp-trap-flag></snmp-trap-flag>
.
As the preceding examples show, angle brackets enclose the name of the element. This is an XML convention, and the brackets are a required part of the complete element name. They are not to be confused with the angle brackets used in the Juniper Networks documentation to indicate optional parts of Junos OS CLI command strings.
Junos XML elements follow the XML convention that the element name indicates the kind of
information enclosed by the tags. For example, the Junos XML
<interface-state>
element indicates that it contains a
description of the current status of an interface on the device, whereas the
<input-bytes>
element indicates that its contents specify
the number of bytes received.
When discussing XML elements in text, this documentation conventionally uses just the opening tag
to represent the complete element (opening tag, contents, and closing tag). For
example, the documentation refers to the <input-bytes>
tag to
indicate the entire
<input-bytes>number-of-bytes</input-bytes>
element.
Attributes
XML elements can contain associated properties in the form of attributes, which specify additional information about an element. Attributes appear in the opening tag of an element and consist of an attribute name and value pair. The attribute syntax consists of the attribute name followed by an equals sign and then the attribute value enclosed in quotation marks. An XML element can have multiple attributes. Multiple attributes are separated by spaces and can appear in any order.
In the following example, the configuration
element has two attributes, junos:changed-seconds
and junos:changed-localtime
.
<configuration junos:changed-seconds="1279908006" junos:changed-localtime="2010-07-23 11:00:06 PDT">
The value of the junos:changed-seconds
attribute is "1279908006", and the value of the junos:changed-localtime
attribute is "2010-07-23 11:00:06 PDT".
Namespaces
Namespaces allow an XML document to contain
the same tag, attribute, or function names for different purposes
and avoid name conflicts. For example, many namespaces may define
a print
function, and each may exhibit
a different functionality. To use the functionality defined in one
specific namespace, you must associate that function with the namespace
that defines the desired functionality.
To refer to a tag, attribute, or function from a defined namespace, you must first provide the namespace Uniform Resource Identifier (URI) in your style sheet declaration . You then qualify a tag, attribute, or function from the namespace with the URI. Since a URI is often lengthy, generally a shorter prefix is mapped to the URI.
In the following example the jcs
prefix is mapped to the namespace identified by
the URI http://xml.juniper.net/junos/commit-scripts/1.0
, which defines
extension functions used in commit, op, event, and SNMP scripts. The jcs
prefix
is then prepended to the output
function, which is defined in that
namespace.
<?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>
During processing, the prefix is expanded into the URI reference.
Although there may be multiple namespaces that define an output
element or function, the use of jcs:output
explicitly defines which output
function is used. You can choose any prefix to refer to the contents
in a namespace, but there must be an existing declaration in the XML
document that binds the prefix to the associated URI.
Document Type Definition
An XML-tagged document or data set is structured because a set of rules specifies the ordering and interrelationships of the items in it. A file called a document type definition, or DTD, defines these rules. The rules define the contexts in which each tagged item can—and in some cases must—occur. A DTD:
-
Lists every element that can appear in the document or data set
-
Defines the parent-child relationships between the tags
-
Specifies other tag characteristics
The same DTD can apply to many XML documents or data sets.