2017-10-05 2 views
0

Ich bin neu in XSD und kann nicht herausfinden, warum mein XSD nicht validiert. Ich erhalte folgende Fehler:XSD nicht gegen XML validieren

s4s-elt-invalid-content.1: Der Inhalt von 'parametersInfo' ist ungültig. Element 'complexType' ist ungültig, falsch platziert oder tritt zu oft auf.

cvc-complex-type.2.4.d: Ungültiger Inhalt wurde gefunden, beginnend mit dem Element 'exception'. Zu diesem Zeitpunkt wird kein untergeordnetes Element erwartet.

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<service id="IServiceREST"> 
      <inherit> 
       <parent>Remote</parent> 
      </inherit> 
      <package>com.module</package> 
      <include>java.rmi.Remote</include> 
      <include>java.net.*</include> 
      <include>java.io.*</include> 
      <abstract_method id="getContent"> 
       <visibility>public</visibility> 
       <parameters> 
        <argument type="URL">url</argument> 
        <argument type="int">timeout</argument> 
       </parameters> 
       <throw> 
        <exception>MalformedURLException</exception> 
        <exception>IOException</exception> 
       </throw> 
       <return>String</return> 
      </abstract_method> 
      <abstract_method id="deleteUser"> 
       <visibility>public</visibility> 
       <parameters> 
        <argument type="String">username</argument> 
       </parameters> 
       <return>void</return> 
      </abstract_method> 
</service> 

XSD:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="serviceInfo"> 
     <xs:sequence> 
      <xs:element name="inherit" type="inheritInfo" minOccurs="1" maxOccurs="unbounded"/> 
      <xs:element name="package" type="xs:string" /> 
      <xs:element name="include" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> 
      <xs:element name="abstract_method" type="abstract_methodInfo" minOccurs="0" maxOccurs="unbounded" /> 
     </xs:sequence> 
     <xs:attribute type="xs:string" name="id" /> 
    </xs:complexType> 

    <xs:complexType name="inheritInfo"> 
     <xs:sequence> 
      <xs:element type="xs:string" name="parent" /> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="abstract_methodInfo"> 
     <xs:sequence> 
      <xs:element type="xs:string" name="visibility" minOccurs="0" maxOccurs="1"/> 
      <xs:element type="parametersInfo" name="parameters" />  
      <xs:element type="throwInfo" name="throw" minOccurs="0" maxOccurs="unbounded"/> 
      <xs:element type="xs:string" name="return" minOccurs="1" /> 
     </xs:sequence> 
     <xs:attribute type="xs:string" name="id" /> 
    </xs:complexType> 


    <xs:complexType name="throwInfo"> 
     <xs:sequence> 
      <xs:element type="xs:string" name ="exception" /> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="parametersInfo"> 
      <xs:complexType type="xs:string" name="argument"> 
      <xs:sequence> 
       <xs:element name="URL" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
       <xs:element name="timeout" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/> 
      </xs:sequence> 
      </xs:complexType> 
    </xs:complexType> 
    <xs:element name="service" type="serviceInfo"/> 
</xs:schema>  

bin ich etwas fehlt? Ich wollte es einfacher machen, indem komplexe Typen mit und verweist sie es zu brechen ...

Antwort

0

Ihre Erklärung vom Typ parametersInfo liest

<xs:complexType name="parametersInfo"> 
    <xs:complexType type="xs:string" name="argument"> 
    <xs:sequence> 
     <xs:element name="URL" type="xs:string" 
        minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="timeout" type="xs:integer" 
        minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:complexType> 

Das XSD complexType Element nicht als Kind von complexType erscheinen kann. Ich weiß nicht, was du versucht hast, aber das ist nicht der richtige Weg.

Möglicherweise müssen Sie ein oder zwei Lernprogramme für XSD ausführen.

Verwandte Themen