Валидация схемы XML игнорируется, когда соответствует соответствию уровня фрагмента?
-
26-09-2019 - |
Вопрос
Из моего сообщена с проверкой XML и схемы, кажется, когда Соответствие уровня фрагмента включен для XmlReader Экземпляр, источник XML останавливается подтвержденным против любого Включенные схемы.
Однако я не могу подтвердить это из документации MSDN, поскольку, похоже, не описывает поведение схемы XSD в свете уровня соответствия. Также, если я предполагаю, что эта проблема верна, я не могу найти обходной путь для него.
Я хотел бы знать, как подтвердить XML фрагмент против XSD схемы.
В моем случае я проверяю против XHTML 1 строгое схема. Отказ Фактом устаревшими HTML-теги, какu003Ccenter> Не помечаются как недействительные, это часть причины, по которой я считаю, что соответствие фрагмента игнорирует схему. Кроме того, когда я использую соответствие уровня документа в том же сценарии, ошибки действительности успешно помечены.
Решение
Я думаю, что нашел ответ в Эта статья МСКБ Как ни странно под названием Как: подтвердить фрагменты XML против схемы XML в Visual C # .NET Внизу статьи состояний:
Примечание. Только декларации типа и элементы верхнего уровня в XML-схеме подтверждаются против XML-схемы. Сублишементы считаются местными, и поэтому не могут быть подтверждены. Чтобы подтвердить подселемент, объявите элемент верхнего уровня и обратитесь к этому.
Я считаю, что в этом пункте, и намерение состоит в том, чтобы указать top-level elements in the XML
schema
document/fragment
are validated against an XML Schema
Поскольку образец Microsoft Code запускает свой фрагмент на верхнем уровне (вместо произвольно внутри документа) он работает с проверкой. Однако в моем случае я принимаю конструкцию в середину документа.
Поправьте меня, если моя интерпретация неверна.
Обходной путь / решение
Обходной путь для меня, чтобы заставить мои фрагменты внутри элемента верхнего уровня с целью проверки.
Другими словами, если я имею дело с фрагментом XTML:
<div>MY FRAGMENT</div>
Я могу обернуть его для проверки соответствовать строгой схеме XHTML так как:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML fragment enclosed, conforming to XHTML 1.0 Strict Template.</title>
</head>
<body>
<div>MY FRAGMENT</div>
</body>
</html>
Это решение работает для меня, поэтому я буду использовать его в промежуточном состоянии; Имеется ли лучшее решение, я еще не уверен.