语义标记 - 有没有更好的方法来在 XHTML 1.0 过渡中对常见问题进行语义编码



以下使用 XHTML 1.0 的常见问题解答代码段将无法在 W3C 验证器中成功验证。

我将问答

插入定义列表中,以便在语义上维护问答关系。问题是,问题可以是多个段落。至少在 XHTML 1.0 中,<dt> 标记只允许内联元素。所以我不能在那里放置一个<p>标签,而不会在 W3C 验证器中抛出错误。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<dl>
    <dt>
        <p>This is a very long question.</p>
        <p>It has multiple paragraphs.</p>
    </dt>
    <dd>
        <p>This is the answer</p>
    </dd>
</dl>
</body>
</html>

有没有语义上更好的方法来使用 XHMTL 1.0 过渡对此进行编码?

作为参考,我可以找到的关于该主题的最新类似线程是,这是语义上构建常见问题解答的最佳方法是什么?该线程很有用,但是它没有涵盖问题中的多个段落。

使用 dl 元素似乎不合适。

XHTML 1.0使用HTML 4.01中的元素定义,其中dl元素被定义为"定义列表"。问答列表可能不是定义列表(除非,也许,要定义的术语只是表述为问题,例如,"foo的定义是什么?")。

HTML5重新定义了dl元素:它不再是一个定义列表,而是一个"关联列表"或"描述列表"。将其用于问答可能是合适的,dt元素现在还可以包含大多数流内容元素(包括p)。因此,如果您想使用(X)HTML5,这可能很合适。(dt的示例甚至显示了常见问题解答。

可能的替代方案,具体取决于实际内容和上下文:

  • 只需使用p并依靠文本语义,即"?"清楚地表明这是一个问题。您也可以在它们前面加上"问题:"和"答案:"(例如,在 b 中)。
  • 为每个问答使用标题(h1 - h6)。由于它们都不能包含p元素,因此您可能必须使用类似"问题 1"的内容作为标题内容,并再次依赖文本。

相关内容

  • 没有找到相关文章

最新更新