Paul: PHP DOM, welche Elemente sind Pflichtfelder laut xsd?

Moin,
kann man, wenn man ein xml-file und dessen xsd-file hat, per PHP DOM herausfinden welche Elemente im xml Pflichtfelder sind? Und wenn ja, wie?

Paul

  1. Hi!

    kann man, wenn man ein xml-file und dessen xsd-file hat, per PHP DOM herausfinden welche Elemente im xml Pflichtfelder sind? Und wenn ja, wie?

    Ein XML-Schema-Dokument ist auch nichts weiter als ein XML-Dokument welches man parsen und auf das man XPath anwenden kann.

    Lo!

    1. Hi!

      kann man, wenn man ein xml-file und dessen xsd-file hat, per PHP DOM herausfinden welche Elemente im xml Pflichtfelder sind? Und wenn ja, wie?

      Ein XML-Schema-Dokument ist auch nichts weiter als ein XML-Dokument welches man parsen und auf das man XPath anwenden kann.

      Klar. Aber Tagnamen können gleich sein. D.h. man kann wenn nach dem Tag "Bezeichnung" gesucht wird keinen xpath wie "//*/Bezeichnung" angeben.
      Und wenn man den Pfad ganz ausschreibt sieht das so aus:

      Für xsd:
      /xs:schema/xs:complexType/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element[@name="Bezeichnung"]

      Für xml:
      /meinNS:profil/meinNS:Titeldaten/meinNS:TK/meinNS:Bezeichnung

      Wie soll man das vergleichen?

      Ganz wild wird's dann noch, wenn man die XSD's auf mehrere Dateien aufgeteilt hat und mit Namespaces arbeitet.

      1. Hi!

        Aber Tagnamen können gleich sein. [...] Wie soll man das vergleichen?

        Wenn die in unterschiedlichen Ebenen liegen, bleibt dir wohl nichts anderes übrig, als genau diese Ebenen in deine Abfrage mit einzubeziehen. Da kannst du dich nur bei dem Bedanken, der das Schema so implementiert hat. Vielleicht brauchst du ja nur den Namen vom Elternelement einzubeziehen, dann wird die Abfrage etwas kürzer.

        Ganz wild wird's dann noch, wenn man die XSD's auf mehrere Dateien aufgeteilt hat und mit Namespaces arbeitet.

        Also noch ein bis mehrere Dankeschöns :-)

        Lo!