2012-02-18 4 views
14

पर कोई बच्चा तत्व अपेक्षित नहीं है, मैं अपने एक्सएमएल कौशल पर काम कर रहा हूं, लेकिन वैध गलती वाले स्थानों पर मेरे एक्सएसडी त्रुटियों में त्रुटिपूर्ण हैं। erorrs हैं:तत्व 'तत्व' से शुरू होने वाली अवैध सामग्री मिली। इस बिंदु पर

  • 18: 11 cvc कॉम्प्लेक्स-type.2.4.d: अमान्य सामग्री तत्व 'aktor' के साथ शुरू करने मिला था। इस बिंदु पर कोई बाल तत्व अपेक्षित नहीं है।
  • 37: 11 cvc-complex-type.2.4.d: अमान्य सामग्री
    तत्व 'utwor' के साथ शुरू हुई थी। इस बिंदु पर कोई बाल तत्व अपेक्षित नहीं है।

यहाँ XSD है:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:element name="filmy"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="film"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="tytul"/> 
         <xs:element name="gatunek"/> 
         <xs:element name="czasTrwania"/> 
         <xs:element name="premiera"/> 
         <xs:element name="produkcja"/> 
         <xs:element name="rezyser"/> 
         <xs:element name="scenariusz"/> 

         <xs:element name="obsada"> 
          <xs:complexType> 
           <xs:sequence> 
            <xs:element name="aktor"> 
             <xs:complexType> 
              <xs:sequence> 
               <xs:element name="imie"/> 
               <xs:element name="nazwisko"/> 
               <xs:element name="dataUrodzenia"/> 
               <xs:element name="postac"/> 
              </xs:sequence> 
             </xs:complexType> 
            </xs:element> 
           </xs:sequence> 
          </xs:complexType> 
         </xs:element> 

         <xs:element name="soundtrack"> 
          <xs:complexType> 
           <xs:sequence> 
            <xs:element name="utwor"> 
             <xs:complexType> 
              <xs:sequence> 
               <xs:element name="wykonawca"/> 
               <xs:element name="tytulUtworu"/> 
               <xs:element name="gatunekMuzyczny"/> 
              </xs:sequence> 
             </xs:complexType> 
            </xs:element> 
           </xs:sequence> 
          </xs:complexType> 
         </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

</xs:schema> 

यहाँ एक्सएमएल है:

<?xml version="1.0" encoding="utf-8"?> 
<filmy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <film> 
     <tytul>Fight Club</tytul> 
     <gatunek>Thriller, Psychologiczny</gatunek> 
     <czasTrwania>2h11m</czasTrwania> 
     <premiera>11 luty 1999</premiera> 
     <produkcja>Niemcy, USA</produkcja> 
     <rezyser>David Fincher</rezyser> 
     <scenariusz>Jim Uhls</scenariusz> 
     <obsada> 
      <aktor> 
       <imie>Edward</imie> 
       <nazwisko>Norton</nazwisko> 
       <dataUrodzenia>1969</dataUrodzenia> 
       <postac>Narrator</postac> 
      </aktor> 
      <aktor> 
       <imie>Brad</imie> 
       <nazwisko>Pitt</nazwisko> 
       <dataUrodzenia>1963</dataUrodzenia> 
       <postac>Tyler Durden</postac> 
      </aktor> 
      <aktor> 
       <imie>Helena</imie> 
       <nazwisko>Boham Carter</nazwisko> 
       <dataUrodzenia>1966</dataUrodzenia> 
       <postac>Marla Singer</postac> 
      </aktor> 
     </obsada> 
     <soundtrack> 
      <utwor> 
       <wykonawca>The Pixies</wykonawca> 
       <tytulUtworu>Where is my mind</tytulUtworu> 
       <gatunekMuzyczny>Rock</gatunekMuzyczny> 
      </utwor> 
      <utwor> 
       <wykonawca>The Pixies</wykonawca> 
       <tytulUtworu>Where is my mind</tytulUtworu> 
       <gatunekMuzyczny>Rock</gatunekMuzyczny> 
      </utwor> 
      <utwor> 
       <wykonawca>The Pixies</wykonawca> 
       <tytulUtworu>Where is my mind</tytulUtworu> 
       <gatunekMuzyczny>Rock</gatunekMuzyczny> 
      </utwor> 
     </soundtrack> 
    </film> 
</filmy> 

मैं समस्या समझ में नहीं आता है, यह कहते हैं कोई भी बच्चा तत्व की उम्मीद है, वहाँ बच्चे संख्या तय करते है? क्या मैं इसे विस्तारित कर सकता हूं?

मुझे अपने प्रश्न का उत्तर मिला है, तत्वों को गुणा किया जा सकता है, maxOccurs = "unbounded" विशेषता है।

+1

आपको समाधान को उत्तर के रूप में पोस्ट करना चाहिए, फिर 48 घंटे प्रतीक्षा करें और अपना जवाब स्वीकार करें। यह भविष्य के उपयोगकर्ताओं के लिए सही समाधान के साथ उत्तर दिए गए प्रश्न को चिह्नित करेगा। आपको कोई अंक नहीं मिलेगा, लेकिन आप साइट को बेहतर बना देंगे –

+0

असल में आपको उत्तर को चिह्नित करने के लिए 2 अंक प्राप्त होंगे। –

उत्तर

14

मुझे अपने प्रश्न का उत्तर मिला है, तत्वों को गुणा किया जा सकता है, maxOccurs = "unbounded" विशेषता है।

2

बस एक और जवाब जोड़कर स्वीकार्य व्यक्ति ने पूरी तरह मेरी मदद नहीं की।

तो यदि आपके पास प्रश्न पूछने वाले की तरह एक संरचना है, तो आप बाहरी अधिकांश तत्व रैपर पर maxOccurs="unbounded" नहीं डाल सकते क्योंकि इसे वैश्विक तत्व माना जाएगा।

इसके बजाय आप तो जैसे सभी संभावित तत्वों पर डाल करने के लिए है:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:element name="filmy"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="film"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element maxOccurs="unbounded" name="tytul"/> 
         <xs:element maxOccurs="unbounded" name="gatunek"/> 
         <xs:element maxOccurs="unbounded" name="czasTrwania"/> 
         <xs:element maxOccurs="unbounded" name="premiera"/> 
         <xs:element maxOccurs="unbounded" name="produkcja"/> 
         <xs:element maxOccurs="unbounded" name="rezyser"/> 
         <xs:element maxOccurs="unbounded" name="scenariusz"/> 

... आदि

2

जवाब इस प्रश्न के लिए स्वीकार किए जाते हैं, वास्तव में समस्या का समाधान होगा, लेकिन नहीं है "सही" समाधान।

कारण असीम जोड़ने, काम करता है, कि XSD अब कई दृश्यों की अनुमति देते हैं, यानी

<filmy> 
    <sequence> 
     <element_3> 
    </sequence> 
    <sequence> 
     <element_2> 
    <sequence> 
    <sequence> 
     <element_1> 
    <sequence> 
    </filmy> 

क्या आप समस्या को हल करने के लिए क्या करना चाहिए है, अनुक्रम के तत्वों को जोड़ने, सामग्री के लिए है, सही क्रम में, यानी कुछ इस तरह:

filmy.getContent().add(element1) 
    filmy.getContent().add(element2) 
    filmy.getContent().add(element3) 

आप दे देंगे जो:

<filmy> 
    <sequence> 
     <element_1> 
     <element_2> 
     <element_3> 
    <sequence> 
    </filmy> 

यानी केवल एक अनुक्रम, और इस प्रकार असंबद्ध की कोई आवश्यकता नहीं है।

संबंधित मुद्दे