Ho un documento XHTML che definisce diverse entità di testo nella sua DTD interna. Voglio che queste entità siano disponibili in altri documenti XHTML senza dover tagliare e incollare il DTD interno ovunque.
La risposta che sembra continuare a comparire con altri file XML (non specificamente XHTML) - ad esempio, qui: link - suggerisce che il file XHTML che voglio scrivere assomigli a questo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ENTITY % mydtd SYSTEM "x.ent">
%mydtd;
]>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Example</title>
</head>
<body>
<p>“&x; &y;”</p>
</body>
</html>
... dove il file x.ent ha questi contenuti:
<!ENTITY x "Hello">
<!ENTITY y "world!">
Ma no. Ad ogni modo, non mostra ciò che mi aspetto in nessuno dei browser con cui ho bisogno di lavorare. Mi aspetto di vedere "Ciao mondo!" racchiuso tra virgolette doppie a destra e a sinistra. Ma Firefox dice & ldquo; è un'entità non definita e Opera mostra il testo tra < p > e < / p > verbatim (visualizzazione di e commerciali anziché virgolette).
Ho anche provato ad inserire la DTD pubblica nella mia DTD interna, quindi:
<!DOCTYPE html [
<!ENTITY % publicdtd PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
%publicdtd;
<!ENTITY % mydtd SYSTEM "x.dtd">
%mydtd;
]>
Quindi Firefox si è lamentato che & x; era un'entità indefinita. Opera ha visualizzato le virgolette che mi aspettavo, ma ancora visualizzato & x; e & y; Verbatim; niente salvezza, niente mondo.
Ho pensato che x.ent non avesse bisogno di un tag XML, ma qualcuno ne ha inserito uno nel loro esempio di un file di definizioni di entità, quindi l'ho provato. Neanche questo ha funzionato.
C'è qualche ragione per cui questo non può funzionare in XHTML? O è un difetto in entrambi questi browser? O c'è un altro modo per condividere le entità tra più file? Sfortunatamente, ho bisogno di qualcosa che funzioni in questi due browser, o potrei anche non farlo affatto. Ma se è un difetto nella DTD XHTML 1.1, posso usare una versione diversa.