XML-Schema

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML-Schema

    kennt sich hier zufällig jemand mit der erstellung von xml-schemas aus?
    ich habe eine relativ einfache aufgabenstellung, nur die lösung scheint nicht so einfach zu sein.

    also gegeben ist eine mysql-tabelle, vereinfacht so:
    Code:
    ID | Wert
    ---------
    1  | Wert zur ID 1
    2  | Wert zur ID 2
    dazu habe ich ein php-script geschrieben, welches den inhalt als xml-datei exportiert. das ergebnis sieht dann so aus:
    PHP-Code:
    <ID_und_Wert>
        <
    ID>1</ID>
        <
    Wert>Wert zur ID 1</Wert>
    </
    ID_und_Wert>
    <
    ID_und_Wert>
        <
    ID>2</ID>
        <
    Wert>Wert zur ID 3</Wert>
    </
    ID_und_Wert
    zur späteren validierung der exportdatei wollte ich dazu ein möglichst restriktives xml-schema erstellen.
    bisher habe ich das:
    PHP-Code:
    <xs:element name="ID_und_Wert">
       <
    xs:complexType>
          <
    xs:all>
             <
    xs:element name="ID">
                <
    xs:simpleType>
                   <
    xs:restriction base="xs:int">
                      <
    xs:enumeration value="1" />
                      <
    xs:enumeration value="2" />
                   </
    xs:restriction>
                </
    xs:simpleType>
             </
    xs:element>
             <
    xs:element name="Wert">
                <
    xs:simpleType>
                   <
    xs:restriction base="xs:string">
                      <
    xs:enumeration value="Wert zur ID 1" />
                      <
    xs:enumeration value="Wert zur ID 2" />
                   </
    xs:restriction>
                </
    xs:simpleType>
             </
    xs:element>
          </
    xs:all>
       </
    xs:complexType>
    </
    xs:element
    die ids bzw. werte schränke ich durch die aufzählung aller möglichen values ein. allerdings wird bei diesem schema nicht die beziehung id zu wert beachtet.
    also, wenn id = 1, dann muss der zwingend wert = "Wert zur ID 1" sein und nicht etwa "Wert zur ID 2".

    weiß jemand, wie ich diese einschränkende beziehung in einem xml-schema formulieren kann?

  • #2
    Dein Schema hat schon von Grund auf einen Fehler: Andere IDs als 1 respektive 2 (bzw. andere Werte) sind nicht zugelassen. Die Beziehung ist doch schon durch die Unterordnung in ID_und_Wert gegeben - warum sollten da andere Kombinationen möglich sein?
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Original geschrieben von tontechniker
      [B]Die Beziehung ist doch schon durch die Unterordnung in ID_und_Wert gegeben - warum sollten da andere Kombinationen möglich sein?
      ja, da hast du recht, es sind garkeine anderen kombinationen möglich.

      was aber durchaus vorkommen kann und auch vorkommt, ist, dass sich der Wert zu einer id im laufe der zeit ändert. und dann soll einen spätestens die fehlgeschlagene validierung darauf aufmerksam machen, dass sich etwas am schema geändert hat.
      ist quasi nur zur zusätzlichen sicherheit, falls man etwas an der datenbank geändert hat und vergessen hat, diese änderungen auch am schema vorzunehmen.

      Kommentar


      • #4
        Korrigier mich, aber das Schema hat doch afaik absolut nichts mit den Inhalten zutun. Wenn du irgendwelche Änderungen prüfen willst leg dir eine die XML Datei beiseite und guck dir die Differenz an.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Original geschrieben von tontechniker
          Korrigier mich, aber das Schema hat doch afaik absolut nichts mit den Inhalten zutun.
          und womit hat es deiner meinung nach etwas zu tun?
          XML Schema
          XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML-Dokumente.
          aber eigentlich wollte ich nicht erklären, was ein xml-schema ist, sondern war eher an einer problemlösung interessiert

          Kommentar


          • #6
            Also IMHO ist ein XML Schema absolut die falsche Adresse, um zu prüfen, ob die XML Datei mit den richtigen Inhalten, Beziehungen o.ä. gefüllt ist. Wie der Name schon sagt gehts doch darum, zu definieren welche Art von Daten in welcher Reihenfolge etc. erlaubt sind, analog etwa zu der Definition von DB Tabellenstrukturen. Wenn du in nem DBMS eine Tabelle anlegst, gibst du da schließlich auch nicht an, dass nur die einen Werte mit ganz bestimmten anderen in einem Datensatz stehen dürfen.

            Bei der Validierung geht es eben um diese Struktur und bestenfalls noch, welche Werte wo erlaubt sind, aber darüber hinaus sollte man es bleiben lassen.

            Falls doch, sollte das doch mit nem xs:choice gehen, wo dann eben alle möglichen Kombinationen aufgezählt werden. Hat für mich dann aber nix mehr mit einem Schema zu tun...

            Kommentar


            • #7
              und womit hat es deiner meinung nach etwas zu tun?
              Struktur != Inhalte
              quote:XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML-Dokumente. aber eigentlich wollte ich nicht erklären, was ein xml-schema ist, sondern war eher an einer problemlösung interessiert
              Wenn das Problem das genau das ist, was du beschrieben hast solltest du am besten eine die XML in dem Status ablegen, bei der "Validierung" parsen und mit der aktuellen Version vergleich, also prüfen ob die Werte zu den IDs sich geändert haben. Ein XML Schema ist an dieser Stelle imho unangebracht.
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #8
                Original geschrieben von ZombieChe
                Wenn du in nem DBMS eine Tabelle anlegst, gibst du da schließlich auch nicht an, dass nur die einen Werte mit ganz bestimmten anderen in einem Datensatz stehen dürfen.
                naja, indirekt schon.
                die o.g. tabelle beinhaltet die optionswerte für eine drop-down-list. in einer weiteren formulartabelle wird die options-id einem formular zugeordnet. die options-id ist dabei ein fremdschlüssel. damit ist eine eindeutige beziehung der id zum options-wert hergestellt.

                Original geschrieben von tontechniker
                Wenn das Problem das genau das ist, was du beschrieben hast ...
                nachdem ich drüber geschlafen habe, ist das eigentliche "problem" doch ein anderes
                zum einen gings mir natürlich darum, dass eine änderung an der mysql-tabelle vom xml-schema "erkannt" wird, so dass die gegenpartei weiß, "aha, hier hat sich etwas geändert". das deckt ja mein obiges schema bereits ab.

                jetzt wäre es noch schön, wenn das schema "selbsterklärend" ist. also die id-werte-paare aus dem schema hervorgehen, wie in einer mysql-tabelle eben. so dass du aus dem schema ablesen kannst, welche id/werte von der drop-down-list kommen können. ansonsten müsste ich dir zusätzlich noch eine separate übersicht zukommen lassen, in der diese beziehung erklärt ist (exceltabelle, worddokument ...).

                aber ich werde es jetzt letztendlich wohl doch so lösen.
                ich danke euch beiden.

                Kommentar

                Lädt...
                X