我想创建一种API,使人们可以在网站内部包含隐藏的信息,以便机器人可以读取信息。
我知道使用元标记是可行的,但是我正在考虑使用某种单独的标记,因为这样我就可以使用更舒适的DOM,并且更容易被人阅读。< / p>
示例:
<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。
答案 0 :(得分:1)
必须支持HTML 4.01 和 HTML5,因此很难做到这一点。您不能使用 meta
-name
元素(对于HTML 4.01是would work,但是必须为HTML5注册),您不能使用自定义 data-*
属性(HTML 4.01不允许),您不能使用 Microdata (对于HTML5 +,则是only defined),不能使用< strong>自定义元素(对于HTML5 +,only defined)。
我可以想到两种方式。
script
元素作为数据块在HTML5中,script
元素can also be used for data blocks。示例:text/html
,text/plain
。
HTML 4.01规范doesn’t define it like that,但是它仍然应该是可能的/有效的(它将被理解为“脚本”,但是如果用户代理无法识别该脚本,则不应尝试运行它)脚本的内容类型)。
缺点:内容不属于文档DOM。
它是allowed in HTML 4.01和HTML5(您可能必须将DOCTYPE调整为旧的HTML版本e.g., for XHTML)。
您不能使用自定义元素,但是可以添加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
instead of vocab
)