在不违反标准的情况下使用单独的标签?

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 使这变得困难。您不能使用 meta-name 元素(would work for HTML 4.01, but they have to be registered for HTML5), you can’t use custom data-* attributes (not allowed in HTML 4.01), you can’t use Microdata (only defined for HTML5+), you can’t use custom elements (only defined 表示 HTML5+)。

我可以想到两个办法

script 元素作为数据块

在 HTML5 中,script 元素 can also be used for data blocks. Examples: text/html, text/plain

HTML 4.01 规范 doesn’t define it like that,但它应该仍然是 possible/valid(它将理解为 "script",但用户代理不应尝试如果他们无法识别脚本的内容类型,则 运行 它。

缺点:内容不是文档的一部分DOM。

RDFa

allowed in HTML 4.01 and HTML5 (you might have to adapt the DOCTYPE for the older HTML versions, e.g., for XHTML).

您不能使用自定义元素,但您可以添加 propertycontent 属性(用于名称-值对),并且可以使用 typeof 用于 "items"(例如,您将使用元素名称做什么),并且可以在 body.[=31 中使用 metalink 元素(默认情况下隐藏) =]

<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