Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# XmlSchemaSet - mehrere xsd's (https://www.delphipraxis.net/144451-xmlschemaset-mehrere-xsds.html)

jfheins 8. Dez 2009 08:28


XmlSchemaSet - mehrere xsd's
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich habe im Moment folgenden Code:
Code:
               var doc = XDocument.Load(openFileDialog1.FileName);

                XmlSchemaSet schemas = new XmlSchemaSet();
                schemas.Add(null, @"C:\Dokumente und Einstellungen\master\Desktop\graphml\graphml-structure.xsd");
                schemas.Add(null, @"C:\Dokumente und Einstellungen\master\Desktop\graphml\graphml-parseinfo.xsd");
                schemas.Add(null, @"C:\Dokumente und Einstellungen\master\Desktop\graphml\graphml-attributes.xsd");
                schemas.Add(null, @"C:\Dokumente und Einstellungen\master\Desktop\graphml\graphml.xsd");
               
                schemas.Add(null, @"C:\Dokumente und Einstellungen\master\Desktop\graphml\my-ext.xsd");
               
                schemas.Compile(); // Hier kommen schon die Fehler

                doc.Validate(schemas, null, true);
Ich lade also mehrere Schemas in ein Set (GraphML-Schemas sind hier) und versuche, das Zeug dann zu benutzen. Geht aber nicht :stupid:

So wie es da oben steht bekomme ich diesen Fehler:
Zitat:

Das globale Element 'http://graphml.graphdrawing.org/xmlns:desc' wurde bereits deklariert.
Wenn ich ein paar Sachen auskommentiere, bekomme ich diesen Fehler:
Zitat:

Das Element 'http://graphml.graphdrawing.org/xmlns:data' darf kein untergeordnetes Element 'http://graphml.graphdrawing.org/xmlns:state' enthalten, da das Inhaltsmodell des übergeordneten Elements schreibgeschützt ist.
(konkret habe ich dafür jetzt die ersten drei auskommentiert, aber egal welche Kombination der graphML-Schemas ich benutze, ich bekomme immer einen der zwei Fehler)

Die einzige eigene datei "my-ext.xsd" habe ich mal angehängt.

Zu erwähnen wäre vll. noch dass der Oxygen XML Editor Version 10 absolut keine Probleme damit hat, die XML Datei gegen die Schemas zu validieren.

P.S.: Crosspost

Alaitoc 8. Dez 2009 08:51

Re: XmlSchemaSet - mehrere xsd's
 
Hm die my-ext.xsd hast du selbst erstellt oder?

Vll. liegts ja an :


Zitat:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://graphml.graphdrawing.org/xmlns"
xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:g="http://graphml.graphdrawing.org/xmlns" elementFormDefault="qualified">
Wäre so meine erste Vermutung...wobei mich das immer wiederholende
<xs:redefine schemaLocation="graphml.xsd"> auch stutzig macht :gruebel:

Edit: FreeLiquidXMLStudio meckert zumindest an ein paar Stellen.

MfG Alaitoc

jfheins 8. Dez 2009 09:55

Re: XmlSchemaSet - mehrere xsd's
 
Diesen zweiten Alias mit g brauchte ich hierfür:
XML-Code:
<xs:keyref name="StatePartidKeyRef" refer="StatePartidKey">
                        <xs:selector xpath="./g:connections/g:connection/g:part"/>
                        <xs:field xpath="@id"/>
                     </xs:keyref>
                     <xs:key name="StatePartidKey">
                        <xs:selector xpath="./g:parts/g:part"/>
                        <xs:field xpath="@id"/>
                     </xs:key>
Ich muss zugeben, ich habe bis vor einer Woche noch nie mit xsd's gearbeitet und einfach so lange herumprobiert, bis kein Fehler mehr kam und dr gewünschte Effekt da war (im Oxygen XML Editor 10)

Alaitoc 8. Dez 2009 14:08

Re: XmlSchemaSet - mehrere xsd's
 
Also bei mir zeigt er im LiquidXMLStudio sowie in meinem eigenen XML-Editor, dass
er Probleme mit dem redifine hat... von wegen "Schema konnte nicht aufgelöst werden".

Leider habe ich schon wieder alles verdrängt was mit Schemata und Co zu tun hat, aber
vll. hilft ja etwas Theorie weiter:

XML Schema Teil 0: Einführung

XML Schema Teil 1: Strukturen

XML Schema Teil 2: Datentypen

Sonst müsstest du halt etwas rumprobieren, bzw es einfach mal mit nem anderen Editor versuchen.

Vll liegts aber auch einfach nur daran das er irgendwie die Dateien nicht findet wo die Schemareferenzen drauf zeigen...
Ich glaube ich hatte mal so ein ähnliches Problem...ist aber leider zu lange her :gruebel:

MfG Alaitoc

jfheins 8. Dez 2009 16:07

Re: XmlSchemaSet - mehrere xsd's
 
Ich habs jetzt mit langem runprobieren so hinbekommen dass er es akzeptiert (ich lade jetzt nur noch meine xsd, die andere wird darin per import oder so referenziert)

Aber frag mich jetzt nicht, warum es gerade so funktioniert :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz