Hallo,
Ich habe ein Problem. Ich habe eine XMLdatei und möchte diese in C# nun gegen ein Schema validieren, dazu erstelle ich seit Tagen eine XSD, aber irgendwie habe ich einen Fehler drin, den ich nicht sehe. Vielleicht könnte mir jemand von euch helfen.
Bei der XMLdatei handelt es sich um eine macrosammlung mit der ich Tastatureingaben speichern möchte. Es gibt drei Befehle:
- keydown
- keyup
- pause
"keydown" und "keyup" dürften selbsterklärend sein. "pause" gibt eine Zeitspanne in Millisekunden an. Die Werte für "keyup" und "keydown" sind ENUMs. Es gibt einen Roottag "scripts" mit beliebig vielen "script"-tags. Jedes script hat eine eindeudige ID(GUID) und eine Beliebige Abfolge der drei Grundbefehle.
XML:
Hier ist meine XSD:
Für mein Verständnis dürfte alles richtig sein, aber leider ist dem nicht so. Wenn ich die Instanz validiere, bekomme ich folgende Fehlermeldung:
Ich bin echt für jeden Hinweis dankbar!
Darüber hinaus habe ich noch eine Frage. Soweit ich weiss, ist die Reihenfolge der Tags auf einer Ebene nach den XML-Regeln nicht von Belang. Das wiederspricht jedoch meinen Scripts, denn die einzelnen Befehle haben ja eine Ordnung. Gibt es da ein Kommando, das ich in die Instanz einfügen kann, um einem Verarbeitenden Programm zu sagen, dass im Script-tag die Order eine Rolle spielt?
lg,
misch
Ich habe ein Problem. Ich habe eine XMLdatei und möchte diese in C# nun gegen ein Schema validieren, dazu erstelle ich seit Tagen eine XSD, aber irgendwie habe ich einen Fehler drin, den ich nicht sehe. Vielleicht könnte mir jemand von euch helfen.
Bei der XMLdatei handelt es sich um eine macrosammlung mit der ich Tastatureingaben speichern möchte. Es gibt drei Befehle:
- keydown
- keyup
- pause
"keydown" und "keyup" dürften selbsterklärend sein. "pause" gibt eine Zeitspanne in Millisekunden an. Die Werte für "keyup" und "keydown" sind ENUMs. Es gibt einen Roottag "scripts" mit beliebig vielen "script"-tags. Jedes script hat eine eindeudige ID(GUID) und eine Beliebige Abfolge der drei Grundbefehle.
XML:
HTML Code:
<?xml version="1.0" ?> <dkt:scripts xmlns:dkt="myns/"> <dkt:script id="0xA8FC3738372F11DD8A57FDC255D89593"> <dkt:keydown>D1</dkt:keydown> <dkt:pause>1</dkt:pause> <dkt:keyup>D1</dkt:keyup> </dkt:script> <dkt:script id="0xAE808E48372F11DD9F5929C355D89593"> <dkt:keydown>D1</dkt:keydown> <dkt:pause>1</dkt:pause> <dkt:keyup>D1</dkt:keyup> </dkt:script> </dkt:scripts>
HTML Code:
<?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns="myns/" targetNamespace="myns/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="scripts" > <xsd:complexType> <xsd:choice> <xsd:element name="script" type="SCRIPT" minOccurs="0" maxOccurs="unbounded" /> </xsd:choice> <xsd:attribute name="id" type="GUID" /> </xsd:complexType > </xsd:element> <xsd:complexType name="SCRIPT" > <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="pause" type="xsd:nonNegativeInteger" /> <xsd:element name="keydown" type="KEYS" /> <xsd:element name="keyup" type="KEYS" /> </xsd:choice> </xsd:complexType> <xsd:simpleType name="GUID"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\{[a-fA-F0-9]{32}" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="KEYS"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Esc" /> <xsd:enumeration value="F1" /> <xsd:enumeration value="F2" /> <xsd:enumeration value="F3" /> <xsd:enumeration value="F4" /> <xsd:enumeration value="F5" /> <xsd:enumeration value="F6" /> <xsd:enumeration value="F7" /> <xsd:enumeration value="F8" /> <xsd:enumeration value="F9" /> <xsd:enumeration value="F10" /> <xsd:enumeration value="F11" /> <xsd:enumeration value="F12" /> <xsd:enumeration value="Zirkumflex" /> <xsd:enumeration value="D1" /> <xsd:enumeration value="D2" /> <xsd:enumeration value="D3" /> <xsd:enumeration value="D4" /> <xsd:enumeration value="D5" /> <xsd:enumeration value="D6" /> <xsd:enumeration value="D7" /> <xsd:enumeration value="D8" /> <xsd:enumeration value="D9" /> <xsd:enumeration value="D0" /> <xsd:enumeration value="Sz" /> <xsd:enumeration value="Akut" /> <xsd:enumeration value="Backspace" /> <xsd:enumeration value="Tab" /> <xsd:enumeration value="Q" /> <xsd:enumeration value="W" /> <xsd:enumeration value="E" /> <xsd:enumeration value="R" /> <xsd:enumeration value="T" /> <xsd:enumeration value="Z" /> <xsd:enumeration value="U" /> <xsd:enumeration value="I" /> <xsd:enumeration value="O" /> <xsd:enumeration value="P" /> <xsd:enumeration value="Uuml" /> <xsd:enumeration value="Add" /> <xsd:enumeration value="Return" /> <xsd:enumeration value="Capslock" /> <xsd:enumeration value="A" /> <xsd:enumeration value="S" /> <xsd:enumeration value="D" /> <xsd:enumeration value="F" /> <xsd:enumeration value="G" /> <xsd:enumeration value="H" /> <xsd:enumeration value="K" /> <xsd:enumeration value="L" /> <xsd:enumeration value="Ouml" /> <xsd:enumeration value="Auml" /> <xsd:enumeration value="Raute" /> <xsd:enumeration value="Lshift" /> <xsd:enumeration value="Less" /> <xsd:enumeration value="Y" /> <xsd:enumeration value="X" /> <xsd:enumeration value="C" /> <xsd:enumeration value="V" /> <xsd:enumeration value="B" /> <xsd:enumeration value="N" /> <xsd:enumeration value="M" /> <xsd:enumeration value="Comma" /> <xsd:enumeration value="Point" /> <xsd:enumeration value="Subtract" /> <xsd:enumeration value="Rshift" /> <xsd:enumeration value="Lcontrol" /> <xsd:enumeration value="Lwin" /> <xsd:enumeration value="Lalt" /> <xsd:enumeration value="Space" /> <xsd:enumeration value="Altgr" /> <xsd:enumeration value="Rwin" /> <xsd:enumeration value="Application" /> <xsd:enumeration value="Rcontrol" /> <xsd:enumeration value="Print" /> <xsd:enumeration value="Roll" /> <xsd:enumeration value="Pause" /> <xsd:enumeration value="Insert" /> <xsd:enumeration value="Home" /> <xsd:enumeration value="Pakeup" /> <xsd:enumeration value="Del" /> <xsd:enumeration value="End" /> <xsd:enumeration value="Pagedown" /> <xsd:enumeration value="Left" /> <xsd:enumeration value="Up" /> <xsd:enumeration value="Right" /> <xsd:enumeration value="Down" /> <xsd:enumeration value="NumLock" /> <xsd:enumeration value="NumDivide" /> <xsd:enumeration value="NumMultiply" /> <xsd:enumeration value="NumSubtract" /> <xsd:enumeration value="Num7" /> <xsd:enumeration value="Num8" /> <xsd:enumeration value="Num9" /> <xsd:enumeration value="NumAdd" /> <xsd:enumeration value="Num4" /> <xsd:enumeration value="Num5" /> <xsd:enumeration value="Num6" /> <xsd:enumeration value="Num1" /> <xsd:enumeration value="Num2" /> <xsd:enumeration value="Num3" /> <xsd:enumeration value="Numenter" /> <xsd:enumeration value="Num0" /> <xsd:enumeration value="Numdecimal" /> </xsd:restriction> </xsd:simpleType> </xsd:schema>
HTML Code:
Line: 3 - Position: 3 - The element 'scripts' in namespace 'myns/' has invalid child element 'script' in namespace 'myns/'. List of possible elements expected: 'script'.
Darüber hinaus habe ich noch eine Frage. Soweit ich weiss, ist die Reihenfolge der Tags auf einer Ebene nach den XML-Regeln nicht von Belang. Das wiederspricht jedoch meinen Scripts, denn die einzelnen Befehle haben ja eine Ordnung. Gibt es da ein Kommando, das ich in die Instanz einfügen kann, um einem Verarbeitenden Programm zu sagen, dass im Script-tag die Order eine Rolle spielt?
lg,
misch
Comment