2012-04-10 16 views
1

Gibt es eine Möglichkeit, XHTML-Entity-Referenzen in XML-Text ohne die DOCTYPE-DTD-Deklaration einzubetten? Die DOCTYPE-Zeile verursacht Probleme auf dem Java-Server, auf den sie ausgerichtet ist.wie XHTML in XML ohne DOCTYPE, CDATA oder Escapes einzubetten?

Entweichend die &; Sequenz ist nicht akzeptabel, noch ist in CDATA eingebettet. Die Referenzen müssen validiert werden.

Es ist möglich, die DTD aus der Schemadefinition anstelle der XML-Datendatei zu referenzieren.

Allgemeiner gesagt, was ist allgemein üblich, um XHTML (oder zumindest Entity-Referenzen) in XML einzubetten und validieren zu lassen?

Eine mögliche Lösung ist, die gesamte XHTML 1.0 DTD in ein Schema zu konvertieren, aber das klingt nicht wie die beste Idee.

Antwort

3

Haben Sie einen DOCTYPE ohne PUBLIC- oder SYSTEM-IDs probiert?

Sie können entweder die ENTITY Erklärungen direkt an das interne Untergruppe hinzufügen:

<!DOCTYPE foo [ 
<!ENTITY nbsp "&#160;"> 
<!ENTITY copy "&#169;"> 
<!ENTITY laquo "&#171;"> 
<!ENTITY reg "&#174;"> 
<!ENTITY deg "&#176;"> 
<!ENTITY plusmn "&#177;"> 
<!ENTITY sup2 "&#178;"> 
<!ENTITY sup3 "&#179;"> 
<!ENTITY frac14 "&#188;"> 
<!ENTITY frac12 "&#189;"> 
<!ENTITY frac34 "&#190;"> 
]> 
<foo/> 

oder Sie eine Parameter-Entity in eine externe Datei verweisen können/Dateien, die Ihre ENTITY Erklärungen haben:

<!DOCTYPE foo [ 
<!ENTITY % ents SYSTEM "xhtml-lat1.ent"> 
%ents; 
]> 
<foo/> 
2

Die XML ist nicht gut gebildet, wenn Sie andere Entity-Referenzen als die 5 vordefinierten haben und keinen Doctype haben.

Sie Dinge erheblich vereinfachen, wenn Sie numerische Zeichenverweise verwenden, anstatt genannt Entitätsverweise so

&#160; statt &nbsp;

Entweder verwenden, indem die ursprüngliche Generation zu modifizieren, wenn Sie steuern, dass, oder einfach nur die Entitäten erweitert durch Verwenden Sie einen beliebigen Xml-Parser oder einen einfachen Text ersetzen Sie per Perl oder gleichwertig. Sie können die vollständige Liste der HTML-Entity (5) in dtd oder Json oder anderen Formaten hier http://www.w3.org/2003/entities/2007/

erhalten