メインコンテンツまでスキップ

require-ancestor

HTML Living Standardに基づき、要素がコンテンツモデルで指定された必須の祖先要素(descendantOf)なしに出現している場合に警告します。設定は@markuplint/html-specにあります。

祖先は、その要素が属するツリーの中で探します。template要素の内容は別のドキュメントフラグメントに属し、マークアップからはその内容がどこに挿入されるか分かりません。そのため、探索はtemplate要素の内容の外に出ず、探索が内容の先頭で終わった要素は、template要素の外に該当する祖先があってもなくても警告しません。宣言的シャドウルート(<template shadowrootmode>)の内容もそれ自身のツリーで、その外にある祖先は数えないため、警告します。テンプレートエンジンのディレクティブを持つtemplate要素(Vueの<template v-if>)はHTMLのtemplate要素ではないため、探索はそれを通り抜けます。ReactとVueでは、ディレクティブのないtemplate要素は子要素が文書の中にある通常の要素なので、探索は他の要素と同じようにそれを通ります。

❌ 間違ったコード例

<div>
<area href="/path" alt="Link" />
</div>

✅ 正しいコード例

<map name="example">
<area href="/path" alt="Link" />
</map>

Interface​

{
"require-ancestor": boolean
}

Default Severity​

error