Введение
В документах SGML, HTML и XML логические конструкции, известные как данные символов и значения атрибутов, состоят из последовательностей символов, в которых каждый символ может отображаться напрямую (представляя сам себя) или может быть представлен последовательностью символов, называемой ссылкой на символ. Существуют два типа таких ссылок: числовая ссылка на символ и ссылка на именованную сущность. В этой статье перечислены ссылки на именованные сущности, допустимые в документах HTML и XML. Ссылка на именованную сущность отсылает к содержимому этой сущности. Объявление сущности создается в документах XML, SGML и HTML (до HTML5) с использованием синтаксиса <!ENTITY name "value"> в определении типа документа (DTD).
In SGML, HTML and XML documents, the logical constructs known as character data and attribute values consist of sequences of characters, in which each character can manifest directly (representing itself), or can be represented by a series of characters called a character reference, of which there are two types: a numeric character reference and a character entity reference. This article lists the character entity references that are valid in HTML and XML documents. A character entity reference refers to the content of a named entity. An entity declaration is created in XML, SGML and HTML documents (before HTML5) by using the <!ENTITY name "value"> syntax in a Document type definition (DTD).
Сущности, представляющие специальные символы в XHTML
В XHTML DTD явно декларируются 253 объекта (включая 5 предварительно определенных объектов XML 1.0), расширение которых представляет собой один символ, и которые, следовательно, могут быть неформально названы "символьными объектами". Они (за исключением объекта ') имеют те же имена и представляют те же символы, что и 252 символьных объекта в HTML 4.0. Кроме того, поскольку документы XHTML являются XML, они могут ссылаться на предопределенный объект ', который не входит в число 252 символьных объектов HTML 4.0. Дополнительные объекты любого размера могут быть определены для каждого документа в отдельности. Однако возможность использования ссылок на объекты в XHTML зависит от способа обработки документа: устаревшие сокращенные символьные объекты (без завершающей точки с запятой), унаследованные от HTML 2.0 (и все еще поддерживаемые в HTML 5.0), не поддерживаются в XML 1.0 и XHTML; завершающая точка с запятой должна присутствовать во всех ссылках на объекты, используемых в документах XML и XHTML. Если документ XHTML читается соответствующим процессором HTML 4.0, то безопасно можно использовать только 252 символьных объекта HTML 4.0. Использование ' или пользовательских ссылок на объекты может не поддерживаться и приводить к непредсказуемым результатам (рекомендуется использовать вместо этого числовую ссылку на символ '). Если документ читается XML-анализатором, который не читает внешние объекты, то безопасно можно использовать только пять встроенных XML-символьных объектов, хотя другие объекты могут быть использованы, если они объявлены во внутреннем подмножестве DTD. Однако современные XML-анализаторы распознают и реализуют встроенный кэш для ссылок SGML на DTD, используемые всеми стандартными версиями HTML, XHTML, SVG и MathML, без необходимости разбора и обработки внешних DTD по их URL и без необходимости обработки объектов, определенных во внутреннем подмножестве DTD документа. Если документ читается XML-анализатором, который читает внешние объекты и не реализует встроенный кэш для известных DTD, то безопасно можно использовать пять встроенных XML-символьных объектов (и числовые ссылки на символы). Остальные 248 символьных объекта HTML могут быть использованы, если XHTML DTD доступен анализатору в момент чтения документа. Другие объекты также могут быть использованы, если они объявлены во внутреннем подмножестве DTD, и XML-процессор может разбирать внутренние подмножества DTD. Анализаторы HTML 5.0 не могут обрабатывать XHTML-документы, и невозможно определить полностью валидный DTD для HTML5-документов, закодированных синтаксисом XHTML (в частности, невозможно проверить все имена атрибутов, особенно атрибуты "data *"); также все еще невозможно полностью проверить (с использованием стандартных схем W3C для XML, таких как XSD или relax NG) HTML5-документы, представленные синтаксисом XHTML, и в настоящее время требуется пользовательский валидатор, специфичный для HTML 5.0. Из-за особого случая с ', упомянутого выше, только ", &, < и > будут работать во всех ситуациях обработки XHTML.
Legacy abbreviated character entities (without the final colon) inherited from HTML 2.0 (and still supported in HTML 5.0) are not supported in XML 1.0 and XHTML; the trailing semicolon must be present in all entity references used in XML and XHTML documents. If the XHTML document is read by a conforming HTML 4.0 processor, then only the 252 HTML 4.0 character entities may safely be used. The use of ' or custom entity references may not be supported and may produce unpredictable results (it is recommended to use the numerical character reference ' instead). If the document is read by an XML parser that does not or cannot read external entities, then only the five built in XML character entities can safely be used, although other entities may be used if they are declared in the internal DTD subset. However, modern XML parsers recognize and implement a builtin cache for SGML references to DTDs used by all standard versions of HTML, XHTML, SVG and MathML, without needing to parse and process the external DTD via their URL and without needing to process entities defined in an internal DTD subset of the document. If the document is read by an XML parser that does read external entities and does not implement a builtin cache for well known DTDs, then the five built in XML character entities (and numeric character references) can safely be used. The other 248 HTML character entities can be used as long as the XHTML DTD is accessible to the parser at the time the document is read. Other entities may also be used if they are declared in the internal DTD subset and the XML processor can parse internal DTD subsets. HTML 5.0 parsers cannot process XHTML documents, and it's impossible to define a fully validating DTD for HTML5 documents encoded with the XHTML syntax (notably it's impossible to validate all attributes names, notably "data *" attributes); as well it's still impossible to fully validate (with W3C standard schemas for XML, such as XSD or relax NG) HTML5 documents represented in the XHTML syntax, and for now a custom validator specific to HTML 5.0 is required. Because of the special ' case mentioned above, only ", &, <, and > will work in all XHTML processing situations.