好的,只要你愿意接受一些限制,这是可行的。以下是操作方法:
在
https://github.com/validator/validator/blob/master/schema/html5/meta.rnc#L33
文件,更改
head.inner
为此:
head.inner =
( title.elem
& base.elem?
& common.inner.metadata
),
meta.property.dct.title.elem,
meta.property.dct.type.elem
meta.property.dct.title.elem =
element meta { empty & meta.property.dct.title.attrs }
meta.property.dct.title.attrs =
( meta.attrs.property.dct.title
& meta.name.attrs.content
)
meta.attrs.property.dct.title =
attribute property { string "dct:title" }
meta.property.dct.type.elem =
element meta { empty & meta.property.dct.type.attrs }
meta.property.dct.type.attrs =
( meta.attrs.property.dct.type
& meta.name.attrs.content
)
meta.attrs.property.dct.type =
attribute property { string "dct:type" }
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta property=dct:title content=bar>
<meta property=dct:type content=bar>
</head>
<body></body>
</html>
但任何不同时具有
<meta property=dct:title content=â¦>
元素和
<meta property=dct:type content=â¦>
按这个顺序
所以最大的限制是不能使用交织(
&
)但相反,您需要为
meta
元素。
Interleave In RNC
和
Can relaxng specify an unordered set of elements with the same name, but different attributes?
和
https://www.oasis-open.org/committees/relax-ng/spec-20011203.html#interleave-restrictions
其要点是:禁止对同名元素进行交叉定义,并在RelaxNG中添加故意设计限制,以使实现更可行。
因此,上述(重新)定义
头部.内部
表示HTML
head
元素允许具有:
-
-
title
要素
-
base
-
common.inner.metadata
script
noscript
,
template
,
style
link
和
元
-
元
带a的元素
property=dct:title
-
后跟一个必需的
元
带a的元素
property=dct:type
我认为这是最接近你想要的,只要你使用RelaxNG。
头
以下子元素:
也就是说,它不会(至少金不会)告诉你你错过的人有
.
当声明这个时,我得到了类似数据和字符串错误的东西
我认为你有这个问题是因为你在这样做:
common.attrs.rdfa.property.title = attribute property {"dct:title"}
common.attrs.rdfa.property.title = attribute property {string "dct:title"}
也就是说,您需要指定
string
common.attrs.rdfa.property
就要求文档同时具备这两种功能而言,它永远无法满足您的需求
<元属性=dct:标题内容=>
和
<元属性=dct:类型内容=>
dct:title
和
dct:type
的值
property