Вы не сможете проверить XML-документ с неправильным HTML-кодом в нем, поскольку из-за неправильного формата такие документы не являются XML-документами. Но если на самом деле входные данные, которые вы получаете, представляют собой XML, то вы, безусловно, можете определить data
, чтобы разрешить любые правильно сформированные элементы 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, вам нужно использовать ссылку на пространство имен; еще раз упражнение для читателя.
person
C. M. Sperberg-McQueen
schedule
03.06.2016