I'm trying to use xmllint to check my work while developing a basic XSD i.e. XML Schema schema. However it's giving me an error
Validation failed: no DTD found.
What am I doing wrong?
My xmllint command:
xmllint --noout --valid --schema simple.xsd lucas-basic.xml
lucas-basic.xml:5: validity error : Validation failed: no DTD found !
>
^
lucas-basic.xml validates
Test XSD file:
<?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>
</xsd:schema>
Test XML file:
<?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>
The URL at xsi:noNamespaceSchemaLocation does return the above XSD. Also, I downloaded the xsd file and put it into the current directory as an extra measure, but this didn't seem to have changed anything.
The schema is defined by the XSD. Schema errors occur where there is a problem with the structure or order of the file, or an invalid character is included. Schema errors prevent the validation being run in full because the file cannot be read. This means that errors cannot be traced to a particular record.
The WSRR web user interface validates each definition file when starting, and when new or updated definition files are loaded. This is done according to the definition XML Schema Definition (XSD).
--valid
is for DTDs, not XSDs.
This will work for you instead:
xmllint --noout --schema http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd lucas-basic.xml
The OP attempt and accepted answer "validate" the XSD by testing it against a sample file. To validate the XSD file against the XSD specification, the following command may be used:
xmllint --noout --schema http://www.w3.org/2001/XMLSchema.xsd my_schema.xsd
... and for v1.1 the schema is https://www.w3.org/2009/XMLSchema/XMLSchema.xsd
NOTE: the v1.0 schema has some qualifications at the top about the normative structure schema so it's possible another file should actually be used but this worked fine for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With