Sandra: XML-Schema einschränken von Zahlen-Wertebereichen

Hallo alle Mitglieder des Forums!

Ich suche schon seit längere Zeit im Internet über
Wertebeschränkungen von Zahlen.

Mein Ziel wäre das in dem Tag "<Zahl>" nur dies Zahlen eingegeben werden dürfen:

  • Komma sind möglich
  • maximal 16 Stellen
  • 0 ist nicht erlaubt

soweit bin ich derzeit gekommen!

<xs:simpleType name="kz">
  <xs:restriction base="xs:decimal">
   <xs:minInclusive value="-9999999999999.99"/>
   <xs:maxInclusive value="9999999999999.99"/>
   <xs:totalDigits value="15"/>
   <xs:fractionDigits value="2"/>
  </xs:restriction>
 </xs:simpleType>

Mein großes Problem ist die 0. Wie kann ich sich ausgrenzen?
danke im Vorhinein

  1. Hi,

    Mein großes Problem ist die 0. Wie kann ich sich ausgrenzen?

    ich muss gestehen, dass mir xs:\*/ nicht viel sagt; aber falls es was mit XSL zu tun hat, würde ich einfach mal bei xsl:if/ nachschlagen ;-)

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo!

      Danke für die Mühe, jedoch hat xs nichts mit xsl zu tun.
      Das xs ist einfach eine Namensraum-Bezeichnung.

      Der Code stammt von einem XML-Schema (Erweiterung von DTD).

      lg
      Sandra

      1. Hi,

        Danke für die Mühe, jedoch hat xs nichts mit xsl zu tun.
        Das xs ist einfach eine Namensraum-Bezeichnung.

        das dachte ich mir schon... Damit hast Du dummerweise aber das Problem, dass es nicht mehr ist als irgend ein XML. Es wurde für bestimmte Zwecke konzipiert. Für alle Zwecke, für die es nicht konzipiert wurde, ist es nicht geeignet. Und vor allem hast Du nur eine Struktur mit Inhalt, nicht mehr - irgend etwas, das im Prinzip mit XML nichts zu tun hat, muss die Struktur nebst ihrem Inhalt analysieren und darauf reagieren.

        Der Code stammt von einem XML-Schema (Erweiterung von DTD).

        Erweitere das Schema und oben erwähntes "irgend etwas".

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo

          irgend etwas, das im Prinzip mit XML nichts zu tun hat, muss die Struktur nebst ihrem Inhalt analysieren und darauf reagieren.

          Dies geschieht auch, aber ich möchte mein XML-File-Inhalte so gut wie möglich durch ein Schema einschränken.
          Man kann duch Pattern eigentlich schon vieles machen, und es wäre möglich, dass es vielleicht schon irgendwo schon ein pattern dafür gibt.

          trotzdem danke für deine Bemühungen.
          lg
          sandra

        2. Hallo Cheatah,

          Das xs ist einfach eine Namensraum-Bezeichnung.

          das dachte ich mir schon... Damit hast Du dummerweise aber das Problem, dass es nicht mehr ist als irgend ein XML.

          Nicht ganz. 'xs' ist der Namensraumbezeichnung für XML-Schema.

          Und vor allem hast Du nur eine Struktur mit Inhalt, nicht mehr - irgend etwas, das im Prinzip mit XML nichts zu tun hat, muss die Struktur nebst ihrem Inhalt analysieren und darauf reagieren.

          In diesem Fall hat es schon vie mit XML zu tun, XML-Schema ist eben dafür, dass man damit die Struktur eines XML-Dokuments beschreibt und gegenüber einer DTD hat sie eben den Vorteil, Datentypen (wie decimal, integer, string etc.) definieren zu können.
          Mit Inhalt hat eine Schema an sich nur insofern zu tun, dass man damit den Datentpy des Inhalts bestimmen kann.

          Grüße
          Thomas

  2. Hallo,

    Mein Ziel wäre das in dem Tag "<Zahl>" nur dies Zahlen eingegeben werden dürfen:

    • Komma sind möglich
    • maximal 16 Stellen
    • 0 ist nicht erlaubt

    Mein großes Problem ist die 0. Wie kann ich sich ausgrenzen?

    Wie du "dich" ausgrenzen kannst weiss ich nicht ;-)
    Aber was dir fehlt ist nur noch ein
    <pattern value=""/> innerhalb von <xs:restriction base="xs:decimal">
    wo du im value="" eine Reg.Express schreiben kannst, dass Nullen verbietet.

    Ich muss allerdings zugeben, dass ich mir schwer eine Anwendung vorstellen kann, wo 0 in einer Zahl (außer an der ersten Stelle)nicht erlaubt ist.

    Grüße
    Thomas