有没有更好的方法在 XHTML 1.0 Transitional 中以语义方式编写常见问题解答?

2024-02-08

以下使用 XHTML 1.0 的常见问题解答代码段将无法在W3C 验证器 https://validator.w3.org/.

我将问答插入到定义列表中,以便在语义上维护问答关系。问题是,问题可以是多个段落。还有<dt>标签,至少在 XHTML 1.0 中,只允许内联元素。所以我不能放一个<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>

是否有语义上更好的方法使用 XHTML 1.0 Transitional 进行编码?

作为参考,我能找到的关于该主题的最新类似线程是从语义上构建常见问题解答的最佳方法是什么? https://stackoverflow.com/questions/2470194/what-is-the-best-way-to-semanticly-structure-a-faq。该线程很有用,但它没有涵盖问题中的多个段落。


使用dl元素似乎不太合适。

XHTML 1.0uses http://www.w3.org/TR/2002/REC-xhtml1-20020801/#abstractHTML 4.01 中的元素定义,其中dl element http://www.w3.org/TR/1999/REC-html401-19991224/struct/lists.html#h-10.3被定义为“定义列表”。问答列表可能不是一个定义列表(除非要定义的术语可能只是作为问题表述,例如“foo 的定义是什么?”)。

HTML5重新定义了dl element http://www.w3.org/TR/2014/REC-html5-20141028/grouping-content.html#the-dl-element:它不再是一个定义列表,而是一个“关联列表”,或者“描述列表”。将其用于问答可能是合适的,并且dt element http://www.w3.org/TR/2014/REC-html5-20141028/grouping-content.html#the-dt-element现在还可以包含大多数流内容元素(其中包括p)。因此,如果您想使用 (X)HTML5,这可能适合。 (这例如dt http://www.w3.org/TR/2014/REC-html5-20141028/grouping-content.html#the-dt-element甚至还显示了常见问题解答。)

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

  • 只需使用p并依赖文本语义,即“?”明确表明这是一个问题。您还可以在它们前面加上“问题:”和“答案:”(例如,在b).
  • 使用标题 (h1-h6) 对于每个问答。因为它们都不可能包含p元素,您可能必须使用“问题 1”之类的内容作为标题内容,并再次依赖文本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有更好的方法在 XHTML 1.0 Transitional 中以语义方式编写常见问题解答? 的相关文章