Christian: ID als Element mit fixer Länge

Hallo,

ich habe eine Frage. Ich habe gerade eine XML Datei erstellt, die die wichtigsten Daten eines Ausweises enthält. Der Aufbau der Datei wurde in einer DTD festgelegt (ich weiss, ein Schema wäre besser - ich muss aber eine DTD verwenden).

Ich habe jetzt in meinem Dokument eine Ausweisnummer. Ich möchte in der DTD festlegen dass diese Ausweisnummer eine Zahl sein muss, die genau 10 Stellen hat.
Wie funktioniert das? Ich habe leider nirgends eine Info dazu gefunden.

Dann habe ich noch ein 2. Problem/Frage:

In meiner DTD verwende ich mehrere Male Tag, Monat und Jahr:
-----------------------------
<!ELEMENT GUELTIGKEITSDATUM (TAG,MONAT,JAHR)>
<!ELEMENT TAG (#PCDATA)>
<!ELEMENT MONAT (#PCDATA)>
<!ELEMENT JAHR (#PCDATA)>

<!ELEMENT GEBURTSTAG (TAG,MONAT,JAHR)>
----------------------------

Muss ich hier bei Geburtstag noch mal Tag, Monat und Jahr definieren, oder greift automatisch die Definition aus "Gültigkeitsdatum" (obwohl dies in einer anderen Verschachtelungstiefe vorkommt)?

Ich hoffe mir kann jemand weiterhelfen.

  1. Hi,

    Ich habe jetzt in meinem Dokument eine Ausweisnummer. Ich möchte in der DTD festlegen dass diese Ausweisnummer eine Zahl sein muss, die genau 10 Stellen hat.
    Wie funktioniert das? Ich habe leider nirgends eine Info dazu gefunden.

    Meines Wissens gar nicht.
    Die Möglichkeiten in einer DTD, die Werte zu beschränken, sind äußerst gering.

    Bei einem XSchema sähe das wieder anders aus, da gäb's Möglichkeiten ...

    Dann habe ich noch ein 2. Problem/Frage:
    In meiner DTD verwende ich mehrere Male Tag, Monat und Jahr:

    <!ELEMENT GUELTIGKEITSDATUM (TAG,MONAT,JAHR)>
    <!ELEMENT TAG (#PCDATA)>
    <!ELEMENT MONAT (#PCDATA)>
    <!ELEMENT JAHR (#PCDATA)>

    Ich würde da eher noch ein Element "DATUM" dazwischenschieben, GUELIGKEITSDATUM bekäme dann als Content-Model nur (DATUM), während DATUM das Content-Model (TAG,MONAT,JAHR) bekommt.

    <!ELEMENT GEBURTSTAG (TAG,MONAT,JAHR)>

    (auch hier dann Content-Model (DATUM)

    Muss ich hier bei Geburtstag noch mal Tag, Monat und Jahr definieren, oder greift automatisch die Definition aus "Gültigkeitsdatum" (obwohl dies in einer anderen Verschachtelungstiefe vorkommt)?

    Die Elemente werden nur einmal definiert, egal wie oft sie verwendet werden.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi Andreas,

      danke für Deine schnelle Antwort.

      Zu der ID: Falls die als Attribut definiere kann ich doch sicher auch nen WErtebereich angeben oder? Ich weiss nur nicht wie das geht.

      Ich weiss, Schema wäre besser :-D

      Das mit dem Datum habe ich gleich eingebaut. Hätte ich auch selber drauf kommen können.

      Danke nochmal.

      Grüsse

      christian

      1. Hi,

        danke für Deine schnelle Antwort.

        Zu der ID: Falls die als Attribut definiere kann ich doch sicher auch nen WErtebereich angeben oder? Ich weiss nur nicht wie das geht.

        AFAIK nur als Werteliste ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. Hallo,

        Zu der ID: Falls die als Attribut definiere kann ich doch sicher auch nen WErtebereich angeben oder? Ich weiss nur nicht wie das geht.

        ---
        "Ich möchte in der DTD festlegen dass diese Ausweisnummer eine Zahl sein muss, die genau 10 Stellen hat."
        ---

        Wenn du die Ausweisnummer als ID-Typ Attribut definieren willst, sind reine Zahlen so oder so nicht erlaubt.
        Du kannst auch keinen Wertbereich in der DTD angeben.

        <!ATTLIST Ausweis
        Ausweisnummer ID #REQUIRED>

        Willst du dich an den Vorgaben für ID-Typ Attribute halten, könntest du auch in einem Schema keine reine Zahlenwerte für ID verwenden.

        Grüße
        Thomas