Daniel Thoma: Geschachtelte Entities

Hallo zusammen

Mein prob:
Ist es erlaubt ParameterEntities zu schachteln Also etwa so:
<!ENTITY % text "bla bla">
<!ENTITY % satz "Sehr viel %text;">
oder muß man text dann als normales Entity definieren:
<!ENTITY text "bla bla">
<!ENTITY % satz "Sehr viel &text;">
oder geht beides?

Tschüs und vielen Dank

Daniel

  1. Hallo Daniel,

    Ist es erlaubt ParameterEntities zu schachteln Also etwa so:
    <!ENTITY % text "bla bla">
    <!ENTITY % satz "Sehr viel %text;">
    oder muß man text dann als normales Entity definieren:
    <!ENTITY text "bla bla">
    <!ENTITY % satz "Sehr viel &text;">
    oder geht beides?

    Laut XML-Spec sind beide Wege korrekt:

    http://www.w3.org/TR/1998/REC-xml-19980210#sec-entity-decl

    Eine PE-Def kann als Entity-Value wieder eine PE-Ref enthalten, aber auch eine (normale) Entity und Character-Reference.

    Gruß
    Franz

    1. Hallo Franz!

      Laut XML-Spec sind beide Wege korrekt:

      *wunder* und *lol* und ich sagte ihm, beide sind falsch ....

      dann mal ran:

      http://www.w3.org/TR/1998/REC-xml-19980210#sec-entity-decl

      Grüße
      Thomas

    2. Hallo Franz!

      Laut XML-Spec sind beide Wege korrekt:

      Stimmt. Ich sollte wohl nicht so "spät" posten (und vor allem keinen Blödsinn).
      Steht ja auch ein Beispiel da:
      http://www.w3.org/TR/1998/REC-xml-19980210#intern-replacement

      Nun ja... Konsequenz: ich gehe schlafen.

      Grüße
      Thomas

      1. Hi Thomas,

        Ich sollte wohl nicht so "spät" posten >

        Vielleicht solltest Du nicht genau um 0:00 Uhr posten, wer was was die Geister einem zu dieser Stunde alles einflüstern wollen ;-)

        Nun ja... Konsequenz: ich gehe schlafen.

        Hoffe Du hast gut geschlafen, ich bin jedenfalls mit ner besch... Erkältung aufgewacht. Dieses fiese Kribbeln im Hals, was du noch zu ignorieren versuchst, aber dir gnadenlos ankündigt: das WE kannste im Bett verbringen

        Grüße
        Franz

  2. Hallo Daniel!

    Mein prob:
    Ist es erlaubt ParameterEntities zu schachteln Also etwa so:
    <!ENTITY % text "bla bla">
    <!ENTITY % satz "Sehr viel %text;">
    oder muß man text dann als normales Entity definieren:
    <!ENTITY text "bla bla">
    <!ENTITY % satz "Sehr viel &text;">
    oder geht beides?

    Beispiel ist sehr unglücklich gewählt! (beide sind falsch nämlich)
    Wills du Elemente oder Text als Entities definieren?

    Elemente:

    <!ENTITY % text "element anderes.element">
    <!ENTITY % satz "%text; drittes.element">

    Text:
    <!ENTITY text CDATA "bla bla">
    <!ENTITY satz CDATA "Sehr viel &text;">

    Grüße
    Thomas

    1. Hallo nochmal!

      Das habe ich falsch geschrieben!

      Text:
      <!ENTITY text CDATA "bla bla">
      <!ENTITY satz CDATA "Sehr viel &text;">

      kannst so machen:

      <!ENTITY text CDATA "bla bla">
      <!ENTITY satz "Sehr viel &text;">

      oder so:

      <!ENTITY text "bla bla">
      <!ENTITY satz "Sehr viel &text;">

      Grüße
      Thomas

      PS: den rest beim Franz posting ...

      1. Hallo Zusammen

        Der Link von fjh hat mir geholfen.
        Den abschnitt hab ich gesucht nur in der Spec nie gefunden.

        <!ENTITY text CDATA "bla bla">
        <!ENTITY satz "Sehr viel &text;">

        Was soll das CDATA?

        [70] EntityDecl ::= GEDecl PEDecl
        [71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
        [72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
        [73] EntityDef ::= EntityValue (ExternalID NDataDecl?)
        [74] PEDef ::= EntityValue ExternalID
        [9] EntityValue ::= '"' ([^%&"]    PEReference    Reference)* '"' "'" ([^%&']    PEReference    Reference)* "'"
        [67] Reference ::= EntityRef CharRef

        Was soll da ander sein:
        <!ENTITY % text "element anderes.element">
        <!ENTITY % satz "%text; drittes.element">
        zu da?
        <!ENTITY % text "bla bla">
        <!ENTITY % satz "Sehr viel %text;">

        Beides legt text fest. PE-Referenzen darf man nur in der DTD verwenden.
        Beide kann man nur so verwenden:
        <!ENTITY test "Satz: %satz;">
        Den direkt in der dtd füren sie nur zu einem Fehler
        In deinem fall würde &test; im übrigen zu:
        Satz: Sehr viel bla bla

        Tschüs

        Daniel

        1. Hallo!

          <!ENTITY text CDATA "bla bla">
          <!ENTITY satz "Sehr viel &text;">

          Was soll das CDATA?

          Caracter Data

          Ich sagte schon weiter unten, daß ich offensichtlich im Halbschlaf war und das führte dazu, daß ich eine Priese SGML hineingebracht habe. ;-) Denn das mit CDATA ist SGML Syntax

          Was soll da ander sein:
          <!ENTITY % text "element anderes.element">
          <!ENTITY % satz "%text; drittes.element">
          zu da?
          <!ENTITY % text "bla bla">
          <!ENTITY % satz "Sehr viel %text;">

          Wenig, aber das reicht aus:
          Wenn du bedenkst, daß das was zwischen den Anfürungszeichen steht als Ersetzungstext für die Entity genommen wird und den Zweck für die 2 unterschiedliche Anwendugen beachtest, dann ergeben sich unterschiede: würdest du im 2. Fall ein Element namens 'bla' definieren, würde dies zu einem Fehler führen.

          Beides legt text fest. PE-Referenzen darf man nur in der DTD verwenden.

          Natürlich, aber du hast mit keinem Wort gesagt, wo und wie du diese Entities verwenden willst.

          In deinem fall würde &test; im übrigen zu:
          Satz: Sehr viel bla bla

          War nicht das genau, das was du wolltest?

          Grüße
          Thomas