Я думаю, что нашел ответ в этой статье MSKB как ни странно под названием КАК: проверить фрагменты XML на схеме XML в Visual C # .NET В нижней части статьи говорится:
ПРИМЕЧАНИЕ. Только объявления типов и
элементы верхнего уровня в XML
схема проверяется на соответствие XML
схемы. Подэлементы считаются
местный и поэтому не может быть
подтверждено. Для того, чтобы подтвердить
подэлемент, объявить на высшем уровне
элемент и сослаться на это.
Я считаю, что в этом абзаце есть ошибка, и намерение состоит в том, чтобы указать top-level elements in the XML
schema
document/fragment
are validated against an XML Schema
Поскольку образец кода Microsoft начинает свой фрагмент на верхнем уровне (а не произвольно внутри документа), он работает с проверкой. Однако в моем случае я использую конструкцию в середине документа.
Поправьте меня, если мое толкование неверно.
Обход / решение
Обходной путь для меня - вставить свои фрагменты в элемент верхнего уровня с целью проверки.
Другими словами, если я имею дело с фрагментом XHTML:
<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>
Это решение работает для меня, поэтому я буду использовать его в промежуточный период; Есть ли лучшее решение, я не уверен, пока.