提问人:Daniel Marschall 提问时间:7/7/2018 更新时间:7/7/2018 访问量:43
在不违反标准的情况下使用单个标签?
Using an individual tag without breaking the standards?
问:
我想创建某种 API,人们可以在其中将隐藏信息包含在网站中,以便机器人可以读取信息。
我知道元标签是可能的,但我正在考虑使用某种单独的标签,因为这样我就可以使用 DOM,它使用起来更舒服一些,而且更容易被人类阅读。
例:
<html>
...
<body>
...
<mytag id="123" foo="bar" bar="foo"></mytag>
...
<mytag id="345" foo="bar" bar="foo"></mytag>
...
</body>
</html>
我的问题是,是否有可能以某种方式使这个单独的标签符合标准,也许可以通过创建某种 DTD ?
如果可能的话,我想支持 HTML 4.01、XHTML 和 HTML 5。
答:
必须支持 HTML 4.01 和 HTML5 使这变得困难。你不能使用元
名称
元素(适用于 HTML 4.01,但它们必须为 HTML5 注册),你不能使用自定义 data-*
属性(在 HTML 4.01 中不允许),你不能使用微数据(仅为 HTML5+ 定义),你不能使用自定义元素(仅为 HTML5+ 定义)。
我能想到两种方法。
script
元素作为数据块
在 HTML5 中,该元素也可用于数据块。示例:text/html、text/
plain
。script
HTML 4.01 规范没有这样定义它,但它应该是可能的/有效的(它会将其理解为“脚本”,但如果用户代理无法识别脚本的内容类型,则不应尝试运行它)。
缺点:内容不是文档 DOM 的一部分。
RDFa型
HTML 4.01 和 HTML5 允许这样做(您可能需要为较旧的 HTML 版本调整 DOCTYPE,例如 XHTML)。
您不能使用自定义元素,但可以添加 and 属性(用于名称-值对),也可以用于“项目”(例如,使用元素名称的用途),并且可以在 .property
content
typeof
meta
link
body
<div vocab="https://api.example.com/voc#" class="the-hidden-information">
<div typeof="Item-123">
<meta property="foo1" content="bar1" />
<meta property="foo2" content="bar2" />
</div>
<div typeof="Item-345">
<meta property="foo1" content="bar1" />
<link property="foo5" href="/some-url" />
</div>
</div>
(当使用 RDFa 1.0 而不是 1.1 时,您必须使用 xmlns
而不是 vocab
)
评论
<script type="application/json">
json_decode
)
评论
mytag