Правильные типы сущностей для XHTML, XML и внутри inline JavaScript

StackOverflow https://stackoverflow.com/questions/1734692

Вопрос

Во -первых, как я это понимаю, более уместно использовать числовые объекты в документе XHTML, например, как " вместо ", это правильно?

Во -вторых, для моего RSS XML -канала, какой тип сущности правильный? Назван или числовый? Я считаю, что это числовое, но см. Примеры обоих в моих поисках.

В -третьих, что из следующего является правильным для сущностей внутри встроенного JavaScript?

<span onmouseover="tooltip_on( '<strong>Tooltip inside a span</strong>
<br />Lorem ipsum dolor sit amet.<span>Lorem ipsum <code>dolor sit</code>
amet, consectetur adipisicing elit.</span>' );"
onmouseout="tooltip_off();">tooltip inside a span</span>

Или ... (теги внутри JS function преобразуются в названные объекты):

<span onmouseover="tooltip_on( '&lt;strong&gt;Tooltip inside a
span&lt;/strong&gt;&lt;br /&gt;Lorem ipsum dolor sit amet.
&lt;span&gt;Lorem ipsum &lt;code&gt;dolor sit&lt;/code&gt;
amet, consectetur adipisicing elit.&lt;/span&gt;' );"
onmouseout="tooltip_off();">tooltip inside a span</span>

РЕДАКТИРОВАТЬ 1:

Отличные ответы ниже, но, возможно, я должен был сформулировать мой вопрос по -разному.

Несмотря на вопрос о JavaScript, который вы бы использовали для своего веб -сайта и RSS -канала:

(1) Все числовые сущности, (2) все названные сущности, (3) смесь обоих: &amp; &quot; &lt; &gt;, с остальными численными.

Я склоняюсь к 3, потому что у моего сайта уже есть &amp; &quot; &lt; &gt; &#039; глубоко встроенный, плюс htmlspecialchars() Используется в нескольких местах.

РЕДАКТИРОВАТЬ 2:

Все хорошие ответы ниже, ребята. К сожалению, пришлось выбрать только один.

Это было полезно?

Решение

Во -первых, как я это понимаю, более уместно использовать числовые объекты в документе XHTML, например, как &#034; вместо &quot;, это правильно?

&quot; также определяется для XHTML. Таким образом, вы можете использовать оба.

Во -вторых, для моего RSS XML -канала, какой тип сущности правильный? Назван или числовый? Я считаю, что это числовое, но см. Примеры обоих в моих поисках.

Опять таки, &quot; также определяется для XML. Таким образом, вы можете использовать оба.

В -третьих, что из следующего является правильным для сущностей внутри встроенного JavaScript?

Второй правильный, так как простая < не допускается внутри объявления значения атрибута (но > является).


РедактироватьТеперь, когда вы уточнили свой вопрос:

Я бы использовал charset, который содержит все символы, которые мне нужны. Поэтому, если вы хотите иметь возможность использовать практически любой символ, используйте Unicode и кодируйте символы с UTF-8.

Таким образом, вы можете кодировать любого символа с UTF-8 напрямую и не нужно использовать ссылки на символы для символов, отличных от специальных символов XML (по крайней мере, &, >, " а также ').

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

Другие советы

Во -первых, как я это понимаю, более уместно использовать числовые объекты в документе XHTML, например, «вместо», верно ли это?

Не совсем.

Есть две проблемы, о которых нужно беспокоиться.

Будет ли это простым старым XHTML или это будет совместимо с HTML xhtml?

Здесь нет &apos; IS HTML, поэтому вы не можете использовать его в HTML -совместимой XHTML (но вам нужно только использовать его в значениях атрибутов, разграниченных AN, так что просто используйте »вместо этого.

Будет ли это обрабатываться с помощью анализатора XML, который не знает DTD?

Если это так, то будут распознаны только общие XML объекты (quot, apos, gt, lt, amp).

С другой стороны, названные объекты гораздо более читаемы. Настоящие символы (например, через UTF-8) наиболее читаемы.

Во -вторых, для моего RSS XML -канала, какой тип сущности правильный?

Используйте quot, gt, lt, amp, где это необходимо и реальные символы в другом месте.

В -третьих, что из следующего является правильным для сущностей внутри встроенного JavaScript?

Лучше использовать НЕВЕДНЕНИЕ JS вместо внутренних атрибутов события.

Тем не менее, правила такие же, как и у любого другого атрибута HTML - только & И любой персонаж, который вы использовали для разграничения значения атрибута, должен быть представлен с помощью объекта.

  • <, & а также " в значениях атрибута, где " Разделитель: используйте &lt;, &amp; а также &quot;, соответственно.

Это предопределенные объекты в XML, поэтому будут работать с любым анализатором независимо от того, читает ли он тип документа. Они также являются нормальными, определенными сущностями в HTML.

Числовые ссылки на символы так же действительны, но немного сложнее читать.

  • > В текстовом контенте: используйте &gt; или оставить как -is.

> Обычно не нужно сбежать, он всегда является совершенно законным в значении атрибута, и он является законным в текстовом содержании, если он не является частью ]]> последовательность. (Это неясная, бессмысленная и иногда подписная часть XML-спецификации.) Вы можете всегда избегать его в текстовом контенте, просто чтобы быть в безопасности и не запомнить это правило. (Это то, что делает канонический XML.)

Числовые ссылки на символы так же действительны, но немного сложнее читать.

  • ' в значениях атрибута, где ' Разделитель: используйте &#39;.

Числовая ссылка на символ здесь наиболее правильная, потому что XML предопределенная сущность &apos; Технически не определяется стандартом HTML4 (даже если он будет работать во всех современных браузерах). Опоздание с добавлением этой сущности отражает общую практику всегда использования " Как значения атрибута.

  • не ASCII персонажи: включить как есть

Пока вы используете и объявляете UTF-8, вы можете просто выплюнуть персонажей прямо. Меньшие, более читаемые результаты.

  • не ASCII символы (без Unicode): используйте цифровую ссылку на символ

Если по какой-то причине вы не можете использовать UTF-8 (boooo !!!), используйте ссылку на символ, например &#xE9; в предпочтении HTML сущностей. HTML -сущности в любом случае охватывают только очень небольшую часть набора символов Unicode; Можно также использовать их для всех IMO. Я лично предпочитаю использовать &#x... Гекс-эскапии для персонажей, не относящихся к ASCII, так как традиционно относится к символам Unicode их шестигранным кодом «U+XXXX».

Хотя использование HTML -сущностей вполне достоверно в документе XHTML, это означает, что анализатор должен получить внешние объекты, такие как DTD, чтобы выяснить, каковы объекты. Если вы придерживаетесь предопределенных сущностей и ссылок на символы, вы можете использовать легкий неэксперт-фактор, не включающий XML-анализатор XML, не теряя способности найти текстовые, в том числе и ссылаются на ссылки в документе.

Ситуация с RSS мрачна, как обычно со всеми различными версиями RSS, скрывающимися. RSS 0,91 имел DTD, который включал в себя более старые объекты HTML 3.2 Standard, но предыдущий официальный системный URL для DTD стал ходьями. (В надоедливой и ненужной части интернет -вандализма владельцы Netscape, AOL, сломали ссылку в переоборудовании несколько лет назад. Не только это, но и 302 вам на своей домашней странице, если вы попытаетесь получить к нему или любой другой адрес на Старый сайт, обслуживая, с помощью плохо написанной HTML-страницы клиентам, ожидающим DTD. Bad AOL, 302-404 настолько фиктивны.)

RSS 2.0 вообще не имеет официального DTD. Поэтому в любом случае избегайте HTML -сущностей, используя предопределенные объекты и числовые ссылки на символ в предпочтениях.

onmouseover="tooltip_on( '<strong>Tool...

Не допустимо ни в одном типе документа. < недействителен в значении атрибута.

onmouseover="tooltip_on( '&lt;strong&gt;Tooltip...

Действительный, но нечитаемый. Я второе ненавязчивое предложение Javascript.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top