Maik Schmidt: Element in sich selbst möglich (Rekursion)

Hi.

Ich würde gerne wissen, ob es möglich ist, das ein XML-Element in sich selbst vorkommen kann. Ich würde gerne etwas haben wie:

<untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

Ich habe den XML-Teil von Selfhtml zweimal gelesen, aber es steht irgendwie nicht explizit drin, daß es geht oder das es eben NICHT geht.

Ich dachte an ANY als Inhalt des Elementes?...

MfG,

Maik Schmidt

  1. hi

    <untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

    wieso sollte das nicht gehen? Als bestes Beispiel seien mal <div> in XHTML genant, die ja auch oftmals direkt ineinander verschachtelt sind... (außer mal öffnet <untergrubbe> und schließt </untergruppe> ;)

    Grüße aus Lüneburg

    Kai

  2. Hallo,

    Ich würde gerne wissen, ob es möglich ist, das ein XML-Element in sich selbst vorkommen kann.

    Möglich ist es, wenn Du mit Wohlgeformtheit zufrieden bist. Bei gültigen Dokumenten geht dies nur über ANY (wie du schon vermutet hast). Wie willst du es sonst definieren

    Eine andere Frage: Warum probierst Du es nicht einfach aus? Habe ich auch nochmal gemacht...

    Gruß
    Franz

    1. Hallo Franz,

      Möglich ist es, wenn Du mit Wohlgeformtheit zufrieden bist. Bei gültigen Dokumenten geht dies nur über ANY (wie du schon vermutet hast).

      wie bitte?!?

      Wie willst du es sonst definieren

      z.B. so:
      <!ELEMENT untergruppe (andereselement | untergruppe | nocheinelement)*> ?!

      Grüße
      Thomas

      1. Hallo Thomas,

        Möglich ist es, wenn Du mit Wohlgeformtheit zufrieden bist. Bei gültigen Dokumenten geht dies nur über ANY (wie du schon vermutet hast).

        wie bitte?!?

        Ich bin davon ausgegangen, dass ein Element ausschließlich wieder sich selbst enthalten kann, also genau wie in dem Beispiel von Maik.

        <untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

        Wie willst du es sonst definieren

        z.B. so:
        <!ELEMENT untergruppe (andereselement | untergruppe | nocheinelement)*> ?!

        Ja, klar so gehts, aber so eben nicht

        <!ELEMENT test (test)>

        Grüße
        Franz

        1. Hallo Franz,

          Ich bin davon ausgegangen, dass ein Element ausschließlich wieder sich selbst enthalten kann, also genau wie in dem Beispiel von Maik.

          <untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

          das wäre noch immer:

          <!ELEMENT untergruppe (#PCDATA | untergruppe)+>

          gewesen.

          Grüße
          Thomas, heute etwas besserwisserisch ;-)

          1. Hallo Thomas,

            <untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

            das wäre noch immer:

            <!ELEMENT untergruppe (#PCDATA | untergruppe)+>

            gewesen.

            Mensch, da bin ich gar nicht drauf gekommen..... Oje,oje, es geht bergab mit mir....

            Grüße
            Thomas, heute etwas besserwisserisch ;-)

            Macht nix, ich find schon auch wieder was, hehe ;-)

            Gruß
            Franz

          2. Hallo Franz,

            Ich bin davon ausgegangen, dass ein Element ausschließlich wieder sich selbst enthalten kann, also genau wie in dem Beispiel von Maik.

            <untergruppe attribut="a"><untergrubbe attribut="b"> blabla </untergruppe></untergruppe>

            das wäre noch immer:

            <!ELEMENT untergruppe (#PCDATA | untergruppe)+>

            Hmmm, das "+" stört mich. Muss das kein "?" sein ?
            Da stellt sich für mich die Frage, ob
            <!ELEMENT irgendetwas (#PCDATA)>
            genau die gleichen Auswirkungen hat wie
            <!ELEMENT irgendetwas (#PCDATA)+>
            Ihr wisst doch sicherlich Bescheid.

            gewesen.

            Grüße
            Thomas, heute etwas besserwisserisch ;-)

            1. Hallo,

              <!ELEMENT untergruppe (#PCDATA | untergruppe)+>
              Hmmm, das "+" stört mich. Muss das kein "?" sein ?

              Nein nicht "?", sondern "*". Aber Du hast recht "+" geht auch nicht.

              Huhu Thomas, ich wußte doch, dass ich nochwas finde, *freu*

              Da stellt sich für mich die Frage, ob
              <!ELEMENT irgendetwas (#PCDATA)>
              genau die gleichen Auswirkungen hat wie
              <!ELEMENT irgendetwas (#PCDATA)+>
              Ihr wisst doch sicherlich Bescheid.

              (#PCDATA)+ ist nicht wohlgeformt, was sollte es auch für einen Sinn machen.

              Grüße
              Thomas, heute etwas besserwisserisch ;-)

              Gruß
              Franz, heute wieder obenauf ;-)

              1. hallo,

                <!ELEMENT untergruppe (#PCDATA | untergruppe)+>
                Hmmm, das "+" stört mich. Muss das kein "?" sein ?

                Nein nicht "?", sondern "*". Aber Du hast recht "+" geht auch nicht.

                sorry, aber + geht hier sehr wohl.
                es kann beides sein, denn ich bestimmte das inhaltsmodell im ( ).
                wenn ich (#PCDATA | untergruppe+) geschreiben hätte, hätte es eine ganz andere bedeutung.

                <!ELEMENT irgendetwas (#PCDATA)+>
                das macht aleine natürlich keinen sinn.
                hier könnte  "?" stehen, wenn das element auch leer sein darf.

                Huhu Thomas, ich wußte doch, dass ich nochwas finde, *freu*

                bin höchst betrübt, dir wiedersprechen zu müssen, aber das geht, denn wie gesagt ich habe das inhaltsmodell bestimmt, d.h. das element untergruppe muss entweder #PCDATA oder das element untergruppe enthalten.

                wenn ich (#PCDATA | untergruppe)? geschrieben hätte, würde das bedeuten, dass das element untergruppe auch leer sein darf.
                das selbe gilt auch für (#PCDATA | untergruppe)*

                (#PCDATA | untergruppe)+ bewirkt dass es auch mehrere "untergruppe" elemente vorkommen können (wobei das element untergruppe nicht leer sein darf).

                Da stellt sich für mich die Frage, ob
                <!ELEMENT irgendetwas (#PCDATA)>
                genau die gleichen Auswirkungen hat wie
                <!ELEMENT irgendetwas (#PCDATA)+>
                Ihr wisst doch sicherlich Bescheid.

                nein. denn zweiteres - wie gesagt - keinen sinn hat.

                1. Hallo Thomas,

                  Huhu Thomas, ich wußte doch, dass ich nochwas finde, *freu*

                  bin höchst betrübt, dir wiedersprechen zu müssen, aber das geht, denn wie gesagt ich habe das inhaltsmodell bestimmt, d.h. das element untergruppe muss entweder #PCDATA oder das element untergruppe enthalten.

                  wenn ich (#PCDATA | untergruppe)? geschrieben hätte, würde das bedeuten, dass das element untergruppe auch leer sein darf.
                  das selbe gilt auch für (#PCDATA | untergruppe)*

                  also nochmal um es klar zu stellen:

                  Nur das geht bei gemischtem Inhalt:

                  1. <!ELEMENT untergruppe (#PCDATA)>
                  2. <!ELEMENT untergruppe (#PCDATA | untergruppe)*

                  Das geht nicht:
                  3) <!ELEMENT untergruppe (#PCDATA | untergruppe)+>

                  ebenso dies nicht

                  1. <!ELEMENT untergruppe (#PCDATA | untergruppe)+>

                  Probiers mal aus.

                  Die Produktionsregel dazu:
                  http://www.w3.org/TR/REC-xml#sec-mixed-content

                  Gruß
                  Franz

                  PS: Tut mir ebenfalls leid Dir widersprechen zu müssen, hehe
                  PPS: Ob dass überhaupt noch jemanden interessiert... ;-)