JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=025921896893882c6b569a3d4c137fc6Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

XSD-Validierung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 23.08.2006, 17:12    Titel: XSD-Validierung Antworten mit Zitat

Hallo, vielleicht kann mir ja jemand helfen:
Ich benötige für ein Programm mehrere XML-Dateien, welche durch ein passendes XSD validiert werden kann, da die XML-Dateien sich teilweise meiner Kontrolle entziehen und mein Programm diese trotzdem sauber verarbeiten soll. Eine Validierung ist deshalb das Mittel zum Zweck - nebenbei ist es auch guter Stil^^
So: Die XML-Datei soll folgendermassen aussehen:
Code:

<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns="http://tempuri.org/Settings.xsd">
   <Menus>
      <Menu Name="DateiMenu">
         <MenuItem Id="0x00000101" />
         <MenuItem Id="0x00000102" />
         <MenuItem Id="0x00000103" />
         <MenuItem Id="0x0000ffff" />
         <MenuItem Id="0x00000199" />
      </Menu>
      <Menu Name="MainMenu">
         <SubMenu Id="0x00000100" Ref="DateiMenu" />
         <SubMenu Id="0x00000200" Ref="BearbeitenMenu" />
      </Menu>
   </Menus>
   <Toolbars />
</Settings>


Das dazu passende XSD:
Code:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema
   id="Settings"
   targetNamespace="http://tempuri.org/Settings.xsd"
   elementFormDefault="qualified"
   attributeFormDefault="unqualified"
   xmlns="http://tempuri.org/Settings.xsd"
   xmlns:mstns="http://tempuri.org/Settings.xsd"
   xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="Settings" type="SettingsType" />
   <xs:group name="MainGroup">
      <xs:sequence>
         <xs:element name="Menus" type="MenusType" />
         <xs:element name="Toolbars" type="ToolbarsType" />
      </xs:sequence>
   </xs:group>
   <xs:complexType name="SettingsType">
      <xs:group minOccurs="1" maxOccurs="1" ref="MainGroup" />
   </xs:complexType>
   <xs:complexType name="MenusType">
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
         <xs:element name="Menu" type="MenuType" />
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="MenuType">
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
         <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element name="SubMenu" type="SubMenuType" />
            <xs:element name="MenuItem" type="MenuItemType" />
         </xs:choice>
      </xs:sequence>
      <xs:attribute name="Name" type="xs:string" use="required" />
   </xs:complexType>
   <xs:complexType name="SubMenuType">
      <xs:attribute name="Id" type="HexType" use="required" />
      <xs:attribute name="Ref" type="xs:string" use="required" />
   </xs:complexType>
   <xs:complexType name="MenuItemType">
      <xs:attribute name="Id" type="HexType" use="required" />
   </xs:complexType>
   <xs:complexType name="ToolbarsType" />
   <xs:simpleType name="HexType">
      <xs:restriction base="xs:string">
         <xs:pattern value="0x[0-9a-f]{8}" />
      </xs:restriction>
   </xs:simpleType>
</xs:schema>

Wie man jetzt sehen kann (oder auch nicht) habe ich im Moment keine Bedingung gesetzt, dass das RefAttribut von SubMenu einem NameAttribut von Menu entsprechen muss - oder anders ausgedrückt, dass das obrige XML nicht Valid ist, weil es dort kein BearbeitenMenu gibt.
Genau dass muss aber noch in der XSD-Prüfung untergebracht werden.
kann mir dabei jemand helfen?

PS.: Das Toolbar-Element ist noch in der Entwicklung und auch das MenuElement ist noch nich komplett. Es wird noch ein optimales BildID-Attribut geben, welches von MenuItem verwendet wird. Das ID-Attribut von MenuItem ist einer Sprachspezifischen XML zugeordnet, welche die MenuStrings für die jeweilige Sprache anhand der ID verwaltet. Ich weiss nicht, ob es jetzt noch zusätzlich möglich ist, im XSD das Vorhandensein der ID-Elemente in einer anderen XML-Datei zu checken - wäre jedenfalls cool.
PPS.: Wie wäre es mit einem Syntaxhighliting für XML / HTML? [xml]...[/xml]
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 23.08.2006, 19:39    Titel: Antworten mit Zitat

Nach ein bisschen rumsuchen hab ich glaube ich das was du suchst gefunden:
Das ganze nennt sich Identity-constraint Definitions und wird auch für Menschen verständlich beschrieben.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum