[xml] XML onderverdelen/ref. integriteit.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik ben mijn XML kennis aan het opfrissen en ik heb een vraag over het opsplitsen van een XML bestand. Stel dat je een order hebt, met een orderregel en een klant. Dan kan je hiervan eenvoudig XML maken. Maar je wilt natuurlijk die klant ook kunnen gebruiken voor andere orders. Hoe pak je dit aan in XML?

Een oplossing kan ik wel bedenken. Iedere klant heeft een primaire sleutel, dus je kan bij het XML`en van die order wel de klantId erbij plaatsen. Maar op wat voor manier kan de locatie van de klant duidelijk gemaakt worden? Moet dit echt in je XML document staan (mbv een URL) of moet het systeem erom heen dit afhandelen?

En stel dat ik verschillende bestanden heb gemaakt voor mijn orders voor dezelfde klant en ik verwijder de klant. Op wat voor manier valt referentiele integriteit af te dwingen? Ik heb de indruk dat XML voor dit stuk informatie niet de beste techniek is om het persistent te maken.

[edit & halfofftopic]
Ik raad iedereen aan om een goed XML boek te kopen zoals bv "Professional XML" want tutorials op het internet zijn echt een drama. Je bent maar een fractie van de tijd bezig om te zoeken naar wat je nodig bent, en je krijgt veel betere uitleg dan je van een introduction-to-tutorial kan verwachten.

[ Voor 16% gewijzigd door Alarmnummer op 23-02-2003 11:58 ]


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Wat ik zou doen als ik jou was is het volgende.
Of, dump alles in een database, want dat lijkt mij het makkelijkste.
Of, maak gebruik van een DTD (Document Type Definition) bestand. In zo'n bestand zet je de complete layout van de XML, en deze bewaakt de integriteit van de database. Dan hoef je je ook geen zorgen te maken dat een klant verwijderd wordt terwijl daar nog orderregels van zijn.

| Life is a game (and games are fun) | homepage |


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

En stel dat ik verschillende bestanden heb gemaakt voor mijn orders voor dezelfde klant en ik verwijder de klant. Op wat voor manier valt referentiele integriteit af te dwingen? Ik heb de indruk dat XML voor dit stuk informatie niet de beste techniek is om het persistent te maken.
Het zal de applicatie moeten zijn die ref int. afdwingt. Aangezien het echter redelijk eenvoudig is relaties aan te leggen in verschillende elementen moet dit niet zo`n probleem zijn denk ik.
Ik heb de indruk dat XML voor dit stuk informatie niet de beste techniek is om het persistent te maken.
Het is idd lastiger dan met een DBMS, echter niet onmogelijk imho ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik heb de indruk dat XML voor dit stuk informatie niet de beste techniek is om het persistent te maken.
Dat kan kloppen :+ . XML is ook niet bedoeld voor data opslag: het is bedoeld voor data uitwisseling.

Het vastleggen van voorwaarden voor dergelijke verwijzingen kan je wel afdwingen, maar met de 'bekende' schema talen W3C XML Schema en DTD volgens mij alleen binnen in 1 document.

Schemas zouden daar volgens mij sowieso niet voor gebruikt moeten worden. Schemas (in welke taal dan ook) beschrijven de structuur van een verzameling XML documenten en moeten zich niet met allemaal voorwaarden bezig gaan houden die meer semantisch van aard zijn.

De meeste DOM implementaties zorgen er dus ook niet voor dat zulke voorwaarden blijven gelden. De meeste XML parsers controleren ze geeneens, zeker niet als er niet gevalideerd wordt.

Als je graag ingewikkelde semantische voorwaarden vast wilt leggen en deze niet wilt controleren in imperatieve code kan je een 'schema' taal nemen met een hele andere aard: Schematron. Ik ken de kracht niet precies, maar daarmee kan je de meest bizarre voorwaarden vastleggen en met een implementatie dus documenten controleren. Of dit ook over de grenzen van een document kan, weet ik niet.

http://www.ascc.net/xml/schematron/

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


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
akakiwi schreef op 23 February 2003 @ 13:10:
Wat ik zou doen als ik jou was is het volgende.
Of, dump alles in een database, want dat lijkt mij het makkelijkste.
Of, maak gebruik van een DTD (Document Type Definition) bestand. In zo'n bestand zet je de complete layout van de XML, en deze bewaakt de integriteit van de database. Dan hoef je je ook geen zorgen te maken dat een klant verwijderd wordt terwijl daar nog orderregels van zijn.
Dan heeft DTD nieuwe features gekregen ;) DTD net zoals Schema (en Relax voor mbravenboer ;) ) zijn technieken om te controleren of je XML valide is, niet om referentiele integriteit te bewaken.

En een database is idd de beste oplossing en dat zou ik gewoonlijk ook wel doen. Maar ik was mijn XML aan het opfrissen en wou weten op welk punt XML nog interessant is als persistence techniek en vanaf welk punt je beter iets anders kan kiezen.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: DTD net zoals Schema (en Relax voor mbravenboer ;) ) zijn technieken om te controleren of je XML valide is, niet om referentiele integriteit te bewaken.
RELAX NG heet dat ;) .

Je kan wel iets in die richting doen: kijk maar eens in je dikke boek bij ID en IDREF ;) .

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

Pagina: 1