使用单个标签而不违反标准?

时间:2018-07-07 11:24:57

标签: html xhtml w3c-validation

我想创建一种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。

1 个答案:

答案 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/htmltext/plain

HTML 4.01规范doesn’t define it like that,但是它仍然应该是可能的/有效的(它将被理解为“脚本”,但是如果用户代理无法识别该脚本,则不应尝试运行它)脚本的内容类型)。

缺点:内容不属于文档DOM。

RDFa

它是allowed in HTML 4.01和HTML5(您可能必须将DOCTYPE调整为旧的HTML版本e.g., for XHTML)。

您不能使用自定义元素,但是可以添加propertycontent属性(用于名称/值对),并且可以将typeof用于“项目”(例如,您将使用元素名称的目的),并可以使用meta中的linkbody元素(默认情况下在视觉上隐藏)。

<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