XML Schema mit XLink

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XML Schema mit XLink

    Hallo,
    ich habe ein Mini-Beispiel in dem ich versucht habe einen xlink in einer XML-Instanz zu realisieren, die über ein Schema validiert wird.

    die XML Datei dazu sieht so aus

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test\test.xsd"
    3. xmlns:xlink="http://www.w3.org/1999/xlink"
    4. xmlns:html="http://www.w3.org/1999/xhtml">
    5. <link xlink:href="http://www.google.de"></link>
    6. </test>

    Und das Schema dazu wie folgt:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    3. <xs:element name="test">
    4. <xs:complexType>
    5. <xs:sequence>
    6. <xs:element name="link" type="aType" minOccurs="0"/>
    7. </xs:sequence>
    8. </xs:complexType>
    9. </xs:element>
    10. <xs:complexType name="aType">
    11. <xs:simpleContent>
    12. <xs:extension base="xs:string">
    13. <xs:anyAttribute namespace="http://www.w3.org/1999/xlink"/>
    14. </xs:extension>
    15. </xs:simpleContent>
    16. </xs:complexType>
    17. </xs:schema>
    Alles anzeigen


    Wenn ich das ganze mit XMLSpy validiere bekomme ich die Fehlermeldung:
    "Although matched by wildcard http://www.w3.org/1999/xlink, no declaration can be found for attribute xlink:href"

    Der Zweck der Übung soll sein, dass ich von einem bestimmten Element in der Instanz den Wert eines (beliebigen) anderen Elements referenzieren kann...
    Da das Ganze letzendlich in einen etwas größeren Kontext eingebunden werden soll wäre ich froh wenn mir jemand erklären könnte, wo der Fehler im obigen Beispiel liegt, bzw. mir sagen kann, ob ich mit diesem Ansatz auf dem richtigen Weg bin.
    Vielen Dank so weit, Johanna
  • Danke fürs ausprobieren! Ich benutze momentan XMLspy 2006 r3 Enterprise Edition.
    Vielleicht muss ich es noch einmal mit einem anderen Programm validieren. Kennt jemand noch einen guten XML Editor? Ich gehe jetzt mal davon aus, dass es prinzipiell mit "anyAttribute" funktionieren sollte, xlinks o.ä. einzubinden!?!
    Grüße,
    -Johanna
  • Zum Thema Editor:
    Mann könnte auch Visual Studio benutzen (immerhin wird die xsd grafisch dargestellt). Hat mich aber nicht überzeugt. Interessanterweise tritt hier der von dir im OP erwähnte Fehler auf.

    Unter [1] findest du ein Beispiel zur Definition eines Links in einer Schemadatei. Eventuell hilft dir das ja weiter.

    Gruß,
    Paul

    [1] XLink in Schemadatei
    [2] XLink mit DTD
    [3] Verknüpfungen mit XML Links
  • Habe versucht folgenden Ausdruck aus dem Beispiel [1] zu übernehmen:

    Quellcode

    1. <xsd:element name="attractionName" xlink:type="simple"/>


    XMLSpy akzeptiert "simple" nicht als gültigen Typ.
    Mit oXygen kann ich das Schema allerdings validieren....

    Unter XMLSpy habe ich jetzt ein Element "any" eingefügt

    Quellcode

    1. <xsd:any namespace="http://www.w3.org/1999/xlink" processContents="skip" maxOccurs="unbounded"/>


    mit dem Resultat, dass ich beliebige (unsinnige) Elemente darin einfügen kann, solange sie das Präfix xlink: haben... auch noch nicht wirklich das Wahre. Vielleicht arbeite ich erstmal mit oXygen weiter.


    Eine andere Frage:
    brauche ich überhaupt einen xlink um einen XPath der Art:

    Document/item[@identifier="ID01"]/item[@identifier="ID01_I07"]/symbol[@identifier='ID01_I07_S01']/value[1]

    im Schema festzulegen oder kann ich das auch anders definieren?
    oder reicht es einfach in der XML-Instanz etwas wie

    xpointer(/XCELDocument/item[@identifier="ID01"]/item[@identifier="ID01_I07"]/symbol[@identifier='ID01_I07_S01']/value[1])

    zu schreiben? Meistens ist ja nachher doch alles einfacher als man gedacht hat...
    Freu mich über Kommentare,
    Johanna