Определение схемы XML (XSD) для файлов XML

Как я могу проверить, использует ли XML-файл определение схемы XML (XSD)? Например, если вы распаковываете подписанный файл odt (текстовый документ LibreOffice или OpenOffice), в каталоге META-INF находится файл подписи documentsignatures.xml. В этом файле атрибутxmlns определяет пространство имен по умолчанию для элементов <Signature> а также <document-signatures>. Нет ни ссылки по атрибутуxmlns:xsi в пространство имен XML Schema Instance (XSI) "http://www.w3.org/2001/XMLSchema-instance" ни ссылка по атрибуту xsi:schemaLocation в файл схемы XML xmldsig-core-schema.xsd. В результате все содержимое файла documentsignatures.xml не должно проверяться ни по какой схеме. Это верно?

Вот первые строки соответствующего XML-документа documentsignatures.xml:

<?xml version="1.0" encoding="UTF-8"?>
<document-signatures xmlns="urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0">
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="ID_006900630020002d0084000e004a008b009b00a6006f004b007c007b002d007f">
        <SignedInfo>...

Приветствую

Калеун

1 ответ

Решение

"... Как я могу проверить, использует ли XML-файл определение схемы XML (XSD)?..."

(1) Вы не можете, если в XML-файле нет встроенной ссылки по атрибуту xsi:schemaLocation в схему XML.

(2) Несмотря на то, что какой бы API ни использовался, он все равно может проверяться на соответствие некоторой схеме XSD, которая не упоминается в фактическом файле XML.

Другие вопросы по тегам