Pregunta

Yo, obviamente, no puede determinar si un fragmento de HTML es válido sin saber lo que el resto de las miradas de documentos como (como mínimo, necesitaría un tipo de documento con el fin de conocer las reglas que estoy validando en contra). Pero teniendo en cuenta el siguiente fragmento de HTML 5:

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

Desde luego, se puede determinar que es no válido sin ver el resto del documento. Entonces, ¿hay una cosa tal como "válido provisionalmente" HTML, o "válida provista encaja en un lugar determinado en un documento válido"?

¿Hay más que el siguiente pseudocódigo?

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)
¿Fue útil?

Solución

Por supuesto que se puede hablar de un XML documento Weing bien formada , y se puede construir un documento a partir de un solo elemento y sus hijos. De este modo se podría hablar de forma individual arraigadas están bien formados XHTML5 fragmentos. Se podría tratar con un fragmento arraigada multiplicar-(como <img/><img/>) por tratar con ella como una secuencia de documentos, o envolverlo en un elemento contenedor sintética - ya que sólo estamos hablando de la buena formación, que estaría bien

Sin embargo, HTML5 todavía permite que las etiquetas SGML de cierre automático, como <hr> y así sucesivamente, cuya auto-closingness sólo puede ser determinado por apelación al tipo de documento. Por ejemplo, <div><hr></div> está bien, pero no es <div><tr></div>. Si se tratara de DOM nodos en lugar de texto como entrada, esto sería un no-tema, pero si tiene texto, se necesitaría un programa de análisis, que sabe lo suficiente acerca de HTML para poder hacer frente a esos elementos. Más allá de eso, sin embargo, algunas reglas muy simples, levantadas directamente de XML, serían suficientes para manejar bien formado.

Si quería ir más allá de la buena formación y vistazo a algunos aspectos de la validez , creo que todavía se puede hacer eso a nivel fragmento arraigado por separado-con XML. Como dice la especificación:

  

Un documento XML es válido si tiene una declaración de tipo de documento asociado y si cumple los documentos con las limitaciones expresadas en él.

Una DTD puede nombrar cualquier elemento como la raíz, y la mecánica luego tomar el cuidado de verificar la relación entre ese elemento y sus hijos, y sus hijos y así sucesivamente, y los demás limitaciones que compensar validez.

Una vez más, puede transferir esa idea directamente a HTML. No sé cómo hacer frente a fragmentos arraigadas múltiplemente, sin embargo. Y tener en cuenta que ciertas restricciones de todo el documento (como identificadores de ser único) puede almacenar en el interior del fragmento, pero no en un documento de otra manera válida una vez que el fragmento ha sido insertado en él.

Otros consejos

Se podría comprobar si está bien formado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top