Ошибка синтаксического анализа XML: неопределенная сущность - специальные символы

Почему XML отображает ошибку на некоторых специальных символах, а некоторые из них в порядке?

например, ниже будет создана ошибка,

<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>L&ouml;ic</Name>
    </Customer>
</Customers>

но это хорошо,

<?xml version="1.0" standalone="yes"?>
<Customers>
    <Customer>
        <Name>&amp;</Name>
    </Customer>
</Customers>

Я конвертирую специальный символ через php -htmlentities('Löic',ENT_QUOTES) кстати.

как я могу обойти это?

спасибо.

EDIT:

я обнаружил, что он отлично работает, если я использую числовой символ, такой как Lóic

теперь Я должен найти, как использовать php для преобразования специальных символов в числовые символы!

2 ответов


в спецификации XML определены пять сущностей -&amp;, &lt;, &gt;, &apos; и &quot;

здесь множество сущностей, определенных в HTML DTD.

вы не можете использовать те из HTML В общем XML.

вы можете использовать числовые ссылки, но вам, вероятно, будет лучше просто получить свой кодировки символов прямо (что в основном сводится к:

  • установить ваш редактор!--9--> сохранить данные в UTF-8
  • если вы обрабатываете данные с помощью языка программирования, убедитесь, что это UTF-8 aware
  • если вы храните данные в базе данных, убедитесь, что она настроена для UTF-8
  • когда вы обслуживаете свой документ, убедитесь, что заголовки HTTP указывают, что это UTF-8 (в случае XML UTF-8 по умолчанию, поэтому не указывать ничего почти так же хорошо)

)


поскольку это не встроенный объект, это вместо внешнего объекта, который нуждается в объявлении в DTD.