Skip to content

Place template elements in head before body - #614

Open
gyanu2507 wants to merge 1 commit into
html5lib:masterfrom
gyanu2507:fix/595-template-in-head
Open

gyanu2507 wants to merge 1 commit into
html5lib:masterfrom
gyanu2507:fix/595-template-in-head

Conversation

@gyanu2507

@gyanu2507 gyanu2507 commented Nov 2, 2026 •

Copy link
Copy Markdown

Summary

Before this change, a leading <template> was treated as an ordinary body element: InHead closed the head and reprocessed the token, so the element landed under <body>.

WHATWG says a template start tag in the "in body" insertion mode must use the "in head" rules, which place the element in <head>. This PR:

  • Handles template in InHead (and the AfterHead / InBody "process in head" lists)
  • Adds a simplified InTemplate phase so contents stay under the template element
  • Leaves template children as ordinary child nodes (html5lib still does not implement the template content document fragment)

Fixes #595

Test plan

  • pytest html5lib/tests/test_parser2.py (12 passed)
  • Manual check: <template></template> and <template>hi</template> put template under head

Handle template start tags with the in-head rules and a simplified
in-template phase so <template> before <body> lands in <head>, matching
WHATWG insertion-mode requirements. Contents remain ordinary children.

Fixes html5lib#595
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

<template> element placed in <body> instead of <head> (tree builder bug)

1 participant