【发布时间】:2012-05-19 00:16:44
【问题描述】:
我从事大规模、大容量、面向公众的 Web 应用程序。应用程序的成功运行对业务非常重要,因此有许多 MI 工具可以针对它运行。
其中一个 MI 工具本质上是查看为每个页面请求发送到浏览器的 html(我已经对其进行了相当多的简化,但就这个问题而言,它是一个对html)
为了让这个 MI 工具获取它需要的数据,我们将元数据放在 head 元素中。目前我们以 html cmets 的形式进行:
<!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 wiki 上注册这些名称值。
虽然我可以这样做,但感觉不对。我的一些元标记是“通用的”(例如错误和电子邮件地址),所以我可能会找到一个已经注册的名称值并使用它。但是,它们中的大多数是特定于行业/组织的。注册一个名为 subsessionid 或 partyId 的公共名称值感觉不对,因为它们是特定于我的组织和应用程序的。
所以,问题是 - 在这种情况下,什么是最佳实践?我应该将它们保留为 html cmets 吗?我应该像上面那样使用元标记而不担心 w3c 验证失败吗? (尽管这对组织来说越来越重要)我是否应该尝试在 WHATWG wiki 上注册我的元名称值,但知道它们不是很通用?还是有其他解决方案?
欣赏你的想法,干杯
内森
编辑显示最终解决方案:
我要回答的完整答案如下。它基于 Rich 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"
/>
...
这验证了,所以所有的方框都打勾了:)
【问题讨论】:
-
根据whatwg.org/specs/web-apps/current-work/multipage/… 的规范,data- 属性不允许有任何大写字符。你的。并不是说我个人对此感到冒犯。
标签: html meta-tags w3c-validation