[XML] data structurering

Pagina: 1
Acties:

  • Peopeo
  • Registratie: Juli 2001
  • Laatst online: 29-03-2022
Ik wil graag een database in XML onderbrengen, en ik zit met een vraagstuk(je) over de structurering.

Als ik mijn kennis van Object-oriented & relationeel modelleren volg, dan zou alle data als attributen moeten worden opgenomen. Ik ga er dan vanuit dat de XML-elementen corresponderen met de objecten/records uit de database.

Als ik echter alle data als attributen opneem, dan komt er niks tussen de XML-tags te staan. Dat lijkt me niet helemaal juist. Welke denkfout maak ik, of beter gezegd, welke data moet als attribuut worden opgenomen en welke data moet tussen de tags worden geplaatst?

Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 12:15

Pelle

🚴‍♂️

Hier weten ze wat meer over XML dan in W&G.

Verwijderd

Op vrijdag 14 september 2001 15:45 schreef Peopeo het volgende:
Als ik mijn kennis van Object-oriented & relationeel modelleren volg, dan zou alle data als attributen moeten worden opgenomen.
Da's niet helemaal waar natuurlijk. Maar het kan wel
code:
1
2
3
<somedata value="blaaterblasdjbl aldblnbl werbljblada" ></somedata>
of
<somedata>blaaterblasdjbl aldblnbl werbljblada</somedata>

Jij maakt de keuze, en die ligt lang niet altijd voor de hand...

  • Tom
  • Registratie: Juni 1999
  • Niet online

Tom

Move em naar P&W... :)

  • Peopeo
  • Registratie: Juli 2001
  • Laatst online: 29-03-2022
Daar kom ik net vandaan (zie eerste reply).

Ik ben nergens welkom.

Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |


Verwijderd

Om attributen of wat er tussen je tags staat uit xml te halen gebruik je andere function calls. Verder als je naar het structurerende (:)) principe van xml kijkt zie je bijv :

<labelA a1="a">
<labelB>
Etc...
</labelB>
</labelA>
<labelA a1="b"/>

Hier zie je duidelijk waarom je er voor kiest a1 een attribute te maken en LabelB een nieuwe tag...

ps. kijk ook naar xslt om het concept nog duidelijker te krijgen :) Hierin komt nl. wat mij betreft de kracht van xml goed naar voren. Met dingen als xpath ga je helemaal uit je dak! Check out:
http://www.phpxml.org/

doei,
Fetishcoder B-)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De beslissing om attributen op te nemen is eigenlijk erg verwarrend. Het komt volledig voort uit de bestaande SGML en HTML standaarden.

Vanuit het oogpunt van semi-gestructureerde data (waar XML een toepassing van is) is de aanwezigheid van attributen totaal overbodig. Het data-model van semi-gestructureerde data bestaatin feite alleen maar uit knopen, pijlen tussen deze knopen en labels bij de knopen of de pijlen. In het geval van XML is het het meest logisch om de labels bij de knopen te zetten. In het generieke data-model van semi-structured data is er dus geen begrip attribuut.

Er zijn dan ook groepen mensen die helemaal geen attributen willen gebruiken. De meest gebruikte regel is echter attributen gebruikt kunnen worden voor gegevens die alleen belangrijk zijn voor het 'systeem'. Daarbij kan je denken aan identifiers, links naar andere knopen, breedtes van tabellen enzovoorts. Zelf zondig ik echter vaak tegen deze regel omdat XML bestanden die veel gebruik maken van attributen in plaats van sub-elementen over het algemeen veel makkelijker in te lezen zijn :) .

Uiteraard is het in ieder geval zo dat je alleen attributen moet gebruiken indien de data die in de waarden van de attributen moet komen geen substructuur bevat. Daarvoor heb je absoluut sub-elementen nodig, wat eigenlijk al precies aangeeft dat er een onduidelijke ambiguiteit is bij attributen versus elementen :) .

In principe is alles volledig afhankelijk van je eigen smaak. Er zijn simpelweg geen goede regels op te stellen voor of tegen het gebruik van attributen.

Als je er echt veel meer over wilt weten, kan ik je het boek "Data on the Web, from relations to Semistructured Data and XML" aanraden. Het boek is geschreven door mensen afkomstig uit de relationele database wereld. Ondanks de zeer grote gebreken van het boek, is het wel een goede introductie in het algemenere begrip semi-structured data. XML kan je dan iets beter in een context plaatsen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op vrijdag 14 september 2001 15:45 schreef Peopeo het volgende:
Ik wil graag een database in XML onderbrengen, en ik zit met een vraagstuk(je) over de structurering.
Onthoudt goed dat XML trees van elements uit heterogene datasets kunnen bestaan, dus meerdere levels diep, terwijl tabellen uit bv relationele databases bestaan uit 1 level diep, nl. alleen de velden van die tabel.
Als ik mijn kennis van Object-oriented & relationeel modelleren volg, dan zou alle data als attributen moeten worden opgenomen. Ik ga er dan vanuit dat de XML-elementen corresponderen met de objecten/records uit de database.

Als ik echter alle data als attributen opneem, dan komt er niks tussen de XML-tags te staan. Dat lijkt me niet helemaal juist. Welke denkfout maak ik, of beter gezegd, welke data moet als attribuut worden opgenomen en welke data moet tussen de tags worden geplaatst?
Als je kijkt naar hoe ADO recordset objects worden omgezet naar XML (dmv de save method) dan krijg je een XML object met daarin lege elements met alleen attributes. Dit is nauwelijks leesbaar. (IMHO).

Als je normale relationele database modelleertechnieken gebruikt, dan krijg je tabellen. Zet die tabellen in een XML document en je bent klaar. Eventueel een bijbehorend XSchema, maar echt nodig is dat niet.

XML laat wel, zoals gezegd, toe dat je meerdere XML trees (tabellen) samenneemt tot 1 hierarchische tree, waarbij bv geen relaties tussen de verschillende samengenomen XML trees hoeft te bestaan. Als je dat niet gebruikt, lijkt het me eerlijk gezegd zinloos om XML te gebruiken voor je database. Het is nl. trager en minder flexibel dan bv een RDBMS.

  • Peopeo
  • Registratie: Juli 2001
  • Laatst online: 29-03-2022
Bedankt.

Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |

Pagina: 1