量化<p>的语义值,而不是</p> <div> </div>

时间:2009-11-18 21:16:11

标签: html xhtml

我正在将一些我无法控制的XML转换为XHTML。 XML模式为段落定义<para>标记,为列表定义<unordered-list><ordered-list>

我经常在这个XML中找到嵌套在段落中的列表。因此,直接转换会导致<ul>嵌套在<p>中,这在XHTML中是非法的。

我已经创建了一个处理它的方法列表,这里最明显的是:

  1. 不要担心。浏览器会很好。谁在乎。 (我不喜欢这个选项,但它是一个选项!)
  2. 在我的转换中写一个fancy-pants组件,确保所有<para>标签在无序列表开始之前关闭,然后重新打开。 (我最喜欢这个选项,但是由于嵌套的级别很复杂,我们可能没有预算)
  3. 只需将<para>转换为<div>并设置div上的边距,使其看起来像浏览器中的段落。这是发布有效XHTML的最简单的解决方案,但它取自标记的语义值。
  4. 我的问题是:

    • 如果选择3,我会失去多少价值?
    • 真的重要吗?
    • 对用户体验的实际影响是什么?
    • 如果你能引用引用,请(这很容易推测)。例如,我认为它可能会影响我们正在使用的Google Search Appliance的搜索结果。
    • 如果搜索字词出现在div中,它们的重量会减轻吗?
    • 或者它们与前面的标题标签之间的关联是否较少?

    我怎样才能找到这个?

3 个答案:

答案 0 :(得分:2)

我也反对这一点。

就个人而言,我认为标准的一部分是p不能包含列表的严重错误。我认为它在印刷上是合法的,因此它应该是合法的,原本打算成为文本的标记。

我可能因此而受到抨击,但XHTML在现实世界中已经崩溃并被烧毁,无论这是不是一个好主意。如果仅仅因为糟糕的标记和宽松的浏览器将继续永远地相互延续,那么今天HTML标记的常常可怕的标签汤将继续存在很长时间。

因此,我倾向于使用选项1。

在我看来,选项3也是可行的。虽然我没有证据,但我很确定没有任何搜索引擎疯狂到足以让我们对我们应用于HTML的大多数格式化标签产生任何信任。当然,metaa标签是明显的例外。

答案 1 :(得分:1)

首先,除非您现在设置每个可用的CSS属性以及将来可能提供的每个CSS属性,否则您无法保证<div>将匹配WRT样式与<p>。 (虽然我同意你可以接近,这可能已经足够了,但请继续阅读。)我不知道任何视觉浏览器或其他工具会以不同方式认真对待它们,但这同样是一件神器,恕我直言,目前在网络上普遍存在宽松的解释,因为它们的意义非常接近。

对于源数据中的每个<ul><unordered-list>是否正确转换?如果它们总是显示为块级内容而不是1)a,2)内联,3)列表;那是一个安全的赌注。如果是这样,您可以将段落分成两部分(如果您愿意,可以将整个内容包装在<div>中。)

示例输入:

<para>Yadda yadda: <unordered-list/> And so fin.</para>

输出:

<div>
<p>Yadda yadda:</p>
<ul/>
<p>And so fin.</p>
</div>

答案 2 :(得分:0)

好消息是这3个选项中的任何一个都可行。

有很多很多人会告诉你“如果它有效,就会忘记语义并做到这一点。”因此,选项1 可能会成为网站的最爱,如果有人问这里。

选项2 是我最喜欢的,并且在语义上是最好的。如果时间/预算允许,我会明确地做。

然而,选项3 紧随其后,希望这将回答您的问题:<div>元素和<p>元素几乎相同。实际上,最大的区别是语义。在大多数浏览器的CSS规范中,它们每个都只应用了一条规则:display: block