【问题标题】:Breaking multiple values in an attribute into multiple lines?将属性中的多个值分成多行?
【发布时间】:2013-12-20 17:37:17
【问题描述】:

让我举例说明:

<html lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# article: http://ogp.me/ns/article#">

    ...

</html>

如您所见,html 标签中的prefix 属性有多个定义。如何将它们分成多行? (考虑到换行符在缩小为单行时相当于一个空格......这有点困难。)

这算正常吗?

<html lang="en-US" prefix="
    og: http://ogp.me/ns#
    fb: http://ogp.me/ns/fb#
    article: http://ogp.me/ns/article#
">

编辑: Facebook 这样做:https://developers.facebook.com/docs/payments/product/

<html lang="en-US" prefix=
    "og: http://ogp.me/ns#
    fb: http://ogp.me/ns/fb#
    article: http://ogp.me/ns/article#">

【问题讨论】:

  • 像这样将 HTML 标记拆分为多行会导致您在某些浏览器中出现问题。
  • 在大多数浏览器中都可以,但是有什么需要呢?
  • @RaunakKathuria 美化长代码。

标签: html coding-style markup


【解决方案1】:

属性值不同。每个空白字符都存储在 DOM 中。差异是否重要取决于属性的定义。许多属性,例如class,被定义为以一组空格分隔的token作为值,对于它们来说,token之间或第一个token之前和最后一个token之后的空白字符的数量和类型不问题。

prefix 属性不在 HTML 规范或草稿中。相关规范为RDFa Core 1.1,将prefix属性定义为 “前缀名称 IRI 对的空格分隔列表”并包含类似

的示例
<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="foaf: http://xmlns.com/foaf/0.1/
          dc: http://purl.org/dc/terms/"
  >

所以对于prefix 属性,问题中的格式是可以接受的。 (在“符合”之外的意义上是否“正常”是一个见仁见智的问题。)

【讨论】:

    【解决方案2】:

    我不认为这一切都那么“正常”。一般来说,就像您问题的 cmets 所建议的那样,这在技术上是可行的,但是您打开页面时会遇到(不必要的)潜在解析错误。

    HTML WG's example regarding using newlines in the title attribute 为例。

    此外,除了 SVG(但从技术上讲,这不是 HTML)之外,我无法找到/记得一个我故意使用它的案例。

    但是,如果您通过W3C's validator 运行此示例,它将不会出现关于多行属性的错误或警告:

    <!DOCTYPE html>
    <html lang="en-US" prefix="
        og: http://ogp.me/ns#
        fb: http://ogp.me/ns/fb#
        article: http://ogp.me/ns/article#
    ">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Hello</title>
    </head>
    <body>
    <h1>Hello World!</h1>
    </body>
    </html>
    

    一般来说,安全总比后悔好。由于在这种情况下我找不到任何相反的例子,我敢说其他开发人员会同意(如果我错了,一定要纠正我)

    【讨论】:

    • 我看过一个例子:developers.facebook.com/docs/payments/product -- 但我不喜欢它,因此提出了问题。
    • @its_me 你是对的。好吧,我敢说这只是为了在特定情况下的可读性(比如meta 标签中的额外空格)。
    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2019-02-16
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2011-11-08
    • 2011-02-20
    • 2021-11-04
    相关资源
    最近更新 更多