我正在开发一个规模较大、访问量高且面向公众的Web应用程序。应用程序的成功运行对业务非常重要,因此有许多MI工具针对它运行。
其中一个MI工具基本上查看每个页面请求发送到浏览器的html(我已经大大简化了它,但为了这个问题,它是一个对html进行一些分析的工具)。
为了使这个MI工具获取所需的数据,我们将元数据放在head元素中。目前,我们将其作为html注释来处理:
虽然我可以这样做,但感觉不太对。我的一些元标记是“通用的”(例如error和emailAddress),因此我可能可以找到已经注册的名称值并使用它们。但是,它们中的大多数都是行业/组织特定的。如果我注册一个名为subsessionid或partyId的公共名称值,那么这就有些不妥,因为这些名称值是特定于我的组织和应用程序的。
因此,问题是 - 在这种情况下,什么被视为最佳实践?我应该将它们留作HTML注释吗?我应该像上面那样使用元标记,并不担心w3c验证失败吗? (尽管对组织越来越重要)我应该尝试在WHATWG wiki上注册我的元名称值,但知道它们不是非常通用吗?还是有其他解决方案?
感谢您的想法,谢谢
Nathan
编辑以显示最终解决方案:
我要采用的完整答案如下。它基于Rich Bradshaws的回答,因此他的回答是被接受的,但这是我为了完整性而采用的:
其中一个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-->
...
这个工具会使用正则表达式查找给定的元数据注释。
由于这些数据是元数据,我想将其更改为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验证器带来了问题。它无法验证,因为我使用的元名称未被识别。我会收到错误消息“元素meta上的属性名称的值details不正确:关键字details未注册。”,并建议我在WHATWG wiki上注册这些名称值。虽然我可以这样做,但感觉不太对。我的一些元标记是“通用的”(例如error和emailAddress),因此我可能可以找到已经注册的名称值并使用它们。但是,它们中的大多数都是行业/组织特定的。如果我注册一个名为subsessionid或partyId的公共名称值,那么这就有些不妥,因为这些名称值是特定于我的组织和应用程序的。
因此,问题是 - 在这种情况下,什么被视为最佳实践?我应该将它们留作HTML注释吗?我应该像上面那样使用元标记,并不担心w3c验证失败吗? (尽管对组织越来越重要)我应该尝试在WHATWG wiki上注册我的元名称值,但知道它们不是非常通用吗?还是有其他解决方案?
感谢您的想法,谢谢
Nathan
编辑以显示最终解决方案:
我要采用的完整答案如下。它基于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"
/>
...
这个验证通过,所以所有的框都被勾选了 :)