Request an XML Schema for the Configuration Hierarchy Using the Junos XML Protocol
The schema represents all configuration elements
available in the version of the Junos OS that is running on a device.
(To determine the Junos OS version, emit the <get-software-information>
operational request tag, which is documented in the Junos XML API Operational Developer Reference.)
Client applications can use the schema to validate the configuration
on a device, or simply to learn which configuration statements are
available in the version of the Junos OS running on the device. The
schema does not indicate which elements are actually configured, or
even that an element can be configured on that type of device (some
configuration statements are available only on certain device types).
To request the set of currently configured elements and their settings,
emit the <get-configuration>
tag element
instead, as described in Requesting Configuration
Data Using the Junos XML Protocol.
Explaining the structure and notational conventions of the XML Schema language is beyond the scope of this document. For information, see XML Schema Part 0: Primer, available from the World Wide Web Consortium (W3C) at http://www.w3.org/TR/xmlschema-0/ . The primer provides a basic introduction and lists the formal specifications where you can find detailed information.
For further information, see the following sections:
Requesting an XML Schema for the Configuration Hierarchy
In a Junos XML protocol session with a device running
Junos OS, to request an XML Schema-language representation of the
entire configuration hierarchy, a client application emits the Junos
XML <get-xnm-information>
tag element
and its <type>
, and <namespace>
child tag elements with the indicated values in an <rpc>
tag element:
<rpc> <get-xnm-information> <type>xml-schema</type> <namespace>junos-configuration</namespace> </get-xnm-information> </rpc>
The Junos XML protocol server encloses the XML schema
in <rpc-reply>
and <xsd:schema>
tags:
<rpc-reply xmlns:junos="URL"> <xsd:schema> <!-- tag elements for the Junos schema --> </xsd:schema> </rpc-reply>
Creating the junos.xsd File
Most of the tag elements defined in the schema returned in the <xsd:schema>
tag belong to the default namespace
for Junos OS configuration elements. However, at least one tag, <junos:comment>
, belongs to a different namespace: http://xml.juniper.net/junos/Junos-version/junos
. By XML convention, a schema describes only one namespace, so schema
validators need to import information about any additional namespaces
before they can process the schema.
Starting in Junos OS Release 6.4 , the <xsd:import>
tag element is enclosed in the <xsd:schema>
tag element and references the file junos.xsd, which contains the required information about the junos
namespace. For example, the following <xsd:import>
tag element specifies the file for
Junos OS Release 20.4R1 (and appears on two lines for legibility
only):
<xsd:import schemaLocation="junos.xsd" \ namespace="http://xml.juniper.net/junos/20.4R1/junos"/>
To enable the schema validator to interpret the <xsd:import>
tag, you must manually create a file
called junos.xsd in the directory
where you place the .xsd file that
contains the complete Junos configuration schema. Include the following
text in the file. Do not use line breaks in the list of attributes
in the opening <xsd:schema>
tag. Line
breaks appear in the following example for legibility only. For the Junos-version variable, substitute the release number
of the Junos OS running on the device (for example, 20.4R1 for
the first release of Junos OS 20.4).
<?xml version="1.0" encoding="us-ascii"?> <xsd:schema elementFormDefault="qualified" \ attributeFormDefault="unqualified" \ xmlns:xsd="http://www.w3.org/2001/XMLSchema" \ targetNamespace="http://xml.juniper.net/junos/Junos-version/junos"> <xsd:element name="comment" type="xsd:string"/> </xsd:schema>
Schema validators might not be able to process the schema if they cannot locate or open the junos.xsd file.
Whenever you change the version of Junos OS running on the device, remember to update the Junos-version variable in the junos.xsd file to match.
Example: Requesting an XML Schema
The following examples show how to request the Junos OS configuration
schema. In the Junos XML protocol server’s response, the first <xsd:element>
statement defines the <undocumented>
Junos XML tag element, which can
be enclosed in most other container tag elements defined in the schema
(container tag elements are defined as <xsd:complexType>
).
The attributes in the opening tags of the Junos XML protocol server’s response appear on multiple lines for legibility only. The Junos XML protocol server does not insert newline characters within tags or tag elements. Also, in actual output the JUNOS-version variable is replaced by a value such as 20.4R1 for the initial version of Junos OS Release 20.4.
Another <xsd:element>
statement
near the beginning of the schema defines the Junos XML <configuration>
tag element. It encloses the <xsd:element>
statement that defines the <system>
tag element, which corresponds to the [edit system]
hierarchy level. The statements corresponding
to other hierarchy levels are omitted for brevity.