Toon posts:

[XML] DTD van mysql database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een DTD maken van mijn volledige mysql database. Echter loop ik tegen het volgende probleem aan.

Ik defineer een element voor de tabel, bijvoorbeeld:

<!ELEMENT Team (id, name, game_id)*>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT game_id (#PCDATA)>

Nu wil ik in dezelfde DTD een andere tabel opnemen. Deze tabel heeft ook een ID veld. Als ik dan nogmaals <!ELEMENT id (#PCDATA)> gebruikt, dan krijg ik een foutmelding:
element 'id' already defined. Dit geld overigens ook voor name en andere velden die in andere tabellen ook gebruikt worden. Is hier een oplossing voor?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ja, gebruik een andere XML schema taal. In DTDs heb je geen scheiding tussen namen van elementen en types van elementen. De naam van een element is gelijk ook de manier waarop je er naar verwijst. Dit is geen groot probleem zolang ze ook precies dezelfde content kunnen hebben, maar dit is vaak niet het geval. In XML schema talen zoals RELAX NG en W3C XML Schema is er een scheiding tussen typen en element namen, waardoor je dezelfde element naam kan gebruiken voor verschillende constructies.

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


Verwijderd

Topicstarter
Ik wil geen scheiding van namen en types. Ik wil alleen kunnen aangeven dat het element team een aantal childs heeft waarvan een id is. Andere tabellen hebben dit ook en daar moet het dus ook kunnen.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Je zou kunnen overwegen om een tabel prefix voor je veldnamen op te nemen: team_id, team_game etc. Je vermijdt dan in ieder geval de name-collisions die nu optreden. Waarom zou je geen Schema gebruiken?

With the light in our eyes, it's hard to see.