显然,我无法确定HTML的片段是否有效,而不知道其余文档的外观(至少,我需要Doctype才能知道我对哪些规则进行了验证)。但是考虑到以下HTML5片段:

<article><header></article>My header</header><p>My text</p></article>

我当然可以确定是 无效的 没有看到文档的其余部分。因此,是否有“临时有效” html或“有效地适合有效文档中的某个位置”之类的东西?

它比以下伪代码还要多吗?

def is_valid_fragment(fragment):
 tmp = "<!doctype html><html><head><title></title></head><body>" + fragment + "</body></html>"
 return my_HTML5_validator.is_valid_html5_document(tmp)
有帮助吗?

解决方案

您当然可以谈论 XML 文档Weing 格式很好, ,您可以从任何单个元素及其子女中构建文件。因此,您可以谈论单一根深蒂固的XHTML5片段。您可以处理一个乘根的片段(例如 <img/><img/>)通过将其作为一系列文档进行处理,或将其包装在某些合成容器元素中 - 因为我们只是在谈论良好的形式,这是可以的。

但是,HTML5仍然允许SGML自关闭标签,例如 <hr> 等等,他们的自我关闭只能通过对Doctype的呼吁来确定。例如, <div><hr></div> 没关系,但是 <div><tr></div> 不是。如果您要处理DOM节点而不是文本作为输入,这将是一个无问题的内容,但是如果您有文本,则需要一个解析器,该解析器对HTML了解足够多,以便能够处理这些元素。但是,除此之外,一些直接从XML提起的非常简单的规则足以处理良好的形式。

如果您想超越格式,看看 有效性, ,我认为您仍然可以在XML的单一根深蒂固的片段上做到这一点。如规格所说:

如果XML文档具有关联的文档类型声明,并且该文档是否符合其中表达的约束,则有效。

DTD可以将任何元素命名为根部,然后机械师检查该元素与其子女之间的关系,其子女等,以及构成有效性的其他各种约束。

同样,您可以将该想法直接传输到HTML。不过,我不知道您如何处理倍增的片段。请记住,某些整体文档约束(例如ID是唯一的)可能会保留在片段中,但是一旦将片段插入其中,就不会在其他有效的文档中。

其他提示

您可以检查它是否形成良好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top