XML mit VBScript validieren
Gab
- xml
Hallo,
ich validiere eine XML-Datei auf ein Schema mit folgendem Code:
Dim oError As IXMLDOMParseError
Set oError = OrgDatei.Validate
If oError.errorCode <> 0 Then
strout = strout + vbTab _
+ "XMLDoc is not valid because " _
+ vbNewLine + oError.reason + vbNewLine
End If
Dabei wird als Fehler immer
-1072897501
Fehler bei der Überprüfung, da das Dokument nicht genau einen Stammknoten enthält.
Wie kann das kommen?
Prüfe ich das Dokument z.B. mit XMLSpy, bekomme ich diese Fehlermeldung nicht.
Danke
Gab
Fehler bei der Überprüfung, da das Dokument nicht genau einen Stammknoten enthält.
Wie kann das kommen?
Z.B. bei so einer Struktur:
<Name>Meier</Name>
<Vorname>Peter</Vorname>
Richtig wäre:
<person>
<Name>Meier</Name>
<Vorname>Peter</Vorname>
</person>
Siehe http://office.microsoft.com/de-de/infopath/HP010967281031.aspx (dort unter "XML-Regeln"), das ist - soweit ich weiß - allgemeingültige XML-Regel.
Prüfe ich das Dokument z.B. mit XMLSpy, bekomme ich diese Fehlermeldung nicht.
Kommt drauf an, was du prüfst: Die Wohlgeformtheit oder die Gültigkeit. Mehr kann man mangels Kenntnis deines XML und der DTD nicht sagen.
Siechfred
Vielen Dank. Das eigenartige ist nur, die Struktur hat nur einen Stammknoten:
<Eintrag>
- <Zeitstempel>
<Zeit>9:06:05</Zeit>
<Datum>2007-08-7</Datum>
</Zeitstempel>
- <ID>
<HauptID>282</HauptID>
<SubID>1</SubID>
</ID>
</Eintrag>
Das Schema sieht auch nur dieses vor. Wie kommt es also dann zu der Fehlermeldung?
Grüße
Gab
Vielen Dank. Das eigenartige ist nur, die Struktur hat nur einen Stammknoten:
Haben wir uns evtl. missverstanden? Das *Dokument* darf nur einen Stammknoten haben. Hättest du also mehrere Eintrag-Elemente, würde diese Regel verletzt werden. Ansonsten könnte der Fehler auch in der DTD liegen. Wie ist "Eintrag" dort definiert?
Siechfred
Das Schema sieht folgendermaßen aus:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Eintrag">
xs:complexType
xs:sequence
<xs:element name="Zeitstempel">
xs:complexType
xs:sequence
<xs:element name="Zeit" type="xs:time"/>
<xs:element name="Datum" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ID">
xs:complexType
xs:sequence
<xs:element name="HauptID"/>
<xs:element name="SubID"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Es darf also nur einen Stammknoten haben!
Danke
Gab
Das Schema sieht folgendermaßen aus:
[...]
Es darf also nur einen Stammknoten haben!
Das habe ich schon verstanden. Trotzdem scheint was nicht zu stimmen, allerdings ist XMLSchema nicht unbedingt meine Baustelle. Aber was sagt eigentlich http://tools.decisionsoft.com/schemaValidate/?
Siechfred
Das ist das Ergebnis:
XML Schema Validator
Well Formed: VALID
Schema Validation: VALID
Liegt es also doch an der Programmierung?
Danke
Gab
Liegt es also doch an der Programmierung?
Könnte sein, je nachdem, welche Version von MSXML du verwendest. Eine Kompatibilitätsübersicht gibt's hier:
http://msdn2.microsoft.com/en-us/library/ms757825.aspx
Vielleicht hilft dir die weiter.
Siechfred