xsd - XML validation No matching global declaration available for the validation root -
i have xml schema provided cisco ios xe router. when running command 'show ip access-list test | format' in router's cli, spits out xml fragment should validate against schema. not. instead error ": no matching global declaration available validation root"
schema provided cisco extracted running 'show xsd-format cli show ip access-lists' recommended here http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/xmlpi/command/xmlpi-cr-book/xmlpi-cr-p1.html#guid-33cb3bab-25b4-4fad-9741-c7afb483f701 shown below:
<?xml version="1.0" encoding="utf-8"?> <xsd:schema elementformdefault="qualified" attributeformdefault="unqualified" xmlns:xsd="http://www.w3.org/2001/xmlschema" > <xsd:complextype name="showaccesslists_def"> <xsd:sequence> <xsd:element ref="specversion" minoccurs="0" /> <xsd:choice minoccurs="0" maxoccurs="unbounded"> <xsd:element ref="info" /> <xsd:element name="access-list" minoccurs="0" maxoccurs="1"> <xsd:complextype> <xsd:sequence> <xsd:element name="type" minoccurs="0" maxoccurs="1" type="xsd:string" /> <xsd:element name="name" minoccurs="0" maxoccurs="1" type="xsd:string" /> <xsd:element name="denyfilter" minoccurs="0" maxoccurs="1"> <xsd:complextype> <xsd:sequence> <xsd:element name="filter" minoccurs="0" maxoccurs="1" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="permitfilter" minoccurs="0" maxoccurs="1"> <xsd:complextype> <xsd:sequence> <xsd:element name="filter" minoccurs="0" maxoccurs="1" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:choice> </xsd:sequence> </xsd:complextype> <xsd:element name="specversion" type="xsd:string" /> <xsd:element name="info" type="xsd:string" /> <xsd:element name="showaccesslists" type="showaccesslists_def" /> </xsd:schema>
the xml fragment router spits out is:
<?xml version="1.0" encoding="utf-8"?> <showaccesslists xmlns="odm://built-in//show_access-lists"> <access-list> <type>extended ip</type> <name>test</name> <permitfilter> <filter>10 permit ip any</filter> </permitfilter> <permitfilter> <filter>20 permit tcp 0.0.0.1 255.255.255.0 any</filter> </permitfilter> <permitfilter> <filter>40 permit tcp host 10.22.1.128 10.11.79.0 0.0.0.255 eq domain</filter> </permitfilter> <permitfilter> <filter>50 permit tcp host 10.22.1.128 eq domain 10.11.79.0 0.0.0.255</filter> </permitfilter> </access-list> </showaccesslists>
is schema broken? how validate?
answer depends on whether wish change xml or xsd...
change xml
according xsd, xml should not in namespace , should not have multiple permitfilter
elements.
therefore, if wish keep xsd constant, following updated xml validate against xsd.
<?xml version="1.0" encoding="utf-8"?> <showaccesslists> <access-list> <type>extended ip</type> <name>test</name> <permitfilter> <filter>10 permit ip any</filter> </permitfilter> </access-list> </showaccesslists>
change xsd
your xml in namespace , has multiple permitfilter
elements.
if wish keep xml constant, add targetnamespace
xsd, define namespace prefix namespace, , use prefix when referencing components in namespace. following updated xsd shows how , validate xml:
<?xml version="1.0" encoding="utf-8"?> <xsd:schema elementformdefault="qualified" attributeformdefault="unqualified" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:sal="odm://built-in//show_access-lists" targetnamespace="odm://built-in//show_access-lists"> <xsd:complextype name="showaccesslists_def"> <xsd:sequence> <xsd:element ref="sal:specversion" minoccurs="0" /> <xsd:choice minoccurs="0" maxoccurs="unbounded"> <xsd:element ref="sal:info" /> <xsd:element name="access-list" minoccurs="0" maxoccurs="1"> <xsd:complextype> <xsd:sequence> <xsd:element name="type" minoccurs="0" maxoccurs="1" type="xsd:string" /> <xsd:element name="name" minoccurs="0" maxoccurs="1" type="xsd:string" /> <xsd:element name="denyfilter" minoccurs="0" maxoccurs="1"> <xsd:complextype> <xsd:sequence> <xsd:element name="filter" minoccurs="0" maxoccurs="1" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="permitfilter" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="filter" minoccurs="0" maxoccurs="1" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:choice> </xsd:sequence> </xsd:complextype> <xsd:element name="specversion" type="xsd:string" /> <xsd:element name="info" type="xsd:string" /> <xsd:element name="showaccesslists" type="sal:showaccesslists_def" /> </xsd:schema>
Comments
Post a Comment