【问题标题】:SAXParseException code cvc-elt.1 for given xsd/ xml给定 xsd/xml 的 SAXParseException 代码 cvc-elt.1
【发布时间】:2013-03-15 00:44:51
【问题描述】:

我有一个给定的 xsd 文件并给出了该文件的示例。 xsd 与http://www.forum-datenaustausch.ch/hospitalinvoicerequest_400.xsd 非常相似,但在根下方多了一个元素。

问题是,如果我根据架构验证给定的 xml(使用 moxy 作为 JAXBCOntextFactory)我得到了这个错误:

enterCaused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 221; cvc-elt.1: Cannot find the declaration of element 'invoice:request'.

invoice:request 是 xml 开始的根元素:

<invoice:request role="production" xmlns:invoice="http://www.medidata.ch/QO/XSD" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.medidata.ch/QO/XSD QO_MDInvoiceRequest_400.xsd">

如果我根据架构online 或在 Eclipse(右键单击验证)中验证 xml,一切正常。如果我将命名空间从

xmlns:invoice="http://www.medidata.ch/QO/XSD"

xmlns:invoice="http://www.xmlData.ch/xmlInvoice/XSD"

错误消失了 - 但由于附加元素,我得到了另一个错误。 有了这个命名空间声明,我什至无法在没有验证的情况下读取内容:root 的 getter 返回 null。使用替代声明 ("http://www.xmlData.ch/xmlInvoice/XSD") 且无需验证一切正常!

那么名称空间声明有什么问题?

【问题讨论】:

    标签: xml xsd jaxb moxy


    【解决方案1】:

    错误表明您的文档无效,因为没有定义具有本地名称 request 和命名空间前缀 invoice 的元素。您的实例文档具有该前缀的名称空间绑定和相同名称空间 URI 的架构位置提示,因此该部分似乎是正确的。

    检查您的架构是否存在以下问题:

    1. 架构的目标命名空间是否与文档根元素使用的命名空间相同(此处为 http://www.medidata.ch/QO/XSD
    2. 是否存在与根元素具有相同本地名称的元素的全局元素声明(此处为 request
    3. 如果您的根元素在架构中声明为带有命名空间前缀,那么该前缀是否绑定到您的文档中使用的相同命名空间 URI

    如果其中任何一项不正确,则您的文档无效。 (稍后在您的架构或实例 XML 文档中可能还会出现其他问题,使其无效。)

    通常(如果您的 XML 文档确实有效)此类问题是由以下两个原因之一引起的:

    1. 找不到您的架构文档
    2. 元素名称被误解,因为解析器未设置为可识别命名空间

    标记xsi:schemaLocation="http://www.medidata.ch/QO/XSD QO_MDInvoiceRequest_400.xsd" 定义命名空间http://www.medidata.ch/QO/XSD 中元素的架构是从相对(文件)位置QO_MDInvoiceRequest_400.xsd 中找到的。因此,如果您没有明确告诉解析器它应该使用什么架构文档,它会从输入文档所在的同一文件夹中查找具有该名称的文件。

    由于第二个原因,我无法提供任何好的帮助,因为我不熟悉 moxy,但是/并且我假设 moxy 总是将 XML 文件作为命名空间感知处理。

    【讨论】:

    • 我相对确定“解析器未设置为支持命名空间”,因为如上所述,xml 验证良好 - eclipse 中的在线 ane(如果我将 xsd 与 xml 放在同一文件夹中) .另一方面,我刚刚尝试了我的测试:它现在可以在关闭验证的情况下工作(不再有空元素),但验证仍然失败并出现同样的错误。所以谢谢你把我推向正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2020-05-08
    • 2015-11-25
    相关资源
    最近更新 更多