Thomas Mell: Nochmal Namensräume

Hallo,
ich habe noch mal ein paar Fragen zu Namensräumen.
Beispiele:
<x xmlns:edi='http://ecommerce.org/schema'/>
oder
<x xmlns:abc='http://ecommerce.org/schema'
   xmlns:def='http://bla.com'/>

x gehört zu keinen Namensraum (bzw. einem imaginären „root“-Namensraum)

<x xmlns="http://blablub.com"
   xmlns:abc='http://ecommerce.org/schema'
   xmlns:def='http://bla.com'/>

x und alle Unterelemente (sofern nicht anderen Namensräumen zugewiesen) gehört zum Namensraum http://blablub.com

<xyz:x xmlns:xyz="http://blablub.com"
       xmlns:abc='http://ecommerce.org/schema'
       xmlns:def='http://bla.com'/>

x gehört zum Namensraum xyz, jedoch nicht die Unterelemente wenn kein Namensraum vor dem Elementname geschrieben ist.
Oder erben die Kinder den Namensraum des Parent?

<xyz:x xmlns:xyz="http://blablub.com"
       xmlns:abc='http://ecommerce.org/schema'
       xmlns:def='http://bla.com'>
  <child/>
</x>
Besitzt ‘child’ nun den ‘root’-Namensraum oder ‘xyz’ ?

Grüße Thomas

  1. Hi!

    <xyz:x xmlns:xyz="http://blablub.com"
           xmlns:abc='http://ecommerce.org/schema'
           xmlns:def='http://bla.com'>
      <child/>
    </x>
    Besitzt ‘child’ nun den ‘root’-Namensraum oder ‘xyz’ ?

    Du musst immer den Namensraum angeben wenn du ihn benutzt.
    Dementprechend gehört "child" zum "root"-Namensraum.

    cu

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hi,

      Du musst immer den Namensraum angeben wenn du ihn benutzt.
      Dementprechend gehört "child" zum "root"-Namensraum.

      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xmlns="http://my.netscape.com/rdf/simple/0.9/">
        <item......

      Dann gehört 'RDF' dem 'rdf'-Namensraum an und dem 'item'-Elemente der 'http://my.netscape.com/rdf/simple/0.9/'-Namensraum?
      Oder gehört 'item' der 'root'-Namensraum? Wozu existiert dann noch das 'xmlns'-Attribut?

      Grüße
      Thomas

      1. Hi!

        Hi,

        Du musst immer den Namensraum angeben wenn du ihn benutzt.
        Dementprechend gehört "child" zum "root"-Namensraum.

        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                 xmlns="http://my.netscape.com/rdf/simple/0.9/">
          <item......

        Dann gehört 'RDF' dem 'rdf'-Namensraum an und dem 'item'-Elemente der 'http://my.netscape.com/rdf/simple/0.9/'-Namensraum?
        Oder gehört 'item' der 'root'-Namensraum? Wozu existiert dann noch das 'xmlns'-Attribut?

        Mmm, du machst mich grad ein wenig stutzig.
        Am Besten du schaust mal beim W3C nach, dort stehts ganz bestimmt.

        cu

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html
        1. Hi

          Mmm, du machst mich grad ein wenig stutzig.
          Am Besten du schaust mal beim W3C nach, dort stehts ganz bestimmt.

          Hab ich, werde daraus aber auch nicht schlau. Bei allem was man in deren Specs versteht, bleibt immer ein Nachgeschmack es vieleicht doch falsch verstanden zu haben.

          Dank Dir trotzdem

          Thomas

      2. Hallo,

        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                 xmlns="http://my.netscape.com/rdf/simple/0.9/">
          <item......

        Dann gehört 'RDF' dem 'rdf'-Namensraum an und dem 'item'-Elemente der 'http://my.netscape.com/rdf/simple/0.9/'-Namensraum?

        Korrekt.

        Wozu existiert dann noch das 'xmlns'-Attribut?

        Um den default Mamensraum für Elemente ohne Namensraumpräfix unterhalb rdf:RDF zu bestimen.

        Grüße
        Thomas

        1. Hi Thomas,
          alles klar soweit, dank Dir. Hab's mir schon so gedacht, alles andere währe unlogisch.
          Eine Frage habe ich dann aber doch noch:

          <x xmlns="bla">
           <y xmlns="blub">
             <!-- ist das erlaubt? -->
             bla:z/
           </y>
          </x>

          D.h. werden alle Namensräume nach "unten durchgereicht", so das in einem Blatt (im XML-Baum) alle umgebenden Namensräume erlaubt sind?
          Oder wird in einen neuen Namensraum der Parent-Namensraum gekillt?

          Grüße
          Thomas

          1. Hallo,

            alles klar soweit, dank Dir. Hab's mir schon so gedacht, alles andere währe unlogisch.
            Eine Frage habe ich dann aber doch noch:

            <x xmlns="bla">
            <y xmlns="blub">
               <!-- ist das erlaubt? -->
               bla:z/
            </y>
            </x>

            Ja.

            D.h. werden alle Namensräume nach "unten durchgereicht", so das in einem Blatt (im XML-Baum) alle umgebenden Namensräume erlaubt sind?

            Ja, _wenn_ du das ensprechende Namensraumpräfix benützt.

            Oder wird in einen neuen Namensraum der Parent-Namensraum gekillt?

            Ja, normalerweise. Es sei denn du verwendest das entsprechenden Namensraupräfix.

            "Die Namensraum-Deklaration gilt für das Element, in dem sie angegeben ist, und für alle Elemente im Inhalt dieses Elements, es sei denn, sie wird durch eine andere Namensraum-Deklaration mit dem gleichen Namensraum-Atrtribut-Teil (d.i. endeweder xmlns="..." oder xmlns:x="...") überschrieben"

            Grüße
            Thomas

  2. Hallo Thomas,

    ich habe noch mal ein paar Fragen zu Namensräumen.
    Beispiele:
    <x xmlns:edi='http://ecommerce.org/schema'/>
    oder
    <x xmlns:abc='http://ecommerce.org/schema'
       xmlns:def='http://bla.com'/>

    x gehört zu keinen Namensraum (bzw. einem imaginären „root“-Namensraum)

    x gehört zu den null-namespace, zum Null-Namensraum.

    <x xmlns="http://blablub.com"
       xmlns:abc='http://ecommerce.org/schema'
       xmlns:def='http://bla.com'/>

    x und alle Unterelemente (sofern nicht anderen Namensräumen zugewiesen) gehört zum Namensraum http://blablub.com

    Korrekt. <x xmlns="http://blablub.com"> definiert den default Namensraum für seine Kindelemente.

    <xyz:x xmlns:xyz="http://blablub.com"
           xmlns:abc='http://ecommerce.org/schema'
           xmlns:def='http://bla.com'/>

    x gehört zum Namensraum xyz, jedoch nicht die Unterelemente wenn kein Namensraum vor dem Elementname geschrieben ist.

    Unterelemente ohne Namnsraumangeben gören in diesem fall dem null-namespace

    <xyz:x xmlns:xyz="http://blablub.com"
           xmlns:abc='http://ecommerce.org/schema'
           xmlns:def='http://bla.com'>
      <child/>
    </x>
    Besitzt ‘child’ nun den ‘root’-Namensraum oder ‘xyz’ ?

    Richtig müsste es heissen:
    <xyz:x xmlns:xyz="http://blablub.com"
           xmlns:abc='http://ecommerce.org/schema'
           xmlns:def='http://bla.com'>
       <child/>
     </xyz:x>

    Child gehört in den null-namespace.

    Grüße
    Thomas