Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
XML-Schema [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
XML-Schema


 
3DMax
25-03-2008, 10:22 
 
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:

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:

<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:

<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?

 
tontechniker
25-03-2008, 13:45 
 
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?

 
3DMax
25-03-2008, 14:14 
 
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.

 
tontechniker
25-03-2008, 19:16 
 
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.

 
3DMax
25-03-2008, 20:17 
 
Original geschrieben von tontechniker
Korrigier mich, aber das Schema hat doch afaik absolut nichts mit den Inhalten zutun.
:confused: und womit hat es deiner meinung nach etwas zu tun?
XML Schema (http://de.wikipedia.org/wiki/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 ;)

 
ZombieChe
25-03-2008, 21:44 
 
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...

 
tontechniker
25-03-2008, 23:32 
 
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.

 
3DMax
26-03-2008, 10:21 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:06 Uhr.