@ Nona Схема - это правильно сформированный документ, как и ваш экземпляр. Однако, если вы объединяете их, результат больше не является правильным.
Если то, что у вас есть:
<xs:schema ...>...</xs:schema>
<myxml ...>...</myxml>
это неправильно сформировано (без единого корневого элемента)
Причина, по которой подход DTD отличается, заключается в том, что внутреннее подмножество специально разрешено добавлять к корневому элементу. Итак:
<DOCTYPE myxml [
... my DTD ...
]>
<myxml ...>...</myxml>
хорошо сформирован.
К сожалению, связать схему с экземпляром не так просто. Возможно, вам придется взглянуть на xsi:schema-location
.
UPDATE
К сожалению, ответ будет зависеть от используемой вами программной среды. AFAIK нет способа упаковки документа и схемы, так что любое программное обеспечение будет принимать и пытаться проверить. Вот почему схемы требуют гораздо больше усилий, чем DTD.
Вот простой сайт, где вы можете отправить два документа и проверить.
Все, что находится за этим, может нуждаться в знании программного обеспечения. Будут разные подходы в зависимости от того, используете ли вы ORACLE, Microsoft и т. Д. Это может быть сделано путем вызова методов для загрузки документа, загрузки схемы, а затем проверки или установки свойств (как это может быть сделано в Xerces).
Ответ может зависеть от того, почему вы это делаете. Если вы отправляете документы владельцу схемы, у них, вероятно, будет система проверки. Если вам необходимо проверить чью-либо схему, вам потребуется программа проверки схемы и запустить ее. Вы на MS или Unix / Java?
БОЛЬШЕ ОБНОВЛЕНИЙ
Предложите Каков наилучший способ проверки XML-файла по XSD-файлу?
Как говорится, не существует сверхпростого подхода.