[XML] Namespace toevoegen alleen aan children

Pagina: 1
Acties:

  • Jiggle
  • Registratie: December 2007
  • Laatst online: 22-03-2021
Ik heb een XML-boom waarin ik een element heb staan met een heleboel children. Al die children dienen een bepaalde namespace te hebben, maar het parent-element zelf niet. Dat moet makkelijk kunnen toch? Als ik het parent-element een namespace geef hebben vanzelfsprekend alle children die namespace ook, maar het parent-element moet deze namespace dus juist niet hebben.
Is er een attribuut dat alleen de children van een element een namespace geeft?

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Bedoel je dit:
code:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:x="http://www.w3.org/TR/html4/">
    <parent>
        <x:child>text</h:child>
        <x:child>text</h:child>
    </parent>
</root>

De children hebben nu de namespace "x" meegekregen.

  • Jiggle
  • Registratie: December 2007
  • Laatst online: 22-03-2021
Sorry, stom van me, ik ben ook geen licht hierin, maar ik bedoel iets anders. Ik wil liever niet met prefixes werken omdat ik dan elk element die prefix mee moet geven. Ik wil iets als onderstaande code (excuses voor stomme fouten hoor!)
Nu hebben de parent en de children die bewuste namespace (zonder prefix). Maar de bedoeling is dus dat de parent zelf niet die namespace krijgt maar de children wel.

code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<root >
    <parent xmlns="http://www.w3.org/TR/html4/">
        <child>text</child>
        <child>text</child>
        <child>text</child>
        <child>text</child>
        <child>text</child>
        <child>text</child>
    </parent>
</root>

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt het nou dan toch daar staan dan?!
Je kunt gewoon op elk parent element het xmlns attribute gebruiken.

Echter in jouw codevoorbeeld vallen parent en child in dezelfde namespace, waar bij het voorbeeld van cariolive23 parent en child in verschillende namespaces zitten.

If it isn't broken, fix it until it is..


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Je hebt twee drie mogelijkheden:

1. De prefix gebruiken zoals cariolive23 voorstelt.
2. Op elk child element apart een xmlns="urn:namespace" attribuut neerzetten
3. Iets als dit:

XML:
1
2
3
4
5
6
7
<root xmlns="urn:jenamespace" xmlns:x="urn:anderenamespace">
  <x:parent>
    <child1>value1</child1>
    <child1>value1</child1>
    <child1>value1</child1>
  </x:parent>
</root>


Nu zitten je root en child* elementen in de ene en je parent in de andere namespace. Dit werkt alleen wanneer je de parent niet in de default namespace ("") wilt hebben. Die kun je namelijk geen prefix geven.

Andere opties zijn er niet. De prefix lijkt me het meest handig :)

[ Voor 49% gewijzigd door Gerco op 20-08-2009 10:53 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
@Gerco: Jouw opties 1 en 3 zijn eigenlijk hetzelfde, alleen benader je het probleem van de andere kant. De oplossing is hetzelfde, direct in de root al de juiste namespaces opgeven. Deze kun je dan in de rest van de XML gaan gebruiken.

Optie 2 is een vieze, zorgt voor extra overhead en heeft verder geen voordelen. Althans, ik zie ze niet.
Pagina: 1