Валидация схемы XML игнорируется, когда соответствует соответствию уровня фрагмента?

StackOverflow https://stackoverflow.com/questions/3632767

  •  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 XMLschema 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>

Это решение работает для меня, поэтому я буду использовать его в промежуточном состоянии; Имеется ли лучшее решение, я еще не уверен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top