Sascha_M: Index werte in xml schema (xsd) hinterlegen

Hallo

weiss jemand ob es möglich ist, mit xml schema eine validierung für indexwerte zu hinterlegen, zurZeit nutzen wir nur string

<Index>1.2.3</Index>
<Index>1</Index>
<Index>1.2.3.1</Index>

Der Wert darf nicht mit einem Punkt enden und ansosnten nur Ganze Zahlen enthalten. Also etwa so:

Zahle . Zahl . Zahl. ... . Zahl

Geht dies mit xml Schema, ich habe bis jetzt keinen Weg gefunden, diese zu hinterlegen als muster.

  1. Hallo,

    weiss jemand ob es möglich ist, mit xml schema eine validierung für indexwerte zu hinterlegen, zurZeit nutzen wir nur string

    <Index>1.2.3</Index>
    <Index>1</Index>
    <Index>1.2.3.1</Index>

    Der Wert darf nicht mit einem Punkt enden und ansosnten nur Ganze Zahlen enthalten. Also etwa so:

    Zahle . Zahl . Zahl. ... . Zahl

    Geht dies mit xml Schema, ich habe bis jetzt keinen Weg gefunden, diese zu hinterlegen als muster.

    Das geht mit Schema schon, wenn du den RegExp dazu erstellst.

    <xsd:simpleType name="IndexNummer">
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="(\d.?)+"/>
        </xsd:restriction>
      </xsd:simpleType>

    Das "(\d(.)?)+" ist mal das einfachste mit oder ohne Punkt am Ende (ermöglich z.B:  0.123, 1.2.3.4, 12.3.4. etc.)

    Etwas komplizerter geht mit:
    <xsd:pattern value="([1-9].?(\d.?)*)?[^.]"/>
    (Werte mit + werden akzeptiert, mit - abgelehnt bei Validierung)

    • 12
    • abwsdf
    • 123.2sdfsfd
    • 0sdfsf.234
    • 122.4.4.5.5.
    • 1.0
    • 6
    • 10.2
    • 6.11.3
    • 12345
    • 0.6789

    Grüße
    Thomas

    1. Holy crap,

      das funktioniert sogar ;-) Perfekt and vielen Dank!

      <xsd:simpleType name="IndexNummer">
          <xsd:restriction base="xsd:string">
            <xsd:pattern value="(\d.?)+"/>
          </xsd:restriction>
        </xsd:simpleType>

      Bei dieser Vorgabe ist leider nocht der Punkt nach der letzten Zahl erlaubt. Die kompliziertere Variante funktioniert dagegen bestens. Darauf muss man erst einmal kommen.

      Gruß, Sascha