XML Определение схемы (XSD) для XML файлов - PullRequest
0 голосов
/ 13 февраля 2020

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

Вот первые строки соответствующего XML документа подписи документов. 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>...

Приветствия

Kaleun

1 Ответ

0 голосов
/ 13 февраля 2020

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

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

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

...