Ответ 1
Если вы можете изменить XML для включения встроенного DTD, вы можете определить там сущности:
<!DOCTYPE yourRootElement [
<!ENTITY bull "•">
....
]>
Мне нужно иметь возможность ссылаться на именованные объекты HTML, такие как •
вместо альтернативы Unicode •
в документе XML. Я контролирую некоторые части документа XML, такие как определение DOCTYPE
, но выполнение find-and-replace в фактическом XML не является вариантом. Я могу получить некоторые элементы, такие как
и &
, включив переходный DOCTYPE XHTML, но мне нужно определить более вручную. Как это сделать?
- EDIT -
Спасибо Джим, ответьте, вот что я закончил. Это здорово, потому что я могу использовать переходные сущности XHTML, а также добавить свои собственные:
<!DOCTYPE
html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ENTITY bull "•">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
... etc ...
]
>
Если вы можете изменить XML для включения встроенного DTD, вы можете определить там сущности:
<!DOCTYPE yourRootElement [
<!ENTITY bull "•">
....
]>
Я не cetain, но я думаю, что DTD XHTML должен дать вам довольно много сущностей (253):
Также в спецификации w3 упоминается дополнительный DTD для специальных символов и т.д. http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_dtd_xhtml_character_entities
Однако мне не удалось найти пример реализации DTD специального символа.
Редактировать DevNull
Вот пример типичной реализации одного из DTD-модулей. Для реализации вам нужно только добавить объект параметра, указывающий на модуль.
<?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: “</test>