Xpoint
   [напомнить пароль]

Разрешить в HTML5 друге пространство имён XSD

Метки: [без меток]
2020-01-24 02:15:26 [обр] Principal AG(5/11)[досье]

Всем доброго в.с.
Снова проблема c пространствами имён при XSD валидации. В HTML5 нужно разрешить использовать элементы XForms (xmlns:xf="http://www.w3.org/2002/xforms"). C XHTML мне это удалось т.к. там было хотя бы определено собственное (беспрефиксное) пространство имён (xmlns="http://www.w3.org/1999/xhtml") и была родная XSD схема валидации XHTML 1.0. Сделал переходную схему в которой импортировал схему XForms и прописал xs:redefine в котором разрешил в тегах <head> и <body> соответственно использовать нужные мне теги xf:... С HTML5 всё сложнее. Задания xmlns="..." в заглавном теге он как известно не допускает. Вообще - какое у HTML5 родное пространство имён для меня остаётся загадкой. Кроме того не удаётся найти XSD схему валидации для HTML5. Если кто знает, подскажите, буду очень признателен.
Пытался делать:

<!DOCTYPE html>
<html xmlns:xf="http://www.w3.org/2002/xforms" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.w3.org/2002/xforms catalogue/base/xforms.xsd">

Но валидатор ругается, что элемент html не определён, что в общем-то логично, ведь схему в которой он бы определялся я не указал.
Пытался делать переходную схему типа:
файл: html5xf1.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xf="http://www.w3.org/2002/xforms">
   <xs:import namespace="http://www.w3.org/2002/xforms" schemaLocation="../base/xforms.xsd"/>
</xs:schema>

и прописывать в документ её:

<!DOCTYPE html>
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="catalogue/usr/html5xf1.xsd" 
 xmlns:xf="http://www.w3.org/2002/xforms">

  
Результат тот же самый. Валидатор ругается на неопределённость элемента html. Можете ли что ни будь здесь посоветовать.
Заранее спасибо.

спустя 16 часов [обр] Jared(0/26)[досье]

Ну, насколько я понимаю, HTML5 - это не XML, он в принципе не имеет собственного неймспейса и неймспейсы не поддерживает вообще:

The DOM, the HTML syntax, and the XML syntax cannot all represent the same content. For example, namespaces cannot be represented using the HTML syntax, but they are supported in the DOM and in the XML syntax.

https://html.spec.whatwg.org/multipage/introduction.html#html-vs-xhtml

Попробуйте вариации типа (хотя это мракобесие и метод тыка, по большей части):

<!DOCTYPE html>
<html 
   xmlns="http://www.w3.org/1999/xhtml"
   ...
   ...

Или попросту используйте старый добрый XHTML.

спустя 3 дня [обр] Principal AG(5/11)[досье]
Решение конечно же нашёл, но назвать его системным и правильным сложно. Использовал именно xmlns старого доброго XHTML 1.0, а xsd схему валидации с новыми тегами и атрибутами HTML5 цап-царапнул у бесплатной версталочки XMLmind. Составил переходную xsd схемку, где поженил эту схему с официальной схемой XForms ... и задача он-лайн валидации составных документов решена. Всё работает, подсказки по доступным тегам и атрибутам формируются правильно. Хотя конечно иначе как "костылём" такое решение не назовёшь.
спустя 27 дней [обр] Илья Cтpeльцын aka SelenIT(0/171)[досье]
Вообще-то "неймспейс старого доброго XHTML" – вполне официальный XML-неймспейс для HTML5 по стандарту (https://html.spec.whatwg.org/multipage/infrastructure.html#xml). Вот со схемой для валидации, да, сложнее: HTML5 по сути упразднил само понятие "валидация по схеме" (в HTML-синтаксисе вместо нее свой механизм, хардкодом вшитый в алгоритм парсинга, а XML-парсинг по умолчанию предполагается невалидирующим). Так что такое решение, по-видимому, не костыль, а единственно возможное в заданных условиях. Только схему, возможно, надо будет время от времени подновлять для новых элементов (типа `<dialog>`) и атрибутов (типа недавно добавленного `loading="lazy"` для картинок).
Powered by POEM™ Engine Copyright © 2002-2005