2010-12-10 3 views
12

In am stanzaerror.xsd von http://xmpp.org/schemas/ in Visual Studio 2010 suchen, ich bin eine Warnung auf der folgenden Zeile bekommen ...Warum "Namespace 'http://www.w3.org/XML/1998/namespace' nicht verfügbar ist, um in diesem Schema referenziert zu werden."?

<xs:attribute ref='xml:lang' use='optional'/> 

Warnung:

Namespace 'http://www.w3.org/XML/1998/namespace' nicht verfügbar, um in diesem Schema referenziert zu werden.

Dies scheint wie eine sehr einfache XML-Warnung - irgendwelche Ideen?

<?xml version='1.0' encoding='UTF-8'?>  
<xs:schema 
    xmlns:xs='http://www.w3.org/2001/XMLSchema' 
    targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas' 
    xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' 
    elementFormDefault='qualified'> 

    <xs:element name='bad-request' type='empty'/> 
    <xs:element name='conflict' type='empty'/> 
    <xs:element name='feature-not-implemented' type='empty'/> 
    <xs:element name='forbidden' type='empty'/> 
    <xs:element name='gone' type='xs:string'/> 
    <xs:element name='internal-server-error' type='empty'/> 
    <xs:element name='item-not-found' type='empty'/> 
    <xs:element name='jid-malformed' type='empty'/> 
    <xs:element name='not-acceptable' type='empty'/> 
    <xs:element name='not-allowed' type='empty'/> 
    <xs:element name='not-authorized' type='empty'/> 
    <xs:element name='payment-required' type='empty'/> 
    <xs:element name='policy-violation' type='empty'/> 
    <xs:element name='recipient-unavailable' type='empty'/> 
    <xs:element name='redirect' type='xs:string'/> 
    <xs:element name='registration-required' type='empty'/> 
    <xs:element name='remote-server-not-found' type='empty'/> 
    <xs:element name='remote-server-timeout' type='empty'/> 
    <xs:element name='resource-constraint' type='empty'/> 
    <xs:element name='service-unavailable' type='empty'/> 
    <xs:element name='subscription-required' type='empty'/> 
    <xs:element name='undefined-condition' type='empty'/> 
    <xs:element name='unexpected-request' type='empty'/> 

    <xs:group name='stanzaErrorGroup'> 
    <xs:choice> 
     <xs:element ref='bad-request'/> 
     <xs:element ref='conflict'/> 
     <xs:element ref='feature-not-implemented'/> 
     <xs:element ref='forbidden'/> 
     <xs:element ref='gone'/> 
     <xs:element ref='internal-server-error'/> 
     <xs:element ref='item-not-found'/> 
     <xs:element ref='jid-malformed'/> 
     <xs:element ref='not-acceptable'/> 
     <xs:element ref='not-authorized'/> 
     <xs:element ref='not-allowed'/> 
     <xs:element ref='payment-required'/> 
     <xs:element ref='policy-violation'/> 
     <xs:element ref='recipient-unavailable'/> 
     <xs:element ref='redirect'/> 
     <xs:element ref='registration-required'/> 
     <xs:element ref='remote-server-not-found'/> 
     <xs:element ref='remote-server-timeout'/> 
     <xs:element ref='resource-constraint'/> 
     <xs:element ref='service-unavailable'/> 
     <xs:element ref='subscription-required'/> 
     <xs:element ref='undefined-condition'/> 
     <xs:element ref='unexpected-request'/> 
    </xs:choice> 
    </xs:group> 

    <xs:element name='text'> 
    <xs:complexType> 
     <xs:simpleContent> 
     <xs:extension base='xs:string'> 
      <xs:attribute ref='xml:lang' use='optional'/> 
     </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
    </xs:element>  

    <xs:simpleType name='empty'> 
    <xs:restriction base='xs:string'> 
     <xs:enumeration value=''/> 
    </xs:restriction> 
    </xs:simpleType>  
</xs:schema> 
+0

Warnung: Wenn Sie versuchen, Schemas zu verwenden, um XMPP zu validieren, treten Interoperabilitätsprobleme auf. Das mag das sein, wonach Sie suchen (alles "schlechte" XML ablehnen), aber es ist im Allgemeinen für diejenigen überraschend, die diesen Weg einschlagen. Insbesondere das Mantra "Ignoriere, was du nicht verstehst" von XMPP ist im Schema-Land schwer zu befolgen, und die Leute erhalten niemals die richtige Reihenfolge der Elemente. –

Antwort

9

Nur weil Sie nicht brauchen, die xml Namespace zum Beispiel Dokumente zu erklären, bedeutet nicht das gleiche für Schemata wahr ist. Ich weiß, das scheint ein bisschen komisch, aber da ist es. Sie müssen das Attribut xml: lang definieren und den XML-Namespace deklarieren. Im Allgemeinen verwende ich ein einfaches Schema, das ich in meine Schemata importiere. Verwenden Sie das, dass die W3C has made available.

Importieren Sie das, deklarieren Sie den Namespace. Alles wird gut

<xs:schema 
    xmlns:xs='http://www.w3.org/2001/XMLSchema' 
    xmlns:xml="http://www.w3.org/XML/1998/namespace" 
    targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas' 
    xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' 
    elementFormDefault='qualified'> 

    <xs:import schemaLocation="http://www.w3.org/2001/xml.xsd" namespace="http://www.w3.org/XML/1998/namespace"/> 

    <xs:element name='bad-request' type='empty'/> 
    <xs:element name='conflict' type='empty'/> 
    <xs:element name='feature-not-implemented' type='empty'/> 
    <xs:element name='forbidden' type='empty'/> 
    <xs:element name='gone' type='xs:string'/> 
    <xs:element name='internal-server-error' type='empty'/> 
    <xs:element name='item-not-found' type='empty'/> 
    <xs:element name='jid-malformed' type='empty'/> 
    <xs:element name='not-acceptable' type='empty'/> 
    <xs:element name='not-allowed' type='empty'/> 
    <xs:element name='not-authorized' type='empty'/> 
    <xs:element name='payment-required' type='empty'/> 
    <xs:element name='policy-violation' type='empty'/> 
    <xs:element name='recipient-unavailable' type='empty'/> 
    <xs:element name='redirect' type='xs:string'/> 
    <xs:element name='registration-required' type='empty'/> 
    <xs:element name='remote-server-not-found' type='empty'/> 
    <xs:element name='remote-server-timeout' type='empty'/> 
    <xs:element name='resource-constraint' type='empty'/> 
    <xs:element name='service-unavailable' type='empty'/> 
    <xs:element name='subscription-required' type='empty'/> 
    <xs:element name='undefined-condition' type='empty'/> 
    <xs:element name='unexpected-request' type='empty'/> 

    <xs:group name='stanzaErrorGroup'> 
     <xs:choice> 
      <xs:element ref='bad-request'/> 
      <xs:element ref='conflict'/> 
      <xs:element ref='feature-not-implemented'/> 
      <xs:element ref='forbidden'/> 
      <xs:element ref='gone'/> 
      <xs:element ref='internal-server-error'/> 
      <xs:element ref='item-not-found'/> 
      <xs:element ref='jid-malformed'/> 
      <xs:element ref='not-acceptable'/> 
      <xs:element ref='not-authorized'/> 
      <xs:element ref='not-allowed'/> 
      <xs:element ref='payment-required'/> 
      <xs:element ref='policy-violation'/> 
      <xs:element ref='recipient-unavailable'/> 
      <xs:element ref='redirect'/> 
      <xs:element ref='registration-required'/> 
      <xs:element ref='remote-server-not-found'/> 
      <xs:element ref='remote-server-timeout'/> 
      <xs:element ref='resource-constraint'/> 
      <xs:element ref='service-unavailable'/> 
      <xs:element ref='subscription-required'/> 
      <xs:element ref='undefined-condition'/> 
      <xs:element ref='unexpected-request'/> 
     </xs:choice> 
    </xs:group> 

    <xs:element name='text'> 
     <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base='xs:string'> 
        <xs:attribute ref='xml:lang' use='optional'/> 
       </xs:extension> 
      </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 

    <xs:simpleType name='empty'> 
     <xs:restriction base='xs:string'> 
      <xs:enumeration value=''/> 
     </xs:restriction> 
    </xs:simpleType> 

</xs:schema> 

ich so vertraut bin nicht mit XMPP, aber ich vermute, dass Ihr Schema in einer anderen eingeführt werden soll, wo die XML-Namespace bereits deklariert hat.

+0

Ja - es sollte in einen anderen importiert werden, in dem der XML-Namespace deklariert wurde! Vielen Dank! – noctonura

+1

Ich möchte hinzufügen, dass das Problem in meinem Fall war, dass ich das Attribut ** targetNamespace ** im xs: schema-Element nicht deklariert hatte, was wir im obigen Beispiel als _same value_ sehen ** xmlns ** -Attribut – mungflesh

Verwandte Themen