Laden...

Anfängerfrage - XML Schema

Erstellt von lex vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.214 Views
L
lex Themenstarter:in
113 Beiträge seit 2004
vor 17 Jahren
Anfängerfrage - XML Schema

Guten Tag,

ich habe ein Programm geschrieben, was eine XML Datei als Konfigurationsgrundlage nutzt. Nun wurde mir aufgetragen gegen ein XML Schema zu prüfen.

Ich versteh nun noch nicht so richtig wofür ich diese Prüfung brauche, bzw wie ich diese am besten umsetzen kann. Kann mir das mal einer leicht und verständlcih erklären... wieso und warum diese Prüfung erforederlich ist bzw was wäre wenn diese prüfung nicht stattfinden würde?

Danke.

mfg
lex

B
1.529 Beiträge seit 2006
vor 17 Jahren

Für eine XML-Datei gibt es nur sehr wenige Regeln. Für dich ist aber wichtig, dass man jedes beliebige Tag in jeder Kombination mit anderen Tags und mit Attributen benutzen kann.
Ein Schema bringt jetzt aber Ordnung in das Chaos, in dem es erlaubte Tags, deren Stellung zu einander, Attribute und ähnliches definiert.
Erst durch die Prüfung kann man damit feststellen, ob eine gültige XML-Datei auch die benötigten Strukturen aufweist.
So stellt XHTML beispielsweise gültiges XML dar. Allerdings wird eine XHTML-Datei wohl kaum als sinnvolle Konfigurationsdatei für dein Programm dienen können, da sie eben nicht die von dir gestellten Anforderungen an die Struktur erfüllt.

B
9 Beiträge seit 2006
vor 17 Jahren

Hallo,

an diesem Punkt bin ich auch gerade. Wie macht man das eigentlich?

Ich habe folgende Zeile zu erstellen in einem XML Dokument, das ich schreibe:


<?xml version="1.0"?>
<METADATA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.test.com/my.xsd">
<inhalt>DatenOderso</inhalt>
<METADATA >[/csharp]

Um das Dokument zu erstellen nehme ich


            string filename = "mein.xml";
            XmlTextWriter tw = new XmlTextWriter(filename, Encoding.UTF8);
            tw.Formatting = Formatting.Indented;
            tw.WriteStartDocument();

Wie teile ich mit, dass ich gegen ein Schema, das online verfügbar ist validieren möchte und auch das vorhergehende Namespace deklariert wird?

Ich habe schon einmal versucht diese METADATA-Zeile (mit xsi und Adresse) einfach als String als Elementnamen zu übergeben - aber ergab logischerweise auch einen entsprechenden Endtag. Also nicht nur </METADATA> als Endtag, sondern den ganzen String...

Bin dankbar für jeden Tipp.

Ray

B
9 Beiträge seit 2006
vor 17 Jahren

Okay, die Frage war eine Anfängerfrage und eben bin ich drauf gekommen: ich muss einfach nur das Namespace und die xsi-Adresse als Attribute übergeben, und schon tut es 🙂

Grüße

Ray