Announcement

Collapse
No announcement yet.

Xml datei mit dtd

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Xml datei mit dtd

    Hallo zusammen, ich hab so ein kleines problem mit meiner xml und dtd datei.
    Also wenn ich die beiden dateien auf Wohlgeformtheit prüfen lasse dann ist alles ok. Die DTD wird auch als valide angezeigt.

    Bei der XML Datei kommt folgende Meldung: Fehler: Die Deklaration des Elementes 'daten' kann nicht gefunden werden.

    Hier mal die dtd als auch ein teil der xml datei.

    DTD:
    PHP Code:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <!DOCTYPE daten [

    <!ELEMENT daten (inhalt)+>

    <!ELEMENT inhalt (vid, ausgabe?, next*)>
    <!ATTLIST inhalt id ID #REQUIRED>

    <!ELEMENT vid (EMPTY)>
    <!ATTLIST vid namen CDATA #REQUIRED 
                  src CDATA #REQUIRED
    >
    <!ELEMENT ausgabe (#PCDATA)>

    <!ELEMENT next (#PCDATA)>
    <!ATTLIST next rid IDREF #REQUIRED>

    ]>
    XML:
    PHP Code:
    <?xml version = "1.0" encoding = "UTF-8" standalone="yes"?>

    <daten>
            <inhalt id="1">
                <vid namen="intro" src="video/intro_momentan.flv"/>
                <ausgabe></ausgabe>
                <next rid="2"/>
            </inhalt>
            
            <inhalt id="2">
                <vid namen="unterhaltung_bar" src="video/unterhaltung_bar.flv"/>
                <ausgabe>Wähle ein Getränk aus und schreibe ihn in das folgende Textfeld rein!</ausgabe>
                <next rid="3"/>
                <next rid="4"/>
                <next rid="5"/>
                <next rid="6"/>
            </inhalt>
            
            ...
    </daten>
    Ich hab diverse Internetseiten angeschaut mit Bsp zu den XML und DTD Dateien. Aber ich finde jetzt nicht unebdingt ein Unterschied zu meinen Dateien.

    Könntet ihr mir evtl auch sagen wie ich die dtd datei in die xml importiere? weil ich hatte da diverse sachen ausprobiert, also die dtd als exterene datei oder als interne datei, also in der xml datei, aber es hat nicht geklappt. vielleicht übersehe ich da eine Kleinigkeit.

    Wäre echt lieb wenn ihr mir da helfen würdet. DANKE!!!!

    Grüssle

  • #2
    Code:
    <!ELEMENT vid EMPTY>
    Mit Klammern ist vid (EMPTY) keine leere Elementdeklaration mehr.

    id="1" ist nicht gültig, da IDs nicht mit einer Ziffer beginnen dürfen. id="id1" wäre gültig, das gilt analog bei den IDREF-Werten beim rid-Attribut.

    Nimm die DOCTYPE-Zeile (sowie ]> am Ende) aus der DTD heraus und füge diese entsprechend im XML-Dokument ein:

    Code:
    <DOCTYPE daten SYSTEM "name.dtd">

    Comment


    • #3
      hab dies verändert, geht leider aber immer noch nicht ...
      also ich weiß jetzt ech nicht was ich machen soll ...
      fehler fehler fehler kommen da ...

      Comment


      • #4
        Dieses Beispiel (mit interner DTD) validiert:

        Code:
        <?xml version = "1.0" encoding = "UTF-8" standalone="yes"?> 
        <!DOCTYPE daten [
        <!ELEMENT daten (inhalt)+>
        <!ELEMENT inhalt (vid, ausgabe?, next*)>
        <!ATTLIST inhalt id ID #REQUIRED>
        <!ELEMENT vid EMPTY> 
        <!ATTLIST vid namen CDATA #REQUIRED  
                      src CDATA #REQUIRED> 
        <!ELEMENT ausgabe (#PCDATA)> 
        <!ELEMENT next (#PCDATA)> 
        <!ATTLIST next rid IDREF #REQUIRED> 
        ]> 
        <daten> 
          <inhalt id="id1"> 
            <vid namen="intro" src="video/intro_momentan.flv"/> 
            <ausgabe></ausgabe> 
            <next rid="id2"/> 
          </inhalt> 
                 
          <inhalt id="id2"> 
            <vid namen="unterhaltung_bar" src="video/unterhaltung_bar.flv"/> 
            <ausgabe>Wähle ein Getränk aus und schreibe ihn in das folgende Textfeld rein!</ausgabe> 
            <next rid="id1"/> 
          </inhalt>         
        </daten>

        Comment


        • #5
          ok danke so gehts, wir hatten bei der xml datei bei den anderen elementen auch ne falsche anordnung, daher ging des bei uns auch nicht.
          aber wir brauchen die dtd extern. hab es gerade nochmals versucht extern zu machen, aber es geht net ...

          externe dtd:
          PHP Code:
          <!ELEMENT daten (inhalt)+>
          <!
          ELEMENT inhalt (vidausgabe?, next*)>
          <!
          ATTLIST inhalt id ID #REQUIRED>
          <!ELEMENT vid EMPTY> 
          <!
          ATTLIST vid namen CDATA #REQUIRED  
                        
          src CDATA #REQUIRED> 
          <!ELEMENT ausgabe (#PCDATA)> 
          <!ELEMENT next (#PCDATA)> 
          <!ATTLIST next rid IDREF #REQUIRED> 
          xml:
          PHP Code:

          <?xml version = "1.0" encoding = "UTF-8" standalone="yes"?> 
          <!DOCTYPE daten SYSTEM "daten.dtd">

          <daten> 
            <inhalt id="id1"> 
              <vid namen="intro" src="video/intro_momentan.flv"/> 
              <ausgabe></ausgabe> 
              <next rid="id2"/> 
            </inhalt> 
                   
            <inhalt id="id2"> 
              <vid namen="unterhaltung_bar" src="video/unterhaltung_bar.flv"/> 
              <ausgabe>Wähle ein Getränk aus und schreibe ihn in das folgende Textfeld rein!</ausgabe> 
              <next rid="id1"/> 
            </inhalt>         
          </daten>
          die meldung die er anzeigt ist folgende:
          Markup-Deklarationen im Dokument oder auf welche das Dokument verweist, müssen wohlgeformt sein.
          Fehlerstelle: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

          Comment


          • #6
            Ich sehe den Anwendungskontext nicht. Vielleicht muss der Pfad zur DTD angepasst werden.

            Comment


            • #7
              Was meinst du denn mit Anwendungskontext?? Ja also der PFAD zur DTD muss denk ich mal net geändert werden. Muss da noch vielleicht noch zusätzlich was in die DTD reingeschrieben werden am Anfang oder in der XML Datei ???

              Comment


              • #8
                Das XML lebt ja nicht im luftleeren Raum . Die Fehlermeldung deutet irgendwie auf XHTML hin. Läuft das im Browser und was ist überhaupt das Ziel?

                Comment


                • #9
                  Die XML Datei wird ja dazu verwendet dann die videos, die ausgabetexte und die texte für die buttons einzulesen. aber ich versteh nicht wieso die dtd intern klappt einwandfrei und wenn ma die dtd extern hat irgendwas net funktioniert ...

                  Comment


                  • #10
                    Dann liegt ein Problem mit der nicht genannten Verarbeitungssoftware vor und hat mit XML an sich nichts mehr zu tun.

                    Comment


                    • #11
                      ok danke für die antwort. ja dann lass ichs halt intern ... weil echt i verstehs beim besten willen net wieso es extern net gehen will. ja mit dreamweaver wurde die xml datei und die dtd gemacht

                      Comment

                      Working...
                      X