2011-06-28 19 views
17

Necesito poder hacer referencia a entidades HTML con nombre como • en lugar de la alternativa Unicode • en un documento XML. Tengo control sobre algunas partes del documento XML, como definir el DOCTYPE, pero hacer una búsqueda y reemplazo en el XML real no es una opción. Puedo obtener algunos elementos como   y & incluyendo el DOCTYPE de transición XHTML, pero necesito definir más manualmente. ¿Cómo hago esto?¿Cómo se definen las referencias de entidad HTML dentro de un documento XML válido?

- EDITAR -

Gracias a la respuesta de Jim, esto es lo que terminó con. Esto es muy bueno porque puedo utilizar las entidades de transición XHTML, y también añadir mi propia:

<!DOCTYPE 
    html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
    [ 
     <!ENTITY bull "&#8226;"> 
     <!ENTITY ldquo "&#8220;"> 
     <!ENTITY rdquo "&#8221;"> 
     ... etc ... 
    ] 
> 
+2

Si termina usando muchas declaraciones de entidad, considere ponerlas en un archivo separado y luego usar una entidad de parámetro para hacer referencia a ellas. –

Respuesta

13

Si se puede modificar el XML para incluir una DTD en línea se pueden definir las entidades allí:

<!DOCTYPE yourRootElement [ 
    <!ENTITY bull "&#8226;"> 
    .... 
]> 
+0

¡Impresionante, gracias! – mattmc3

+0

¡Esto es mágico! También se puede usar para crear archivos de manifiesto de Android, hace que sea fácil crear una plantilla sin cometer ningún error en el nombre del paquete o similar ... – Tonithy

3

no estoy cetain, pero creo que el XHTML DTD debe darle unas pocas entidades bastantes (253):

http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML

también en la especificación W3, hay una mención de DTD adicionales para caracteres especiales, etc. http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_dtd_xhtml_character_entities

Sin embargo, no he podido encontrar un ejemplo de implementación de las DTD de caracteres especiales.


Editar por DevNull

Aquí está un ejemplo de implementación extremadamente genérica de uno de los módulos DTD entidad. Para implementarlo, solo necesita agregar una entidad de parámetro que apunte al módulo.

<?xml version="1.0"?> 
<!DOCTYPE test [ 
<!ELEMENT test (#PCDATA)> 
<!ENTITY % xhtml-special SYSTEM "xhtml-special.ent"> 
%xhtml-special; 
]> 
<test>Here is a left double quote: &ldquo;</test> 
+0

Agregué un ejemplo de una implementación. Espero que no te moleste. Si esto no es lo que quieres decir, no dudes en borrar mi edición. –

+0

Cool, nice one @DevNull no sabía que podrías hacer eso. Entonces, ¿prueba "test (#PCDATA)" decirle al analizador que "prueba" es un Dato de personaje analizado? –

+0

Significa que el elemento 'test' puede contener" datos de caracteres analizados "(texto sin formato). –

Cuestiones relacionadas