Використання Schematron для валідації HTML-документів дозволяє розробникам встановити складні правила перевірки, які можуть виявити невідповідності не тільки в структурі даних, але й у логіці розміщення елементів. Задача перевірки розташування атрибутів класу в конкретних вузлах документа є прикладом, де Schematron виявляє свої переваги.
Schematron — це мова валідації, яка використовується для перевірки XML-документів і базується на правилах, які використовують XPath для визначення того, чи відповідає документ зазначеним критеріям. Вона дозволяє визначати складні логічні перевірки, які важко або неможливо реалізувати засобами інших схем валідації, таких як XML Schema.
Розглянемо завдання валідації HTML-документа з точки зору відповідності елементів до вимог класифікації. Необхідно переконатися, що:
/html/body/main/div/div
, якщо мають атрибут класу, то він повинен містити хоча б одне з значень cat1
або cat2
.cat1
або cat2
у своєму атрибуті класу.Це задання потребує від нас використання складних XPath виразів для ідентифікації цільових елементів та перевірки їх атрибутів на відповідність заданим критеріям.
Для виконання цього завдання ми використаємо наступну структуру схеми Schematron:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2"> <pattern id="class-location-validation"> <rule context="html/body/main/div/div"> <assert test="contains(@class, 'cat1') or contains(@class, 'cat2')" role="error"> Елемент за шляхом /html/body/main/div/div повинен містити 'cat1' або 'cat2' у атрибуті класу. </assert> </rule> <rule context="*[not(ancestor-or-self::html/body/main/div/div)]"> <assert test="not(contains(@class, 'cat1')) and not(contains(@class, 'cat2'))" role="error"> Елементи, що не знаходяться за шляхом /html/body/main/div/div, не повинні містити 'cat1' або 'cat2' у атрибуті класу. </assert> </rule> </pattern> </schema> |
У цьому прикладі ми використовуємо два основних правила. Перше правило застосовується до елементів, розташованих за конкретним шляхом, і перевіряє наявність значень cat1
або cat2
в атрибуті класу. Друге правило визначає вимоги до елементів, розташованих за іншими шляхами, виключаючи наявність зазначених значень у їх атрибуті класу.
Використання Schematron надає значні переваги для валідації складних умов і логіки в документах XML та HTML. Завдяки гнучкості виразів XPath, Schematron дозволяє встановлювати точні правила для перевірки структури документа, забезпечуючи високий рівень валідації та контролю за відповідністю до заданих вимог.
Таким чином, за допомогою Schematron можна ефективно управляти валідацією складних умов в документах, що робить його незамінним інструментом для розробників, які прагнуть забезпечити високу якість та відповідність своїх XML та HTML документів до визначених стандартів та вимог.