 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 23.08.2006, 17:12 Titel: XSD-Validierung |
|
|
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 |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 23.08.2006, 19:39 Titel: |
|
|
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 |
|
 |
|
|
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
|