XML-Vergleich mit Bedingungen
JohnMurdoch
- xml
Hallo zusammen,
ich suche nach einem Tipp mit welcher Technik ich am besten 2 XML Dateien vergleichen (o. validieren) kann.
Damit meine ich nicht das gewöhnliche compare/diff, sondern
es muss eine möglichkeit geben bei der basis-datei bedingungen zu knüpfen.
in etwa so:
A.XML:
<root>
<sub>
<element A name='Hans'/>
<element A name='Rudi'/>
<element A name='Helmut'/>
</sub>
</root>
BASISDATEI.XML:
<root>
<sub>
<element A name='Hans'/>
<bedingung wert='xor'>
<element A name='Rudi'/>
<element A name='Silke'/>
</bedingung>
<element A name='Helmut'/>
</sub>
</root>
Obiger Vergleich wäre ok, da die Basis-Datei sagt dass zwischen Hans und Helmut entweder Silke oder Rudi auftreten muss.
Frage: Gibt es eine Möglichkeit per XSD dies zu realisieren? Oder muss man sich den Aufwand machen und einen kleinen Interpreter schreiben?
ich benutze übrigens Perl
Hallo,
meines Wissens nach bietet XSD für solch ein Vorhaben keine Unterstützung.
Du kannst mit XSD zwar Werte für Attribute auf eine Liste (enumeration) einschränken .. aber nicht die Reihenfolge in der sie auftreten müssen. (afaik)
Datei A.XML ist reines XML, kein XSD
BASISDATEI.XML ... dito
A.XML wirst du nicht gegen BASISDATEI.XML validieren können.
Du musst dir dann wohl wirklich eine kleine Komponente schreiben, welche die Logik aus BASISDATEI.XML auf A.XML anwenden kann.
Zum Bleistift könntest du aus BASISDATEI.XML mittels XSL(T) alle möglichen XML Dateien ableiten und diese dann gegen A.XML vergleichen
Aber ist die "Reihenfolge" nicht eigentlich unerheblich?
Ciao,, Frnk
Hallo,
meines Wissens nach bietet XSD für solch ein Vorhaben keine Unterstützung.
Du kannst mit XSD zwar Werte für Attribute auf eine Liste (enumeration) einschränken .. aber nicht die Reihenfolge in der sie auftreten müssen. (afaik)
Datei A.XML ist reines XML, kein XSD
BASISDATEI.XML ... dito
A.XML wirst du nicht gegen BASISDATEI.XML validieren können.Du musst dir dann wohl wirklich eine kleine Komponente schreiben, welche die Logik aus BASISDATEI.XML auf A.XML anwenden kann.
Zum Bleistift könntest du aus BASISDATEI.XML mittels XSL(T) alle möglichen XML Dateien ableiten und diese dann gegen A.XML vergleichen
Aber ist die "Reihenfolge" nicht eigentlich unerheblich?
Ciao,, Frnk
Hallo Frank,
leider ist die Reihenfolge wichtig, da es sich bei dem eigentlichen Inhalt der XML Dateien um Infos über Software-packages handelt welche in dieser Reihenfolge auf clients installiert werden.
Kann ich bei den enumerationen denn auch die werte festhalten oder nur die element-/ attributnamen (wie bei dtd) ?
Gruss
JM
Bitte nicht immer alles oben drüber oder unten drunter zitieren sondern nur das, worauf du dich im Einzelnen beziehst. Im Falle deines Postings wäre das gewesen:
Aber ist die "Reihenfolge" nicht eigentlich unerheblich?
Wenn dir die Reihenfolge so wichtig ist, dann versehe das XML bei der Erstellung mit Ordnungsnummern bzw. mit den Versionsnummern.
Kann ich bei den enumerationen denn auch die werte festhalten oder nur die element-/ attributnamen (wie bei dtd) ?
siehe XSD Facets
Gruss, Frank