在不违反标准的情况下使用单独的标签?
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).
您不能使用自定义元素,但您可以添加 property
和 content
属性(用于名称-值对),并且可以使用 typeof
用于 "items"(例如,您将使用元素名称做什么),并且可以在 body
.[=31 中使用 meta
和 link
元素(默认情况下隐藏) =]
<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
)
我想创建某种 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).
您不能使用自定义元素,但您可以添加 property
和 content
属性(用于名称-值对),并且可以使用 typeof
用于 "items"(例如,您将使用元素名称做什么),并且可以在 body
.[=31 中使用 meta
和 link
元素(默认情况下隐藏) =]
<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
)