Vraag & Antwoord

Webprogrammeren & scripting

DTD dubbele elementen

6 antwoorden
  • Ik heb een website opgezet met behulp van XML en XSL. Dit moet onderhouden worden met behulp van een XML programma XMetal. Deze kan alleen de content aanpassen. Dit is ook het doel achter deze structuur. Nu wil dit programma dat je gebruik maakt van een DTD. Zo heb ik een tag <alinea> en <subalinea> hierin kan ik bijde gevallen de tags <nadruk>(bold) voorkomen. Nu wil ik deze dus in bijde elementen kunnen gebruiken. Maar mijn DTD geeft aan dat ik geen dubbele elementen mag gebruiken. Heeft iemand een idee hoe ik dit probleem kan oplossen zonder nieuwe tags aan te hoeven maken?
  • Ik heb weinig kaas gegeten van XSL, dus als ik iets doms zeg moet je het maar negeren... Hoe dan ook, volgens mij hoef je ook helemaal geen twee elementen te definiëren, alleen moet je in je DTD zetten dat <nadruk> in zowel <alinea> als <subalinea> mag voorkomen. (Misschien in de vorm van inline element tov een block level element) Ik hoop dat dit helpt. - Bas
  • Ik werk in Framemaker met dtd's, weet niet of dat op dezelfde manier gaat als bij je xml/xsl-app. Werkt dit: <!ELEMENT alinea - - (subalinea | #PCDATA) +(nadruk) > <!ELEMENT subalinea - - (#PCDATA) > <!ELEMENT nadruk - - (#PCDATA) > Wat is een subalinea eigenlijk? Bedoel je iets van een tweede alinea in je topelement? Dus dat je zoiets hebt: <topelem> <alinea><nadruk>vette</nadruk> tekst</alinea> <subalinea>nog een <nadruk>vette</nadruk> tekst </subalinea> </topelem> Ik ging uit van: <topelem> <alinea>tekst <subalinea>nog een tekst</subalinea></alinea> </topelem> Eerste kun je oplossen ("sub" weghalen en gewoon met <alinea>'s werken, maar je subalinea zal dan iets van een indent ofzo hebben) met: <!ELEMENT topelem - - (alinea?, subalinea?) > <!ELEMENT alinea - - (#PCDATA) +(nadruk) > <!ELEMENT subalinea - - (#PCDATA) +(nadruk) > <!ELEMENT nadruk - - (#PCDATA) > Post anders je dtd es.
  • Het is de bedoeling om bijde wijze te hanteren, dit zodat er een ander opmaak meegegeven kan worden aan een blok tekst. Ik maak namelijk een opzet voor mensen die geen kennis hebben van technische zaken en opmaak maar straks wel enige vorm van opmaak willen toepassen. Daarom heb ik een subalinea en geef hier aan in mijn CSS een iets andere stijl mee. Dit is mijn huidige opzet voor een DTD [code:1:2acad2bdcc] <!ELEMENT website (titel?, pagina?)> <!ELEMENT titel (#PCDATA)> <!ELEMENT pagina (paginatitel?, content?, overig?)> <!ELEMENT paginatitel (#PCDATA)> <!ELEMENT content (alinea*)> <!ELEMENT alinea (nadruk*, tekstlink*, afbeelding*, lijst*, volgenderegel, subalinea*)> <!ELEMENT nadruk (#PCDATA)> <!ELEMENT tekstlink (#PCDATA)> <!ELEMENT afbeelding (img+, alt+)> <!ELEMENT img (#PCDATA)> <!ELEMENT alt (#PCDATA)> <!ELEMENT lijst (item+, itemlink*)> <!ELEMENT item (#PCDATA)> <!ELEMENT itemlink (#PCDATA)> <!ELEMENT volgenderegel (#PCDATA)> <!ELEMENT subalinea (nadruk*)> <!ELEMENT overig (links*, objecten*)> <!ELEMENT links (kop, link+)> <!ELEMENT kop (#PCDATA)> <!ELEMENT link (#PCDATA)> <!ELEMENT object (objectnaam)> <!ELEMENT objectnaam (#PCDATA)> [/code:1:2acad2bdcc]
  • Nu laat hij wel dubbele elementen toe, sterker nog hij laat alles overal toe. En dat is nou net niet de bedoeling. Ik wil dmv de DTD een positie aangeven waar elk element voor zou mogen komen. enige tips?
  • Een [url=http://www.w3schools.com/dtd/]tutorial[/url] zou niet misstaan. Hij laat alles overal toe? Ik mis: <!DOCTYPE website [ ... ]> rond je elementdeclaraties. Misschien de oorzaak waarom XMetal er niet goed mee omgaat? Zoals ik hem lees kun je juist maar heel beperkt omgaan met elementen. De komma geeft opeenvolging aan, terwijl je bijv. binnen een alinea willekeurig links, afbeeldingen etc. wilt kunnen gebruiken. Daar gebruik je include voor: +(elem | elem | elem). In een alinea moet toch ook gewone tekst kunnen worden geplaatst, en een subalinea is toch ook een alinea, niet een onderdeel van een alinea?: <!ELEMENT alinea (#PCDATA) +(nadruk | tekstlink | afbeelding | lijst | volgenderegel)> <!ELEMENT subalinea (#PCDATA) +(nadruk | tekstlink | afbeelding | lijst | volgenderegel)>

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.