| 

.NET C# Java Javascript Exception

2
Hallo,

edit: Ich habe die Frage etwas angepasst, da die Validierung nun auch im C# fehlschlägt.

Ich beschäftige mich mit einem XML-Dokument, bei dem sowohl XMLSpy als auch Liquid XML Studio, beides professionelle XML-Editoren, an einer bestimmten Stelle des Schemas, dass an das XML-Dokument geknüpft wurde, einen Fehler melden. Das XML-Dokument und das Schema wird von einer etablierten Organisation bereitgestellt, die seit Jahren diese XML-Strukturen vermarktet. Kurzum, was ich damit sagen will ist: Ich glaube nicht das es ein Syntaxfehler ist.

Die XML-Datei kann hier heruntergeladen werden:XML-Datei (eClass8_0_ADVANCED_DE_SG_19010202.xml)

XSD1:
<xs:schema xmlns="urn:iso:std:iso:is:13584:-32:ed-1:tech:xml-schema:ontoml" xmlns:idt="urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:is:13584:-32:ed-1:tech:xml-schema:ontoml" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:import namespace="urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier" schemaLocation="./ISO29002/identifier.xsd"/>
<xs:simpleType name="APosterioriSemanticRelationId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#CE\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#CE\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#CE\-([A-Z0-9_:\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ClassId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#01\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#01\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#01\-([A-Z0-9_:\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ConstraintId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#04\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#04\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#04\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CurrencyId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#08\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#08\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#08\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DataTypeId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#09\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#09\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#09\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DicUnitId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#05\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#05\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#05\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DicValueId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#07\-([A-Z0-9:_\.]{1,35})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#07\-([A-Z0-9:_\.]{1,35})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#07\-([A-Z0-9:_\.]{1,35})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DocumentId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#10\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#10\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#10\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OntologyId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#11\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#11\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#11\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PropertyId">
<xs:restriction base="idt:IRDI_type">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?#02\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#02\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})#02\-([A-Z0-9:_\.]{1,71})#[0-9]{1,9}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SupplierId">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})(\-([A-Z0-9:_\.]{1,35})((\-[019])(\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5}))?)?)?"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-([A-Z0-9:_\.]{1,35})\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})"/>
<xs:pattern value="([0-9]{4})\-([A-Z0-9:_\.]{1,35})\-\-\-([A-Z0-9]{1,10})_([A-Z0-9]{0,10})_([0-9]{1,5})"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CLASS_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="class_ref" type="ClassId" use="required"/>
</xs:complexType>
<xs:complexType name="CLASSES_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="class" type="CLASS_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DATATYPE_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="datatype_ref" type="DataTypeId" use="required"/>
</xs:complexType>
<xs:complexType name="DATATYPES_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="datatype" type="DATATYPE_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DIC_UNIT_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="dic_unit_ref" type="DicUnitId" use="required"/>
</xs:complexType>
<xs:complexType name="DIC_UNITS_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="dic_unit" type="DIC_UNIT_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DICTIONARY_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="dictionary_ref" type="OntologyId" use="required"/>
</xs:complexType>
<xs:complexType name="DICTIONARIES_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="dictionary" type="DICTIONARY_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DOCUMENT_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="document_ref" type="DocumentId" use="required"/>
</xs:complexType>
<xs:complexType name="DOCUMENTS_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="document" type="DOCUMENT_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PROPERTY_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="property_ref" type="PropertyId" use="required"/>
</xs:complexType>
<xs:complexType name="PROPERTIES_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="property" type="PROPERTY_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SUPPLIER_REFERENCE_Type" abstract="false" mixed="false">
<xs:attribute name="supplier_ref" type="SupplierId" use="required"/>
</xs:complexType>
<xs:complexType name="SUPPLIERS_REFERENCE_Type" abstract="false" mixed="false">
<xs:sequence>
<xs:element name="supplier" type="SUPPLIER_REFERENCE_Type" nillable="false" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>


XSD2:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE xs:schema [
<!ENTITY % identifier.dtd SYSTEM "identifier.dtd">
%identifier.dtd;
]>
<xs:schema targetNamespace="urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier"
xmlns:id="urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<!-- IRDI -->
<xs:element name="IRDI" type="id:IRDI_type"/>
<xs:element name="IRDI_list" type="id:IRDI_list_type"/>
<xs:simpleType name="IRDI_type">
<xs:restriction base="xs:string">
<xs:pattern value="&irdi1;"/>
<xs:pattern value="&irdi2;"/>
<xs:pattern value="&irdi3;"/>
</xs:restriction>
</xs:simpleType>
<!-- IRDI sequence -->
<xs:complexType name="IRDI_sequence_type">
<xs:sequence>
<xs:element ref="id:IRDI" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- IRDI list-->
<xs:simpleType name="IRDI_list_type">
<xs:list itemType="id:IRDI_type"/>
</xs:simpleType>
</xs:schema>



Beide XML-Editoren haben ab dieser Stelle ein Problem im XSD festgestellt:
<xs:pattern value="&irdi1;"/>

Genauer gesagt bei "&irdi1; (wahrscheinlich auch bei den beiden darunter)". Wie ich das verstehe, ist das "&irdi1;" ein Platzhalter für einen regular expression, der im DTD definiert wird.

Das DTD, was vermutlich integriert wird, soweit ich das als Laie beurteilen kann (siehe XSD):
<!-- Digits: 0-9 -->
<!ENTITY digit "0-9">
<!-- Internal separator character -->
<!ENTITY res ":_\.">
<!-- Alphanumeric character -->
<!ENTITY alnum "0-9A-Z">
<!-- Safe character -->
<!ENTITY safe "&alnum;&res;">
<!-- International Code Designator (ICD) -->
<!ENTITY icd "[&digit;]{4}">
<!-- Organization Identifier (OI) -->
<!ENTITY oi "[&safe;]{1,35}">
<!-- Organization Part Identifier (OPI) -->
<!ENTITY opi "[&safe;]{1,35}">
<!-- Organization Part Identifier Source (OPIS) -->
<!ENTITY opis "[&alnum;]{1,1}">
<!-- Additional Information (AI)-->
<!ENTITY ai "[&safe;]{1,70}">
<!-- Code Space Identifier (CSI) -->
<!ENTITY csi "[&alnum;]{2,2}">
<!-- Item Code (IC) -->
<!ENTITY ic "[&safe;]{1,131}">
<!-- Registration Authority Identifier (RAI) -->
<!ENTITY rai1 "&icd;-&oi;(-&opi;(-&opis;(-&ai;)?)?)?">
<!ENTITY rai2 "&icd;-&oi;(-&opi;)?--&ai;">
<!ENTITY rai3 "&icd;-&oi;---&ai;">
<!-- Data Identifier -->
<!ENTITY di "&csi;-&ic;">
<!-- Version Identifier (VI) -->
<!ENTITY vi "[0-9]{1,10}">
<!-- International Registration Data Identifier (IRDI) -->
<!ENTITY irdi1 "&rai1;(#&di;#&vi;)?">
<!ENTITY irdi2 "&rai2;(#&di;#&vi;)?">
<!ENTITY irdi3 "&rai3;(#&di;#&vi;)?">


Mein Code:
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.ValidationType = ValidationType.Schema;
xmlReaderSettings.IgnoreComments = true;
xmlReaderSettings.IgnoreWhitespace = true;
xmlReaderSettings.IgnoreProcessingInstructions = true;
xmlReaderSettings.ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.ProcessSchemaLocation;

XmlReader reader = XmlReader.Create("eClass8_0_ADVANCED_DE_SG_19010202.xml" ,xmlReaderSettings);

while (reader.Read())
{}


Beim Lesen (reader.Read()) kommt es zu dieser Exception :
'urn:iso:std:iso:ts:29002:-5:ed-1:tech:xml-schema:identifier:IRDI_type' is not declared, or is not a simple type

SourceUri "http://www.eclass.eu/static/eClassXML/2.0/ontoML/identifier.xsd" also XSD1


Wenn ich das richtig interpretiere, lädt der XmlReader unter anderem die XSD1 und versucht die Definition von itd:IRDI-type aus der XSD2 zu laden. Dort kommt es zu irgendeinem Problem, was dazu führt, dass die Definition nicht geladen werden kann und idt:IRDI_type somit undefiniert ist, was der Debugger anmeckert. Ich glaube das die DTD fehlerhaft importiert wird, nur wie gehe ich damit um?
News:
12.03.2014
Siggi 229 7
2 Antworten
2
Also mein VS 2012 zeigt alles korrekt an. &irdi1 bis &irdi3 werden sauber aufgrund der Entity Angabe in der DTD aufgelöst und angezeigt. Wichtig ist halt, dass Dein DTD in einer Datei mit dem Namen identifier.dtd auf der Platte im gleichen Verzeichnis wie Deine XSD Datei ist, damit ein XML Editor das ganze interpretieren kann.
12.03.2014
JEwen 2,7k 5
Super. Wie hast du das überprüft?

Kannst du das auch für diese URL Prüfen:

http://www.eclass.eu/static/eClassXML/2.0/ontoML/ISO29002/identifier.xsd

die identifier.dtd ist in dem selben Pfad wie die XSD.
Siggi 12.03.2014
Nein, da funktioniert es nicht. Es sieht so aus, als würde die dtd Datei nicht gefunden.
JEwen 12.03.2014
0
Hallo Siggi,

ich habe das gleiche Problem. Hast du mittlerweile eine Lösung gefunden?

Gruß JTM
18.08.2014
JTM 1
Ich habe die [url=http://social.msdn.microsoft.com/Forums/en-US/67ec943b-3b9f-47fe-8f70-d2fe97f0f020/cvalidation-error-xsd-importing-dtd?forum=xmlandnetfx]Frage[/url] noch in einem MSDN Forum gepostet. Jaw111 hat eine Antwort gegeben, die bei ihm funktioniert hat, bei mir leider nicht. Vielleicht bringt dich das etwas weiter. Ich musste auf die Validierung leider verzichten.
Siggi 18.08.2014

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH