使用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?。该主题很有用,但它不包括问题中的多个段落。
答案 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
)。h1
- h6
)。由于它们既不包含p
元素,您可能必须使用&#34;问题1和#34;作为标题内容,并再次依赖文本。