Hallo zusammen,
ich habe das Problem, dass mir mein Endtag fehlt, falls ich keine Kindknoten einfüge.
Wie kann ich diesen erzeugen. CreateElement liefert mir ja laut Doku nur einen Prefix
// Neues Element erstellen und einfügen
XmlNode productsNode = doc.CreateElement("products");
XmlAttribute productsAttribute = doc.CreateAttribute("cd");
productsAttribute.Value = dudConf.SelectedItem.ToString();
productsNode.Attributes.Append(productsAttribute);
doc.AppendChild(productsNode);
Ich erhalte <products cd="abcd"> ohne schließendes Tag
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
Original von wds
Ich erhalte <products cd="abcd"> ohne schließendes Tag
also, ich würde behaupten du bekommst <products cd="abcd"/>, was soviel bedeutet wie dass der Tag wieder geschlossen wurde.
-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).
Mein Blog: Yellow's Blog auf sqlgut.de
stimmt du hast Recht.
Ich erhalte
<products cd="abcd"/>
Ich brauche aber unbedingt
<products cd="abcd">
<products/>
da die Datei sonst nicht schemenkonform wäre.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
hallo wds,
du könntest die XML-Daten mit einem XmlTextWriter in einen Stream oder eine Datei schreiben. Der XmlTextWriter hat Methoden wie "WriteFullEndElement" um ein abschliessendes End-Tag zu einem Leerknoten zu schreiben.
-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).
Mein Blog: Yellow's Blog auf sqlgut.de
Ich brauche aber unbedingt
<products cd="abcd">
<products/>da die Datei sonst nicht schemenkonform wäre.
XML-konform müsste es auch
<products cd="abcd">
</products>
heißen, oder halt als Kurzform
<products cd="abcd" />
hey Borg,
<products/>
du hast recht, das habe ich in der Eile garnicht bemerkt ;o), aber ich denke wds hat schon </products> gemeint. Andererseits, müsste das Dokument doch als valide gelten, auch wenn kein extra Tag zum schliessen angegeben ist...
-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).
Mein Blog: Yellow's Blog auf sqlgut.de
8o upps, das stimmt. So wird das Tag wohl nicht geschlossen...
Wie lautet denn das Schema, damit die Kurzform akzeptiert wird?
Anbei der Teil meines Schemas, der die Form des äußeren Knotens vorgibt.
...
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="product" type="product" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="cd" type="xsd:string" />
</xsd:complexType>
</xsd:element>
...
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
Hi
Eigentlich sollte ja beides funktionieren.
Was ist denn deine Fehlermeldung?
Nun, ich erhalte keine Fehlermeldung. Mein Validator liefert mir halt "false" für einen solchen Knoten.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
aha seltsam..
post mal den knoten product vielleicht liegt ja da der hund begraben
nicht valide:
<products cd="abcd" />
valide:
<products cd="abcd" />
...
</products>
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
Hallo,
also wenn das als ungültig:
<products cd="abcd" />
und das als gültig
<products cd="abcd" />
...
</products>
bezeichnet wird, dann behaupte ich mal, dass das Problem an einem ganz anderen Element liegt und gegen die Regeln zur Verschachtelung verstoßen wird.
Gruß Jürgen
PS. Xml ist nicht mein Arbeitsgebiet; aber soviel habe ich bei meiner Arbeit mit XmlSchema gelernt.
ich meinte den knoten für product im xml schema file.
du referenzierst ja mit type="product" darauf. wahrscheinlich erlaubst du dort keinen content.
Das ist mein Schema:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="product">
<xsd:sequence>
<xsd:element name="category" type="xsd:string" />
<xsd:element name="label" type="xsd:string" />
<xsd:element name="document" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="code" type="xsd:string" />
</xsd:complexType>
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="product" type="product" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="cd" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Es werden zwei XML-Dateien erstellt (Dokument-Sprache deutsch / englisch).
Falls kein Dokument auf Englisch existiert, so muss die Grundstruktur (products) angelegt werden.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf."
K.Zuse
hi
laut deinem schema ist nur folgendes gültig
<products cd="sasa">
<product>
<category>asdfa</category>
<label>asdfdf </label>
<document> asdfdf </document>
</product>
</products>
du musst dein schema anpassen
schau am besten bei www.zvon.org
oder gleich bei w3c.org
schau nach dem MIXED oder ANY attribut, weiß nicht auswendig