Avatar billede Simon Praktikant
09. februar 2006 - 08:55 Der er 2 kommentarer og
2 løsninger

referere til andre elementer i en xml

Jeg har en xml-fil som nedenstående, hvor nogle af elementerne er fuldstændig identiske. F.eks. har bog 1 og 2 fuldstændig samme forfatterinfo. Kan disse info ikke placeres ét sted, og stadig bevare strukturen i xml-filen?


<?xml version="1.0" encoding="utf-8" ?>
<root>
  <bog bognavn="bogtitel 1">
      <forfatter>
        <forfatterinfo info="navn">olsen</<forfatterinfo>
    <forfatterinfo info="by">lilleby</<forfatterinfo>
    <forfatterinfo info="tlf">12345678</<forfatterinfo>
      </forfatter>
  </bog>
  <bog bognavn="bogtitel 2">
      <forfatter>
        <forfatterinfo info="navn">olsen</<forfatterinfo>
    <forfatterinfo info="by">lilleby</<forfatterinfo>
    <forfatterinfo info="tlf">12345678</<forfatterinfo>
      </forfatter>
  </bog>
  <bog bognavn="bogtitel 3">
      <forfatter>
        <forfatterinfo info="navn">hansen</<forfatterinfo>
    <forfatterinfo info="by">storeby</<forfatterinfo>
    <forfatterinfo info="tlf">87654321</<forfatterinfo>
      </forfatter>
  </bog>
</root>
Avatar billede Slettet bruger
09. februar 2006 - 09:33 #1
Det kommer helt an på hvordan din XML fil bruges - hvis du selv parser filen kan du jo bestemme dig for et system - jeg har f.eks. tit gjort noget i denne stil:

<bog bognavn="bogtitel 1">
  <forfatter id="F001olsen">
      <forfatterinfo info="navn">olsen</<forfatterinfo>
      <forfatterinfo info="by">lilleby</<forfatterinfo>
      <forfatterinfo info="tlf">12345678</<forfatterinfo>
  </forfatter>
</bog>
<bog bognavn="bogtitel 2">
  <forfatter ref="F001olsen">
</bog>

- altså at referere til en tidligere defineret forfatter vha. et unikt ID

Men der er flere muligheder, alt afhængig af hvad du skal bruge det til.

/CS
Avatar billede Simon Praktikant
09. februar 2006 - 10:21 #2
Altså jeg kan ikke få det til at virke.
Når jeg bruger din kode får jeg en fejl "tag was not closed".
Hvis jeg så sætter en slut-tag på ("</forfatter>") får jeg ingen fejl, men så er forfatter-feltet tomt for "bogtitel 2".

Jeg tilgår xml'en med xpath fra C#.
Avatar billede Slettet bruger
09. februar 2006 - 11:32 #3
OK - uddybende forklaring: (Og ja min fejl - glemte at lukke <forfatter>)

Du kan ikke få det til at virke automatisk. Det var derfor jeg skrev det med "hvis du selv parser..." - jeg formatterer vha. XSLT, så her kan jeg automatisk generere de rigtige data for <forfatter> elementer med en ref attribut.

Da du bruger XPath kan du jo teste om forfatter har en ref attribut ("forfatter[@ref]") og derefter hente info fra den rigtige (content = doc.selectSingleNode("//forfatter[id=$$ID-HERE$$]")  -- Pseudo C#/XPath kode !!

/CS
Avatar billede Simon Praktikant
09. februar 2006 - 12:46 #4
Ok, så det jeg spurgte om kan ikke helt lade sig gøre. Eftersom dit svar var korrekt er pointene dine.

Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester