| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Как убедится что XSD схема существует ? |
| Автор: un8gbx 12.10.2005, 20:41 |
| Я использую XSD схему для валидации XML файлов, для этого я использую MSXML 4.0 SP2 парсер и делаю это так: В XML файле ставлю атрибуты, что бы сказать парсеру где схема расположена: <ISA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="I:\TEST\XMLEDI\shemas\SCH850.xsd"> <ISA01>00</ISA01> <ISA02></ISA02> <ISA03>00</ISA03> <ISA04></ISA04> <ISA05>ZZ</ISA05> </ISA> После этого ставлю атрибут validateOnParse = TRUE, и делаю load, все работает прекрасно, ошибки обнаружтваются. Проблема в том, что если схема на котороую указывает xsi:noNamespaceSchemaLocation="I:\TEST\XMLEDI\shemas\SCH850.xsd" несуществует, ну нет такого файла, то ни какой ошибки не происходит, load возврашает что все ОК и ни какого исключения не кидается. Хотя для меня это ошибка, схемы то нет ! Как заставить парсер проверять наличие схемы ??? Я конечьно могу програмно взять аттрибут xsi:noNamespaceSchemaLocation и проверить существование фала, но некрасиво както. |
| Автор: 3,14 13.10.2005, 11:51 |
| Не совсем уверен, но вроде это решеается по средствам установки атрибута schemaLocation |
| Автор: un8gbx 13.10.2005, 17:26 |
| Я как понимаю, что xsi:SchemaLocation делает то же саомае что и xsi:noNamespaceSchemaLocation только с использованием namesapace что впринципе не нужно в моем случае, вот ссылка где это объясняется. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/822217a9-5282-41e4-ac9e-21fb0f5959bd.asp вот вторая ссылка, тут говорится почему игнорируется http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/46ad6a69-9919-499b-9732-21b0de0fca8c.asp Чесно говоря не понимаю логики которой следует микрософт, если схема УКАЗАНА и НЕ НАЙДЕНА, то это не ошибка, ихнее предложение загружать их в каш, то же странно, я же не знаю какая схема используется, пока не открою XML фаел, не грузить же их все, уменя уже набралось 8 штук, а дальше больше. Сранно однако. |
| Автор: Ignat 14.10.2005, 10:40 |
| un8gbx, а почему бы не использовать не MS парсер? E.g. SAX. |
| Автор: un8gbx 14.10.2005, 16:32 |
| А что это решит ? И нет ли там тех же проблем. Я как понимаю SAX это событийный парсер, что мне он очень удобно, удобней загрузить его весь и анализировать, да и на MSXML уже написана и работает куча кода. |