为HTML文档中的元数据的最佳做法?(Best practice for meta data in

2019-07-29 08:46发布

我大规模,高容量,面向公众的Web应用程序的工作。 应用程序的成功运行是非常重要的业务,所以有一些是对其运行MI工具。

其中一个MI工具基本上是着眼于被发送到浏览器的每个页面请求的HTML(我已经简化它了不少,但对于这个问题,那做一些分析,对HTML的一种工具的目的)

对于这个MI工具来获得它需要的数据,我们把元数据的头部元素。 目前我们做的HTML注释:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <!-- details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009] -->
    <!-- policy id = 1234567890 -->
    <!-- party id = 0987654321 -->
    <!-- email address = user@email.com -->
    <!-- error = 49 -->
    <!-- subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3-->
    ...

和工具简单地查找与正则表达式给定的元数据评论

由于这个数据是元数据,我想将它更改为HTML元标签,因为它感觉语义正确。 事情是这样的:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
    <meta name="policyId" content="1234567890" />
    <meta name="partyId" content="0987654321" />
    <meta name="emailAddress" content="user@email.com" />
    <meta name="error" content="49" />
    <meta name="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
    ...

这感觉更多的语义,而且我可以得到MI工具,它的工作没有问题 - 只是改变了正则表达式的情况。 但是现在让我与W3C验证的问题。 它不会验证,因为我使用的是元名称无法识别。 我得到的错误“错误值的详细信息对元素元属性名称:关键字细节未注册。” 它表明我对WHATWG维基注册这些名称值。

虽然我能做到这一点,感觉不对。 我的一些meta标签的是“通用”(如错误和EMAILADDRESS),所以我可能找到一个已经注册的名称值并使用它。 然而,他们大多是特定行业/组织。 感觉不对的注册名为subsessionid或partyId,因为这些是特定于我的组织和应用程序的公开名称值。

所以,问题是 - 什么被认为是最好的做法在这种情况下? 我应该让他们为HTML注释? 我应该使用元标记如上,而不是担心W3C验证失败? (尽管这是该组织越来越重要的),我应该尝试注册在WHATWG维基我META NAME值,但知道他们是不是很通用? 还是有另一种解决方案?

欣赏你的思想,欢呼

弥敦道


编辑来显示最终的解决方案:

完整的答案,我会用如下所示。 它基于丰富Bradshaws答案,所以他是一个公认的,但是这是我与完整性去:

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="">
<head>
    <meta name="application-name" content="Our app name" 
        data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
        data-policyId="1234567890"
        data-partyId="0987654321"
        data-emailAddress="user@email.com"
        data-error="49"
        data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3"
    />
    ...

这证实,那么所有的框打勾:)

Answer 1:

W3C验证是没有意义的。 HTML!= XML,所以没有任何架构验证它。 没有浏览器就会窒息,因为你添加一个meta元素与未注册的名称。 如果你真的担心,你可以使用数据属性像meta元素上:

<meta data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" data-policyId="0123456789" />

至少,你知道没有未来的规范将赋予意义的数据。

欲了解更多信息阅读: http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute



Answer 2:

虽然你的榜样可能工作,注意关键字application-name仅用于Web应用程序

对于通常的网页不是Web应用程序,或者如果没有application-name应给予,看到一些备选方案:

使用data-*在属性head

无需一meta元素。

<!DOCTYPE html>
<html>
<head
    data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" 
    data-policyId="1234567890"
    data-partyId="0987654321"
    data-emailAddress="user@email.com"
    data-error="49"
    data-subsessionid="bffd5bc0-a03e-42e5-a531-50529dae57e3">
</head>

使用微

您可以创建一个词汇,但是这并不需要在本地使用 。

<!DOCTYPE html>
<html>
<head itemscope>
  <meta itemprop="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />
  <meta itemprop="policyId" content="1234567890" />
  <meta itemprop="partyId" content="0987654321" />
  <link itemprop="emailAddress" href="mailto:user@email.com" /> <!-- or use a meta element if you don’t want to provide a full URI with "mailto:" scheme -->
  <meta itemprop="error" content="49" />
  <meta itemprop="subsessionid" content="bffd5bc0-a03e-42e5-a531-50529dae57e3" />
</head>

在使用数据script

script元件可用于数据块 。 您可以选择适合您的需要的任何格式。 例如用纯文本:

<!DOCTYPE html>
<html>
<head>
  <script type="text/plain">
    details = 52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]
    policyId = 1234567890
    partyId = 0987654321
    emailAddress = user@email.com
    error = 49
    subsessionid = bffd5bc0-a03e-42e5-a531-50529dae57e3
  </script>
</head>


Answer 3:

如果你尝试使用数据 - 格式的自定义属性添加到他们,像数据类型或数据的名称和省略了真实姓名属性,或者也许是所有设置为“抽象”或东西(我唐诺如果确认者给出了重复元名称问题):

<meta data-name="details" content="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" />

所以,你可以参考该数据名字与你的元的东西的工作...

http://html5doctor.com/html5-custom-data-attributes/



Answer 4:

无论哪种选择是技术上的工作,虽然解决方案可以归结为你的组织是如何看待页面验证。

正如你所说的,将信息添加到自定义元数据标签会作废您的标记。

对于我的组织,页面验证技术可访问的一部分,被认为是非常重要的。 做任何事情能够阻止网页从确认将不会被允许。

我不会尝试,因为这些是特定于组织,而不是供公众使用,以注册新的元数据的名称和值。

我可能会离开这个信息作为HTML注释,如果这是已经为您的组织工作。



文章来源: Best practice for meta data in a html document?