非整形式の HTML を含む XML ドキュメントを検証することはできません。非整形式であるため、そのようなドキュメントは XML ドキュメントではないからです。data
しかし、実際に取得している入力が XML である場合は、適切な形式の HTML 要素または適切な形式の XML を許可するように 定義できます。
整形式の XML を許可するのが最も簡単です。「整形式の XML をここに」という意味のパターンを定義します。遭遇した要素はすべて、同じパターンを使用して再帰的に検証されます。
wellformed-xml = (text
| element * { wellformed-xml }
)*
data
次に、そのパターンを使用する要素を定義します。
stuff = element stuff {
element data { wellformed-xml }
}
それが単なる HTML であることを本当に保証したい場合は、"*" よりも制限的な名前クラスが必要になります。b
、i
、p
、span
、およびを入力しましdiv
た。必要な他の要素を追加するための演習として残します。
start = stuff
stuff =
element stuff {
element data { wellformed-html }
}
wellformed-html =
(text
| element b | div | i | p | span { wellformed-html }
)*
XHTML 入力もサポートできるようにしたい場合は、名前空間参照を使用する必要があります。繰り返しますが、読者のための演習です。