André Laugks: Element muß Inhalt haben

Hallo!

Sehe ich das richtig, daß ich in einer DTD nicht festlegen kann, daß in einem Element Inhalt stehen muß.

<name></name>  # nicht erlaubt

Kann ich das nur mit XML-Schema lösen?

MfG, André Laugks
L-Andre @ gmx.de

  1. Hallo André,

    Sehe ich das richtig, daß ich in einer DTD nicht festlegen kann, daß in einem Element Inhalt stehen muß.

    Ich würde versuchen, daß mit dem "+" zu lösen:

    http://selfhtml.teamone.de/xml/dtd/elemente.htm#viele_elemente

    <!ELEMENT meinelement (#PCDATA)+>

    Ich gebe aber keine Garantie. ;-)

    • Tim
    1. Hallo!

      Ich würde versuchen, daß mit dem "+" zu lösen:

      <!ELEMENT meinelement (#PCDATA)+>

      Das hatte ich schon versucht. Das Dokument ist dann nicht mehr wohl geformt.

      MfG, André Laugks
      L-Andre @ gmx.de

  2. Hallo André,

    Sehe ich das richtig, daß ich in einer DTD nicht festlegen kann, daß in einem Element Inhalt stehen muß.

    <name></name>  # nicht erlaubt

    Du hast ja bereits festgelgt, dass in deinem Element ein Inhalt stehen muss, sonst hättests du es mit EMPTY bestimmen müssen:
    <!ELEMENT name EMPTY>
    Wenn du <!ELEMENT name (#PCDATA)> definiert hast, bedeutet es nicht dass das Element nicht leer sein kann, denn als PCDATA kann auch eine leere Zeichehnkette bestimmt sein.

    Grüße
    Thomas

    1. Hallo!

      Du hast ja bereits festgelgt, dass in deinem Element ein Inhalt stehen muss, sonst hättests du es mit EMPTY bestimmen müssen:
      <!ELEMENT name EMPTY>
      Wenn du <!ELEMENT name (#PCDATA)> definiert hast, bedeutet es nicht dass das Element nicht leer sein kann, denn als PCDATA kann auch eine leere Zeichehnkette bestimmt sein.

      Wenn ich aber Inhalt haben möchte, also sei es nur ein Buchstabe oder was auch immer, muß ich mit XML-Schema arbeiten?

      MfG, André Laugks
      L-Andre @ gmx.de

      1. Hallo André,

        Wenn ich aber Inhalt haben möchte, also sei es nur ein Buchstabe oder was auch immer, muß ich mit XML-Schema arbeiten?

        Ja, mit schema kannst du das Erreichen:
        <simpleType name="nicht-ganz-leer">
          <restriction base='string'>
             <minLength value='1'/>
           </restriction>
        </simpleType>

        <xsd:element name="name" type="nicht-ganz-leer"/>
        -- oder --
         <xsd:element name="name">
            xsd:simpleType
                <xsd:restriction base="xsd:string">
                   <xsd:minLenght value="1"/>
                </xsd:restriction>
           </xsd:simpleType>
        </xsd:element>

        Aber nochmal: auch eine leere Zeichehnkette ist "was auch immer" ;-)

        Grüße
        Thomas