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 Hypertext Markup Language (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 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 a tag 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 tag element. This is an XML convention, and the brackets are a required part of the complete tag 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 tag elements obey the XML convention that the tag
element name indicates the kind of information enclosed by the tags.
For example, the name of the Junos XML <interface-state>
tag element indicates that it contains a description of the current
status of an interface on the device, whereas the name of the<input-bytes>
tag element indicates that its contents
specify the number of bytes received.
When discussing tag elements in text, this documentation conventionally
uses just the opening tag to represent the complete tag 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>
tag 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. The rules define the contexts in which each tagged item can—and in some cases must—occur. A file called a document type definition, or DTD, lists every tag element that can appear in the document or data set, defines the parent-child relationships between the tags, and specifies other tag characteristics. The same DTD can apply to many XML documents or data sets.