Thomas J.S.: XSLT-ähnliche DTD

Beitrag lesen

Hallo,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pml SYSTEM "pml2.dtd">
<pml xmlns:pml="http://www.die-namespace-adresse.de/">
   pml:processing

»»

</body>
      </html>
   </pml:body>
</pml>

Wenn ich das allerdings in meinem XML Editor validieren lasse gibt es einen Fehler. Dies ist auch logisch, denn in der XHTML 1.0 DTD existieren die PML Elemente ja nicht.

Ich finde nicht, dass das logisch ist. Wie kommt XHTML überhaupt ins spiel, wenn du weder einen Namensraum geschweige die XHTML-DTD verwendest? --> *
Wenn dein Dokument nicht validiert, dann weil es nicht deiner DTD entspricht.

Allerdings geht das oben gennante beispiel ja in XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:template match="/">
      <html>
         <xsl:apply-templates />
      </html>
   </xsl:template>
</xsl:stylesheet>

* --> Das ist eine ganz andere Baustelle und hier ist es auch logisch. ;-) Hier sind die HTML-Elemente (wie auch in deinem XML übrigens) im Null-Namensraum (bzw. in keinem Namensraum) und gelten als Literale Ergebniselemente (du könntest statt <html>, <xsl:element name="html"> schreiben.)

Ich konnte im Internet keine DTD für XSLT finden.

Wurde schon beantwortet.

Meine Frage ist, wie ich es in meiner PML DTD hinbekomme, dass das oben angeführte funktionieren würde.

Mit Zeit und Aufwand und mit der "Modularization of XHTM" http://www.w3.org/TR/xhtml-modularization/ wäre das möglich.

»»Rein theoretisch müsste ich ja dafür eine Änderung der XHTML DTD vorhnehmen, aber ich hoffe es gibt auch einen anderen Weg?

Das kannst du zwar machen, aber ich glaube nicht, dass dir der Aufwand dafür wirklich bewusst ist.

Ich habe mir in meinem XML Edior einmal das Model der Elemente angesehen.

In welchem Editor?

Stutzig wurde ich über das {0-UNBOUNDED}. Ich hab dann versucht in meiner DTD zu schreiben

Das ist wohl eine Editor interne Syntax. DTD-Syntax ist das nicht.

Ich stehe also weiterhin auf dem Holzweg.
Ich hoffe mir kann jemand helfen?

https://forum.selfhtml.org/?t=116015&m=741816
"Es gibt beim W3C einen Ausschnitt einer möglichen XSLT DTD. Allerdings bleiben dort das Entity result-elements auch offen."

Du kannst natürlich versuchen aus der DTD-Fragment in der XSLT-Spezifikation eine eigene DTD zu erstellen:

<!ENTITY % xhtml.dtd SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 %xhtml.dtd;

<!ENTITY % result-elements "
%special.extra;
und alle weitere Element-Entities aus der XHTML-DTD
">

Aber dies gilt für XSL und nicht für dein XML, es sei denn du baust deine DTD ziemlich ähnlich auf.

Besser wärst du drann, wenn du dir die "Modularisierung von XHTML" http://edition-w3c.de/TR/2001/REC-xhtml-modularization-20010410/ anschaust. Wie gesagt Zeit und Aufwand.

Grüße
Thomas