2010-06-15 3 views
0

j'ai un problème avec la validation de ce morceau de XML:problème de développer de schéma XML basé sur un fichier XML existant

<?xml version="1.0" encoding="UTF-8"?> 
<i-ching xmlns="http://www.oracolo.it/i-ching"> 
    <predizione> 
     <esagramma nome="Pace"> 
      <trigramma> 
       <yang/><yang/><yang/> 
      </trigramma> 
      <trigramma> 
       <yin/><yin/><yin/> 
      </trigramma> 
     </esagramma> 
     <significato>Questa combinazione preannuncia 
      <enfasi>boh</enfasi>, e forse anche <enfasi>mah, 
       chissa</enfasi>.</significato> 
    </predizione> 
    <predizione> 
     <esagramma nome="Ritorno"> 
      <trigramma> 
       <yang/><yin/> <yin/> 
      </trigramma> 
      <trigramma> 
       <yin/><yin/><yin/> 
      </trigramma> 
     </esagramma> 
     <significato>Si prevede con certezza <enfasi>qualcosa</enfasi>, 
      <enfasi>ma anche <enfasi>no</enfasi></enfasi>.</significato> 
    </predizione> 
</i-ching> 

Ce schéma XML a été développé avec la technique Poupées russes:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://www.oracolo.it/i-ching" 
    targetNamespace="http://www.oracolo.it/i-ching" 
    > 

<xsd:element name="i-ching"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="predizione" minOccurs="0" maxOccurs="64"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="esagramma"> 
          <xsd:complexType> 
           <!-- vi sono 2 trigrammi --> 
           <xsd:sequence> 
            <xsd:element name="trigramma" minOccurs="2" maxOccurs="2"> 
             <xsd:complexType> 
              <xsd:sequence minOccurs="3" maxOccurs="3"> 
               <xsd:choice> 
                <xsd:element name="yang"/> 
                <xsd:element name="yin"/> 
               </xsd:choice> 
              </xsd:sequence> 
             </xsd:complexType> 
            </xsd:element> 
           </xsd:sequence> 
           <xsd:attribute name="nome" type="xsd:string"/> 
          </xsd:complexType> 
         </xsd:element> 
         <!-- significato: context model misto --> 
         <xsd:element name="significato"> 
          <xsd:complexType mixed="true"> 
           <xsd:sequence> 
            <xsd:element name="enfasi" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> 
           </xsd:sequence> 
          </xsd:complexType> 
         </xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

</xsd:schema> 

Pour l'exercice, je dois développer un schéma XML pour valider le XML précédent. Le problème est que l'oxygène me dit ceci:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'predizione'. One of '{predizione}' is expected. Start location: 3:6 End location: 3:16 URL: http://www.w3.org/TR/xmlschema-1/#cvc-complex-type 

pourquoi? est-ce que quelque chose ne va pas avec mon schéma XML? merci beaucoup

+0

J'écrit le même exercice avec les autres techniques. J'ai posté les exercices, dans l'espoir d'aider quelqu'un d'autre: Salami tranches: http://pastebin.com/AJkk0V3A Eden Garden: http://pastebin.com/7Cw38yxB Store vénitien: http://pastebin.com/ VPsSz9KA – farhad

Répondre

1

Il cherche predizione avec un espace de noms vide, mais il ne peut trouver predizione dans l'espace de noms par défaut http://www.oracolo.it/i-ching, parce que vous n'avez pas elementFormDefault="qualified" mis en place dans l'élément xsd:schema. You can read more about this attribute and why it's needed here.

Fondamentalement, le correctif plus simple pour vous est d'utiliser les éléments suivants:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://www.oracolo.it/i-ching" 
    targetNamespace="http://www.oracolo.it/i-ching" 
    elementFormDefault="qualified" 
    > 
+0

Merci beaucoup! J'ai mal compris cet argument pendant que j'étudiais: maintenant c'est clair et je corrige mon schéma. Merci encore – farhad

Questions connexes