Определение схемы 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.