Nat*_*ell 69 html html5 w3c-validation meta-tags
我从事大规模,大批量,面向公众的Web应用程序.应用程序的成功运行对业务非常重要,因此有许多MI工具可以针对它运行.
其中一个MI工具实际上是查看每个页面请求发送到浏览器的html(我已经对它进行了很多简化,但是出于这个问题的目的,它是一个对html进行一些分析的工具)
对于这个MI工具来获取它需要的数据,我们将元数据放在head元素中.目前我们以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-->
...
Run Code Online (Sandbox Code Playgroud)
该工具只需使用正则表达式查找给定的元数据注释
由于这些数据是元数据,我想将其更改为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" />
...
Run Code Online (Sandbox Code Playgroud)
这感觉更加语义,我可以让MI工具使用它没有问题 - 只是改变正则表达式的情况.但是它现在给我一个w3c验证器的问题.它不会验证,因为我正在使用的元名称无法识别.我收到错误"元素元素属性名称的错误值详细信息:未注册关键字详细信息".它建议我在WHATWG维基上注册这些名称值.
虽然我能做到这一点,但感觉不对.我的一些meta标签是'通用的'(例如error和emailAddress),所以我可能会找到已注册的名称值并使用它.但是,大多数都是针对行业/组织的.注册名为subsessionid或partyId的公共名称值感觉不对,因为这些值特定于我的组织和应用程序.
那么,问题是 - 在这种情况下什么被认为是最佳做法?我应该把它们留作html评论吗?我应该如上所述使用meta标签而不担心w3c验证失败吗?(虽然这对组织越来越重要)我应该尝试在WHATWG维基上注册我的元名称值,但是知道它们不是非常通用的吗?还是有其他解决方案吗?
欣赏你的想法,欢呼
弥敦道
编辑以显示最终解决方案:
我要完整的答案如下.它基于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"
/>
...
Run Code Online (Sandbox Code Playgroud)
这个验证,所以所有方框都勾选了:)
Ric*_*haw 38
W3C验证毫无意义.HTML!= XML,因此没有任何架构可以验证它.没有浏览器会因为你添加了一个带有未注册名称的元元素而窒息.如果您真的很担心,可以在meta元素上使用data属性,例如:
<meta data-details="52:AS6[rxSdsMd4RgYXJgeabsRAVBZ:0406139009]" data-policyId="0123456789" />
Run Code Online (Sandbox Code Playgroud)
至少你知道未来的规范将不会给你的数据带来意义.
欲了解更多信息,请阅读:http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute
uno*_*nor 30
虽然您的示例可能有效,但请注意该关键字application-name仅适用于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>
Run Code Online (Sandbox Code Playgroud)
您可以创建词汇表,但这不是本地使用所必需的.
<!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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)