XML-Validierung Nicht übereinstimmenden globalen Deklaration zur Verfügung, die für die Validierung root
Ich habe ein XML-schema zur Verfügung gestellt von Cisco Systems für ein IOS-XE-router. Beim ausführen des Befehls "show ip access-list test | format" in der router cli, es spuckt ein XML-fragment, das sollte Validierung gegen das schema. Aber es geht nicht. Stattdessen bekomme ich die Fehlermeldung ": Keinen passenden global-Deklaration stehen für die Validierung root"
Schema zur Verfügung gestellt von Cisco extrahiert, durch ausführen von 'show xsd-format cli show ip access-lists", wie hier empfohlen 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 ist unten dargestellt:
<?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>
Das XML-fragment der router ausspuckt ist:
<?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 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>
Ist das schema gebrochen? Wie bekomme ich es überprüfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort hängt davon ab, ob Sie möchten, ändern Sie Ihre XML-oder des XSD -...
Ändern XML -
Entsprechend Ihrer XSD -, XML sollte sich nicht in einen namespace und sollten nicht mehrere
PermitFilter
Elemente.Deshalb, wenn Sie möchten, halten Sie die XSD-Konstante, die folgenden aktualisierten XML-Validierung erfolgreich gegen Ihre XSD.
Ändern XSD
Ihre XML-namespace und hat mehrere
PermitFilter
Elemente.Wenn Sie möchten, halten Sie die XML-Konstante, fügen Sie ein
targetNamespace
um Ihre XSD-Definition eines namespace-Präfix für diesen namespace, und verwenden Sie das Präfix der Referenzierung von Komponenten in diesem namespace. Die folgende aktualisierte XSD-zeigt genau an, wie Sie dies tun und erfolgreich validieren Sie Ihre XML: