Klaus Reuter: | bei Elementen (nicht ihren Attributen)

Hi.

<!ELEMENT (Auftraggeber|Empfaenger) (Name?,Bank,KtoNr)>

Bedeutet der senkrechte Strich in diesem Fall auch entweder das Element Auftraggeber oder das Element Empfaenger?

MfG
Klaus

  1. Hi Klaus!

    <!ELEMENT (Auftraggeber|Empfaenger) (Name?,Bank,KtoNr)>
    Bedeutet der senkrechte Strich in diesem Fall auch entweder das Element Auftraggeber oder das Element Empfaenger?

    Ja! Wenn du "auch" z. B. im Sinne von "wie bei EBNF" meinst.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. Hallo Klaus,

    <!ELEMENT (Auftraggeber|Empfaenger) (Name?,Bank,KtoNr)>

    Bedeutet der senkrechte Strich in diesem Fall auch entweder das Element Auftraggeber oder das Element Empfaenger?

    Ja, allerdings ist diese Element-Deklaration fehlerhaft, weil ein Klammerausdruck für das jweilige Inhaltsmodell steht und zunächst der Elementname erforderlich ist. Das könnte so aussehen:

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <!DOCTYPE Ueberweisungen [  
      <!ELEMENT Ueberweisungen (Ueberweisung+)>  
      <!ELEMENT Ueberweisung (Auftraggeber | Empfaenger)>  
      <!ELEMENT Auftraggeber (Name?, Bank, KtoNr)>  
      <!ELEMENT Empfaenger (Name?, Bank, KtoNr)>  
      <!ELEMENT Name (#PCDATA)>  
      <!ELEMENT Bank (#PCDATA)>  
      <!ELEMENT KtoNr (#PCDATA)>  
    ]>  
    <Ueberweisungen>  
      <Ueberweisung>  
        <Auftraggeber>  
          <Name>...</Name>  
          <Bank>...</Bank>  
          <KtoNr>...</KtoNr>  
        </Auftraggeber>  
      </Ueberweisung>  
    </Ueberweisungen>
    

    Wobei es praktisch sinnvoller wäre, sowohl Auftraggeber als auch Empfaenger zuzulassen, also in der Form:
    <!ELEMENT Ueberweisung (Auftraggeber, Empfaenger)>

    Wenn es darum geht, die Deklaration für "Name?,Bank,KtoNr" nur 1x zu notieren, dann wäre dieses Vorgehen mit Parameter-Entity geeignet (allerdings nur bei externer DTD-Verwendung):

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <!DOCTYPE Ueberweisungen SYSTEM "ueberweisung.dtd">  
    <Ueberweisungen>  
      <Ueberweisung>  
        <Auftraggeber>  
          <Name>...</Name>  
          <Bank>...</Bank>  
          <KtoNr>...</KtoNr>  
        </Auftraggeber>  
      </Ueberweisung>  
    </Ueberweisungen>
    

    mit ueberweisung.dtd:

    <!ENTITY % nbk "Name?, Bank, KtoNr">  
    <!ELEMENT Ueberweisungen (Ueberweisung+)>  
    <!ELEMENT Ueberweisung (Auftraggeber | Empfaenger)>  
    <!ELEMENT Auftraggeber (%nbk;)>  
    <!ELEMENT Empfaenger (%nbk;)>  
    <!ELEMENT Name (#PCDATA)>  
    <!ELEMENT Bank (#PCDATA)>  
    <!ELEMENT KtoNr (#PCDATA)>
    

    Grüße,
    Thomas