【发布时间】:2016-07-18 23:04:11
【问题描述】:
我正在尝试使用 xmllint 来检查我的工作,同时开发一个基本的 XSD,即 XML Schema 模式。但是它给了我一个错误
验证失败:未找到 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>
</xsd:schema>
测试 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>
xsi:noNamespaceSchemaLocation 处的 URL 确实返回了上述 XSD。另外,我下载了xsd文件并将其放入当前目录作为额外的措施,但这似乎没有改变任何东西。
【问题讨论】:
-
现在我已经让它工作了,我应该评论说使用本地文件或指定远程模式同样有效,例如--schema simple.xsd 或 --schema lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd
标签: xml xsd libxml2 xsd-validation xmllint