ошибка проверки xmllint "DTD не найден" при использовании XSD

Я пытаюсь использовать xmllint для проверки моей работы при разработке базовой схемы XSD, т. е. схемы XML. Однако это дает мне ошибку

ошибка проверки: DTD не найден.

что я делаю не так?

моя команда xmllint:

xmllint --noout --valid --schema simple.xsd lucas-basic.xml
lucas-basic.xml:5: validity error : Validation failed: no DTD found !
        >
        ^
lucas-basic.xml validates

тестовый файл XSD:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by XML Authority. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
        <xsd:element name = "vehicles">
                <xsd:complexType>
                        <xsd:sequence>
                                <xsd:element name = "nickname" type = "xsd:string" maxOccurs = "unbounded"/>
                        </xsd:sequence>
                </xsd:complexType>
        </xsd:element>

тестовый XML-файл:

<?xml version="1.0"?>
<vehicles
                xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
                xsi:noNamespaceSchemaLocation = "http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd"
        >
        <nickname>Bog Hopper</nickname>
        <nickname>Wee Beastie</nickname>
        <nickname>Count Zero</nickname>
</vehicles>

URL в xsi: noNamespaceSchemaLocation возвращает вышеуказанный XSD. Кроме того, я загрузил файл xsd и поместил его в текущий каталог в качестве дополнительной меры, но это, похоже, ничего не изменило.

2 ответов


--valid для DTDs, не XSDs.

это будет работать для вас, вместо:

xmllint --noout --schema http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd lucas-basic.xml

попытка OP и принятый ответ "проверяют" XSD, проверяя его на примере файла. Для проверки xsd-файла на соответствие спецификации XSD может использоваться следующая команда:

xmllint --noout --schema http://www.w3.org/2001/XMLSchema.xsd my_schema.xsd

... и для v1.1 Схема https://www.w3.org/2009/XMLSchema/XMLSchema.xsd

Примечание: v1.0 schema имеет некоторые квалификации в верхней части схемы нормативной структуры, поэтому возможно, что на самом деле должен использоваться другой файл, но это сработало хорошо для меня.