Request an XML Schema for the Configuration Hierarchy Using NETCONF
The schema represents all configuration elements available in the Junos version that is running
on a device. (To determine the version, emit the
<get-software-information>
remote procedure call (RPC).
Client applications can use the schema to validate the configuration on a device or simply to
learn which configuration statements are available in the Junos version 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 only the currently configured
elements, emit the <get-config>
tag element instead, as described
in Request Configuration Data Using NETCONF.
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 NETCONF 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 NETCONF server encloses the XML schema in <rpc-reply>
and <xsd:schema>
tag elements:
<rpc-reply xmlns="URN" xmlns:junos="URL"> <xsd:schema> <!-- tag elements for the Junos XML 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 with 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 element, you must manually create
a file called junos.xsd in the directory
where you place the .xsd file that
contains the complete Junos OS 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 NETCONF 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 NETCONF server’s response appear on multiple lines for legibility only. The NETCONF 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.