Announcement

Collapse
No announcement yet.

Problem mit DOMDocument::schemaValidate()

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

  • Problem mit DOMDocument::schemaValidate()

    Hallo Community,

    ich habe eine korrekte xsd datei sowie ein korrektes XML Document.
    Wenn ich jetzt über DOMDocument das xml Document mit dem schema validieren möchte bekomme ich immer folgende Fehlermeldung...

    Warning: DOMDocument::schemaValidate() [domdocument.schemavalidate]: Element 'tag', attribute 'name': '123456789-ABCDEfghijk' is not a valid value of the atomic type 'xs:ENTITY'


    Warum ist das so???

    Also das Attribute ist vom typ Entity xs:ENTITY und Required sowie minOccurs= 1, inhaltlich dürfen nach Schema alle Zeichen darin vorkommen, da der Typ ENTITY von NCName abgeleitet ist.

    Im Doctype ist das ENTITY auch gleich benahmt und korrekt vorgegeben zuzüglich der Notations....

    Hat jemand eine Ahnung worin das Problem liegt?

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE buch [
    <!ENTITY 123456789-ABCDEfghijkSYSTEM "123456789-ABCDEfghijk.JPG" NDATA JPEG>
    ]>
    <buch>
    <tag name="123456789-ABCDEfghijk"></tag>
    </buch>

    Hier ein Beispiel um den Zusammenhang eventuell besser zu sehen...

    Hat jemand eine Idee?
    Zuletzt editiert von a mueller; 05.02.2010, 08:24.

  • #2
    Namen müssen mit Buchstaben bzw. Unterstrich beginnen, eine Ziffer ist also nicht zulässig (einfach mal validieren). Außerdem fehlt die eigentliche Entity-Referenz: name="&...;".

    Comment


    • #3
      Originally posted by Thomas Meinike View Post
      Namen müssen mit Buchstaben bzw. Unterstrich beginnen, eine Ziffer ist also nicht zulässig (einfach mal validieren). &...;".
      wo steht das ? Meines wissens ist das nicht ganz richtig:
      Nach w3 org NTName / Schema ist der Name so richtig.
      ( http://www.w3.org/2001/XMLSchema-instance )
      NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
      Habe aber dein Vorschlag trotzdem probiert und keine Änderung erzielt... Mmmmh...

      Jedoch den namen mit &....; anzusprechen oder zu füllen... ergibt folgende Meldung???

      Warning: DOMDocument::load() [domdocument.load]: Entity reference to unparsed entity test
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE buch [
      <!ENTITY test SYSTEM "123456789-ABCDEfghijk.JPG" NDATA JPEG>
      ]>
      <buch>
      <tag name="&test;"></tag>
      </buch>

      Comment


      • #4
        Ja, ok, neben Buchstaben und "_" sind als Startzeichen auch Unicode-Zeichen der definierten Bereiche zulässig. Von den Ziffern [0-9] steht dort jedoch nichts. Der "normale" Konsens zum Austausch von Dokumenten ist die Verwendung von lateinischen Buchstaben bzw. dem Unterstrich am Anfang von Namen. Wer möchte schon "À..." haben?

        Probiere es so:
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE buch [
          <!NOTATION JPEG SYSTEM "...">
          <!ENTITY test SYSTEM "123456789-ABCDEfghijk.JPG" NDATA JPEG>
          <!ELEMENT buch (tag*)>
          <!ELEMENT tag (#PCDATA)>
          <!ATTLIST tag name ENTITY #REQUIRED>
        ]>
        <buch>
          <tag name="test">...</tag>
        </buch>
        Zuletzt editiert von Thomas Meinike; 05.02.2010, 11:47.

        Comment


        • #5
          Danke erstmal für Deine Unterstützung!!!

          zur Vollständigkeit:

          Code:
          [4]   	NameStartChar	   ::=   	":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
          [4a]   	NameChar	   ::=   	NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
          [5]   	Name	   ::=   	NameStartChar (NameChar)*
          [6]   	Names	   ::=   	Name (#x20 Name)*
          [7]   	Nmtoken	   ::=   	(NameChar)+
          [8]   	Nmtokens	   ::=   	Nmtoken (#x20 Nmtoken)*
          Das dargestellte Beispiel beschreibt nur die Problematik und ist von mir selbst erstellt.

          Das Schema beschreibt ja das Attribut sowie das Element und die Schemas und Notations und Entity sind eigentlich richtig angegeben und ich bekommen trotzdem den Fehler. Keine Ahnung

          Schema Ausschnitt:
          Code:
          <xs:element name="buch" type="buchype"/>
              <xs:complexType name="buchType">
                  <xs:attribute ref="test" use="required"/>
                  <xs:attribute ref="irgendwas"/>
              </xs:complexType>
              <xs:attribute name="test" type="xs:ENTITY"/>
              <xs:attribute name="irgendwas" type="xs:string"/>
          Auch Dein Umgesetzter Part bringt nicht den Erfolg!?
          Zuletzt editiert von a mueller; 05.02.2010, 13:39.

          Comment


          • #6
            Es ging mir nur um das erste Zeichen eines Namens und dieses darf eben keine Ziffer sein (das war ein Problem in der anfangs gezeigten DTD). Mit den weiteren Namensregeln war alles stimmig. Eine führende Ziffer meldet ein Validierer sofort als Fehler, einfach mal testen. Umgang mit Unicode-Zeichen in Namen ist IMHO dennoch grenzwertig (natürlich kein Problem und sehr erwünscht in Inhalten).

            Zu Deinem Schema-Problem kann ich ohne testbaren Code nichts weiter sagen, zumindest validiert mein Beispiel gegen die enthaltene DTD. Was sagt ein Schema-Validator oder ein Tool wie XMLSpy zu Deinem Gesamtdokument?

            Comment

            Working...
            X