Некоторые файлы не были прикреплены невалидные файлы приложение docx
Всем доброго времени суток! Столкнулся с проблемой, что не могу правильно подключить валидацию xml файла через xsd схему. Проблема в том, что у меня успешно проходит валидацию файл, который не соответствует схеме. Надеюсь, что знающие люди смогут подсказать, где я совершил ошибку.
XML файл, который успешно проходит валидацию:
Код, который проводит проверку файла на валидность:
Гм, любопытно. Валидатор Visual Studio тоже не показывает ошибки. Но если убрать определение пространства имен: xmlns="localhost" , то валидация начинает работать как надо. Я весьма удивлен, ведь с неймспейсом, по идее, документ тоже невалиден. Если убрать xmlns="localhost", то в самой студии подчеркиваютя элементы и говорится, что books имеет невалидные элементы book, даже, если они валидны. Если честно, я не доконца понял, что должно быть в xmlns и какую он играет роль, поэтому добавил localhost. Если неймспейс убрать, то валидация работает корректно. Обратите внимание: в схеме разрешен лишь один дочерний элемент book . Кстати, код в этом хендлере у вас весьма странный. Должно быть что-то вроде if (e.Severity == XmlSeverityType.Error) - не?Пожалуй опишу что и как подробно.
В вашем случае вы загружаете элемент <books xmlns="localhost" . у которого явно указано пространство имен. Однако при загрузке схемы xDoc.Schemas.Add("", SchemaPath); , вы загрузили ее без указания пространства имен, поэтому валидатор проигнорировал элемент books и его содержимое при проверке (базовая валидация структуры XML происходит при загрузке документа).
Для того чтобы валидация заработала есть два пути:
Оставить схему и ее загрузку без изменений и удалить из проверяемого XML все упоминания пространств имен xmlns .
Оставить исходный файл как есть, изменить определение схемы на такое
и изменить загрузку схемы в валидатор:
Не в даваясь в подробности определения схемы, приведенный фрагмент кода проверки XML работает корректно и кидает все положенные исключения.
Возникновение ошибки "Документ . содержит невалидные подписи", вероятнее всего связано с тем, что на компьютере не установлен корневой сертификат Удостоверяющего Центра. Причин может быть две:
1) Не установлен корневой сертификат Головного удостоверяющего центра (ГУЦ) Минкомсвязи, уполномоченного федерального органа по аккредитации удостоверяющих центров.
2) Не установлен корневой сертификат Удостоверяющего Центра, выпустившего сертификат ключа электронной подписи Вашего контрагента или Оператора ЭДО.
Рекомендуется сначала воспользоваться инструкцией для установки корневого сертификата ГУЦ. После установки проверьте электронную подпись так, как написано здесь. Если это не помогло решить проблему, следуйте рекомендациям из данного раздела.
Открываем сам электронный документ, по которому выдается ошибка, на вкладке "Подписи" , содержится 1 или 2 подписи, статус одной из них, или обеих, выделен красным курсивом и статусом "Не верна".
Необходимо двойным кликом открыть данный сертификат(ы) и сохранить на рабочий стол или в любую другую папку на диске:
Затем нужно открыть сохраненный файл и перейти на закладку "Путь сертификации":
Мы видим, что корневой сертификат (сертификат Удостоверяющего Центра) действительно не установлен. Для его установки достаточно открыть корневой сертификат двойным кликом и установить (см. ниже).
В случае если не отображается цепочка сертификатов (на закладке "Путь сертификации" есть только сертификат пользователя), перейдите на вкладку "Состав" , найдите раздел, "Доступ к информации о центре сертификации":
Далее нужно выделить и скопировать в буфер обмена одну из ссылок, заканчивающуюся на .cer или .crt,.вставить ссылку в адресную строку браузера и скачать корневой сертификат,
Открыв корневой сертификат (из пути сертификации в сертификате пользователя или скачанный файл) нажмите кнопку "Установить сертификат. ":
В качестве хранилища корневого сертификата необходимо выбрать "Доверенные корневые центры сертификации":
Далее нужно подтвердить установку корневого сертификата:
Переключившись в окно 1С, правой кнопкой мыши нажимаем на подпись со статусом "Не верна" и в контекстном меню выбираем команду "Проверить электронные подписи":
Читайте также: