是否有更好的方法在XHTML 1.0 Transitional中对语法编码进行语义编码?

时间:2015-06-16 20:12:33

标签: xhtml semantic-markup

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

我正在将Q&amp; A插入定义列表中以保持问题&amp;从语义上回答关系。问题是,问题可以是多段。至少在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 Transitional是否有一种语义上更好的编码方式?

作为参考,我可以在主题上找到的最新类似线程是What is the best way to semanticly structure a FAQ?。该主题很有用,但它不包括问题中的多个段落。

1 个答案:

答案 0 :(得分:0)

使用dl元素似乎不合适。

XHTML 1.0 uses来自HTML 4.01的元素定义,其中dl element被定义为&#34;定义列表&#34;。 Q&amp; As列表可能不是定义列表(除非,或许,要定义的术语只是表达为问题,例如,&#34; foo的定义是什么?&# 34。)

HTML5重新定义dl element:它不再是定义列表,而是&#34;关联列表&#34;或&#34;描述列表&#34;。将它用于Q&amp; As可能是合适的,dt element现在也可以包含大多数流内容元素(包括p)。因此,如果您想使用(X)HTML5,这可能是合适的。 (example for dt甚至会显示常见问题解答。)

可能的替代方案,取决于实际内容和背景:

  • 只需使用p并依赖文本语义,即&#34;?&#34;明确表示这是一个问题。您也可以在前面添加&#34;问题:&#34;和&#34;答案:&#34; (例如,在b)。
  • 为每个Q&amp; A使用标题(h1 - h6)。由于它们既不包含p元素,您可能必须使用&#34;问题1和#34;作为标题内容,并再次依赖文本。