0

首先,按照我的理解,在 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:

伙计们,下面所有的好答案。只好选了一个,可惜了。

4

3 回答 3

0

首先,按照我的理解,在XHTML文档中使用数字实体比较合适,比如“代替”,对吗?

不完全是。

有两个问题需要担心。

这将是普通的旧 XHTML 还是 HTML 兼容的 XHTML?

没有&apos;HTML,所以你不能在兼容 HTML 的 XHTML 中使用它(但你只需要在用 ' 分隔的属性值中使用它,所以只需使用 " 代替。

这将使用不支持 DTD 的 XML 解析器进行处理吗?

如果是这样,则只会识别通用 XML 实体(quot、apos、gt、lt、amp)。

另一方面,命名实体更具可读性。真实字符(例如通过 UTF-8)是最易读的。

其次,对于我的 RSS XML 提要,哪种实体类型是正确的?

在需要的地方使用quot、gt、lt、amp,在其他地方使用真实字符。

第三,以下哪项对于内联 JavaScript 中的实体是正确的?

最好使用不显眼的 JS而不是内在的事件属性。

也就是说,规则与任何其他 HTML 属性的规则相同——只是&你用来分隔属性值的任何字符都需要用实体表示。

于 2009-11-14T16:22:03.423 回答
0

首先,按照我的理解,在 XHTML 文档中使用数字实体更合适,比如&#034;代替&quot;,对吗?

&quot;也为 XHTML 定义。所以你可以同时使用两者。

其次,对于我的 RSS XML 提要,哪种实体类型是正确的?命名的还是数字的?我相信它是数字,但请在我的搜索中查看两者的示例。

同样,&quot;也是为 XML 定义的。所以你可以同时使用两者。

第三,以下哪项对于内联 JavaScript 中的实体是正确的?

第二个是正确的,因为<在属性值声明中不允许使用纯文本(但>可以)。


编辑    现在您完善了您的问题:

我会使用包含我需要的所有字符的字符集。因此,如果您希望能够使用几乎任何字符,请使用 Unicode 并使用 UTF-8 对字符进行编码。

因此,您可以直接使用 UTF-8 对任何字符进行编码,并且无需对 XML 的特殊字符(至少 、 和 )以外的字符使用&字符>引用。"'

在这里,您可以在命名或数字字符引用之间自由选择。使用您更喜欢的或您的编程语言使用/喜欢的。

于 2009-11-14T16:42:11.123 回答
0
  • <,在属性值中,&分隔符在哪里:分别使用和。""&lt;&amp;&quot;

这些是 XML 中的预定义实体,因此可以与任何解析器一起使用,无论它是否读取文档类型。它们也是 HTML 中正常定义的实体。

数字字符引用同样有效,但略难阅读。

  • >在文本内容中:使用&gt;或保留原样。

>通常不需要转义,它在属性值中始终是完全合法的,并且只要它不构成]]>序列的一部分,它在文本内容中也是合法的。(这是 XML 规范中一个晦涩、毫无意义且有时被忽略的部分。)您可能更喜欢始终在文本内容中对其进行转义,以确保安全并且不必记住此规则。(这就是规范 XML 所做的。)

数字字符引用同样有效,但略难阅读。

  • '在属性值中',分隔符在哪里:使用&#39;.

数字字符引用在这里是最正确的,因为 XML 预定义实体&apos;在技术上不是由 HTML4 标准定义的(即使它适用于所有当前浏览器)。添加此实体的延迟反映了始终"用作属性值分隔符的常见做法。

  • 非 ASCII 字符:按原样包含

只要您使用并声明 UTF-8,您就可以直接吐出字符。更小,更易读的结果。

  • 非 ASCII 字符(无 Unicode):使用数字字符引用

如果由于某种原因您不能使用 UTF-8(嘘!!!),请使用字符引用(例如&#xE9;优先于 HTML 实体)。无论如何,HTML 实体只覆盖了 Unicode 字符集的一小部分;不妨将它们用于所有 IMO。我个人更喜欢对&#x...非 ASCII 字符使用十六进制转义,因为传统上通过 'U+xxxx' 十六进制代码来引用 Unicode 字符。

尽管在 XHTML 文档中使用 HTML 实体非常有效,但这意味着解析器必须获取外部实体(例如 DTD)才能确定实体是什么。如果您坚持使用预定义的实体和字符引用,则可以使用轻量级的不包含外部实体的 XML 解析器,而不会失去在文档中查找包含文本的实体引用的能力。

RSS 的情况很模糊,就像往常一样,潜伏着所有不同的 RSS 版本。RSS 0.91 的 DTD 包含旧的 HTML 3.2 标准的实体,但 DTD 的先前官方 SYSTEM URL 已成为步行者。(几年前,Netscape 的所有者 AOL 在一次令人讨厌且不必要的互联网破坏行为中破坏了该链接。不仅如此,如果您尝试访问它或任何其他地址,他们还会 302 访问他们的主页旧站点,因此向期望 DTD 的客户提供编写糟糕的 HTML 页面。糟糕的 AOL,302-404 是如此虚假。)

RSS 2.0 根本没有正式的 DTD。因此,无论哪种方式,避免使用 HTML 实体,优先使用预定义的实体和数字字符引用。

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

不允许在任何文档类型中使用。<在属性值中无效。

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

有效但不可读。我支持 David 的 Unobtrusive JavaScript 建议。

于 2009-11-14T19:02:24.177 回答