为啥 xmllint 将其返回为无效
Posted
技术标签:
【中文标题】为啥 xmllint 将其返回为无效【英文标题】:why does xmllint return this as invalid为什么 xmllint 将其返回为无效 【发布时间】:2012-04-25 09:52:53 【问题描述】:当我尝试验证 Amazon Marketplace Web 服务 SubmitFeed 以完成订单时,我收到以下错误:
xmllint.exe --schema OrderFulfillment.xsd OrderFulfillment.xml
OrderFulfillment.xml:2:元素 AmazonEnvelope:架构有效性错误:元素 'AmazonEnvelope':没有匹配的全局声明可用于验证 r 呜呜 OrderFulfillment.xml 验证失败
OrderFulfillment.xml
<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>AXGZ4X5NTV6SN</MerchantIdentifier>
</Header>
<MessageType>OrderFulfillment</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderFulfillment>
<AmazonOrderID>104-5894782-1841713</AmazonOrderID>
<FulfillmentDate>2012-04-07T15:54:40.154Z</FulfillmentDate>
<FulfillmentData>
<CarrierCode>USPS</CarrierCode>
<ShippingMethod>Priority</ShippingMethod>
<ShipperTrackingNumber>9109901000372243321450</ShipperTrackingNumber>
</FulfillmentData>
</OrderFulfillment>
</Message>
</AmazonEnvelope>
我做错了什么?
【问题讨论】:
【参考方案1】:找到解决方案,您必须使用父架构进行验证,在本例中为 amzn-envelope.xsd
见How can lxml validate some XML against both an XSD file while also loading an inline schema too?
【讨论】:
以上是关于为啥 xmllint 将其返回为无效的主要内容,如果未能解决你的问题,请参考以下文章
使用 XSD 时 xmllint 验证错误“未找到 DTD”