net-zwerg: mehrere xml schemas verarbeiten

Hallo
Ich bin noch anänger in xml schema und habe eine frage:

Ich habe mehrere xml dateien. In den xml Dateien habe ich elemente, deren attribute auf attribute verweisen, die in einer anderen xml dateien definiert ist. z.B.:

1.xml:

<element1 name="eins" id="111"/>

2.xml:

<element2 name="zwei" id="110"/>

3.xml:

<element3 name="refeins" typeref="1" id="111"/>
<element3 name="refzwei" typeref="2" id="110"/>

d.h.: wenn mein element3 typeref="1" definiert, soll id auf die id von 1.xml zeigen, wenn element 3 typeref="2" definiert soll id auf die id von 2.xml zeigen.
Mein Problem ist jetzt, 1.xml und 2.xml haben nahezu identische syntax, sodass ich ein und dasselbe xmlschema dafür gebaut habe. Kann ich die schemas miteinander verbinden (schema1/2 und schema3)und die keys dann so anpassen, dass das oben genannte funktioniert?

Hoffe ich habe mich verständlich ausgedrückt.

Danke für eure Hilfe

  1. Hallo net-zwerg!

    Ich weiss nicht, was du vor hast, aber schema dient dem Zweck, zu definieren, wann eine XML Datei gültig ist.
    Also kannst du z.B. definieren, dass der Inhalt eines Knotens eine number sein muss oder welcher Knoten welches Attribut haben soll/muss oder welche Kindknoten in einem Knoten erlaubt sind.

    Schema dient nicht dazu, irgendwelche (möglichen) Referenzen zwischen xml Dateien aufzulösen oder includes zu machen.

    Hierfür ist xsl(t) zuständig.

    Greets,
    Richard

    1. Ich kann doch mit einem Schema mittels key Referencen bilden, und mit include kann ich mehrere Schemata zusammen fügen.

      1. Hallo,

        Ich kann doch mit einem Schema mittels key Referencen bilden, und mit include kann ich mehrere Schemata zusammen fügen.

        Korrekt, aber du kanst auch mit keys keine Referenzen auf Attributwerte legen (lediglich nur wenn du key bzw. unique verwendest um identitäts Referenzen abzubilden).
        Mehrere Schemas kannst du schon in deinem inkludieren, aber nur Schemas und nicht XML-Dateien.

        Erst wenn du in 3.xml 1- bzw. 2.xml inkludiert hast, könntest du die von dir gewünschte Abhängigkeit per Schema überprüfen. Wie diese Überprüfung auszusehen hat, kann ich dir aber nicht sagen, da ich weder dein Schema noch dein XML kenne.

        Aber auch so kann ich dir sagen, dass eine Überprüfung: "wenn elemX/@x = 1 dann ist 1 = elemY/@y" nicht möglich ist. Du müsstest schon eine: "elemX/@x = elemY/@y" Überprüfung machen.

        Grüße
        Thomas