# XML Schema Validierung des Zahlenbereichs



## bronkowitz (8. Jul 2014)

Hallo,
ich versuche mich gerade in die XML-Schema Thematik einzuarbeiten. Folgendes Schema habe ich geschrieben:

[xml]<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <xs:element name="test">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="orientationAngle"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>        

    <xs:element name="orientationAngle">
        <xs:simpleType>
            <xs:restriction base="xs:double">
                <xs:minInclusive value="-180"/>
                <xs:maxInclusive value="180"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>    

</xs:schema>[/xml]

und diese Datei validiere ich (mit NetBeans und Online-Validierern)

[xml]<?xml version="1.0" encoding="UTF-8"?>

<test
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:noNamespaceSchemaLocation='test.xsd'>

    <orientationAngle>
        -181
    </orientationAngle>

</test>[/xml]

Ich verstehe nicht, warum hier kein Fehler angezeigt wird. Oder wird der zulässige Zahlenbereich von den Validierern nicht geprüft?

mfG
bronkowitz


----------



## knilch (11. Jul 2014)

Hi,
Ich bin mir nicht sicher, ob die restriction auf ein Element angewendet werden kann...
EDIT.... es geht auch auf Elemente:

Du musst im Schema:
stattt 
[XML]
 <xs:element name="orientationAngle"/>
[/XML]
ändern in
[XML]
<xs:element ref="orientationAngle"/>
[/XML]

Nachfolgend ein Beispiel, dass restrictions in attributen hat:
Schema:
[XML]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">
    <xs:element name="test">
        <xs:complexType>
            <xs:sequence>
				<xs:element ref="object" minOccurs="0" maxOccurs="2"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>        
	<xs:element name="object">
		<xs:complexType>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="orientationAngle" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="-180"/>
					<xs:maxInclusive value="180"/>
				</xs:restriction>
			</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
</xs:schema>
[/XML]
und das test.xml:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<test
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:noNamespaceSchemaLocation='test.xsd'>
	<object name="object 1" orientationAngle="-189"/>
	<object name="object 2" orientationAngle="179"/>
</test>
[/XML]
Die Validierung motzt in diesem Fall weil object 1 nicht im Range ist.

Vielleicht hilft dir das weiter.


----------



## bronkowitz (11. Jul 2014)

tut es, vielen Dank!


----------



## knilch (11. Jul 2014)

Bitte gerne


----------

