【问题标题】:XML is not schema compliantXML 不符合模式
【发布时间】:2017-02-09 06:01:01
【问题描述】:

我如何形成我的 XML 似乎无关紧要,我收到以下错误:

Schema Violation in message: Element 'message': No matching global declaration available for the validation root.

XSD 的前两行如下所示:

<xsd:schema targetNamespace="urn:gtig:/stuff/gunk/v7.9 xmlns:Geek="urn:gtig:/stuff/gunk/7.9 xmlns:xsd="http://www.w3.org/2001/XMLSchema elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xsd:element name="message" type="Geek:Message"/>

我的 XML 的第一行如下所示:

<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" xmlns:v7.9="urn:gtig:/stuff/gunk/v7.9 xsi:type="Geek:Message" xsi:schemaLocation="v7.9 /path/to/the/schema">

消息的第一行应该是什么样子?

【问题讨论】:

    标签: xml xsd schema xsd-validation


    【解决方案1】:

    修复两个问题:

    • xmlns:v7.9="urn:gtig:/stuff/gunk/v7.9 缺少终止双引号。
    • xsi:schemaLocation 应该是命名空间 URI - 架构位置对,而不是命名空间前缀 - 架构对。

    具体来说,将格式不正确的 message 元素从

    <message xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
             xmlns:v7.9="urn:gtig:/stuff/gunk/v7.9 
             xsi:type="Geek:Message" 
             xsi:schemaLocation="v7.9 /path/to/the/schema">
    

    到

    <message xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
             xmlns:v7.9="urn:gtig:/stuff/gunk/v7.9"
             xsi:type="Geek:Message" 
             xsi:schemaLocation="urn:gtig:/stuff/gunk/v7.9 /path/to/the/schema">
    

    更新: 正如 Michael Kay 在 cmets 中指出的那样,这里还有更多需要更正的地方,因为 message 当前不在命名空间中,因此 xsi:schemaLocation 不会帮助将此 XML 与一个 XSD。

    一种解决方法是将message 添加到 XSD 所针对的命名空间:

    <v7.9:message xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
                  xmlns:v7.9="urn:gtig:/stuff/gunk/v7.9"
                  xsi:type="Geek:Message" 
                  xsi:schemaLocation="urn:gtig:/stuff/gunk/v7.9 /path/to/the/schema">
    

    【讨论】:

    • 谢谢!输入我的示例时错过了双引号 - 真正的问题是 schemaLocation 命名空间 URI。
    • 但这听起来不像是完整的答案,因为 message 元素不在命名空间中,而您正在为 urn:gtig:/stuff/gunk/v7.9 命名空间加载架构
    • 加粗文字相当于全大写,就像大喊大叫一样,所以要谨慎使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多