Как определить ссылки на сущности HTML внутри действительного документа XML? - PullRequest
17 голосов
/ 28 июня 2011

Мне нужно иметь возможность ссылаться на именованные объекты HTML, такие как • вместо альтернативы Unicode • в документе XML. У меня есть контроль над некоторыми частями XML-документа, такими как определение DOCTYPE, но поиск и замена в реальном XML не возможен. Я могу получить некоторые элементы, такие как   и &, включая XHTML переходный DOCTYPE, но мне нужно определить больше вручную. Как мне это сделать?

- РЕДАКТИРОВАТЬ -

Благодаря ответу Джима, вот чем я закончил. Это здорово, потому что я могу использовать переходные объекты XHTML, а также добавить свои собственные:

<!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 ]

13 голосов
/ 28 июня 2011

Если вы можете изменить XML для включения встроенного DTD, вы можете определить сущности там:

<!DOCTYPE yourRootElement [
    <!ENTITY bull "&#8226;">
    ....
]>
3 голосов
/ 28 июня 2011

Я не уверен, но я думаю, что DTD XHTML должен дать вам довольно много сущностей (253):

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

Также в спецификации 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: &ldquo;</test>
...