Кодировка символов XSLT - объект не определен - PullRequest
0 голосов
/ 07 мая 2009

Я использую XSLT и добился большого успеха, только что получил пару проблем.

Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: объект «Aring» не определен в объекте

В основном для некоторых нестандартных символов я получаю вышеуказанный тип ошибки. Я действительно хочу исправить это раз и навсегда. Я знаю о сопоставлении символов, но не могу записать каждую возможную комбинацию специальных символов.

Ответы [ 4 ]

1 голос
/ 07 мая 2009

При использовании без DTD XML поддерживает только очень ограниченное количество именованных объектов. (<, >, & и ", насколько я помню.) Чтобы включить другие символы вне кодировки без использования DTD, просто обратитесь к ним с помощью числовой сущности.

Например, Å соответствует Unicode-символу U + 00C5, «латинская заглавная буква A с кольцом над». Поэтому вы можете использовать Å (начальные нули могут быть опущены), чтобы включить его в ваш документ. Если вы работаете в Windows, вам очень поможет инструмент «Карта символов» (в XP: «Пуск»> «Программы»> «Стандартные»> «Системные инструменты»).

1 голос
/ 07 мая 2009

Включите DTD, который определяет сущности, такие как this

Вот сообщение на PHP.net , которое намекает, как его успешно включить.

DTD выше, вероятно, должно охватывать вас; &Кольцо; является сущностью HTML, и DTD выше охватывает все сущности HTML 4.01.

0 голосов
/ 06 января 2013

Обратите внимание, что есть также функция DOMDocument::loadHTML, которая обрабатывает документ как HTML и не сработает при этих объектах.

0 голосов
/ 07 мая 2009

& Aring; не является стандартной сущностью XML. Для поддержки этого в вашем XML-документе ваш синтаксический анализатор XML должен быть осведомлен о DTD, а документ должен иметь объявление DOCTYPE, которое либо определяет эту сущность, либо ссылается на DTD, которая определяет эту сущность. DTD XHTML, например, определяет & Aring; означать & # xC5;.

Правильно, что ваш анализатор XML DOM генерирует ошибку, когда он видит именованную сущность, о которой он еще не знает, и синтаксический анализатор либо не поддерживает DTD, либо отсутствует объявление DOCTYPE для того, что означает эта сущность. Сам XML определяет сущности & lt ;, & gt ;, & amp; и & quot ;. Это именованные объекты, которые можно безопасно использовать в любом приложении XML.

Если вы пишете документ самостоятельно, просто не используйте & Aring; - вместо этого используйте числовой эквивалент или, если вы используете Unicode, просто используйте символьный литерал.

Если вам нужно иметь возможность анализировать XML-документы от других людей, содержащих любые другие именованные объекты, и у документов нет DOCTYPE, то, как отметил Фрэнк, вам нужно исправить документ самостоятельно, вставив правильный DOCTYPE после объявления XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...