【问题标题】:JAXB xjc - [ERROR] Unexpected <xs:schema> appears at line 2 column 101JAXB xjc - [错误] 意外 <xs:schema> 出现在第 2 行第 101 列
【发布时间】:2014-01-16 15:46:42
【问题描述】:

我是 jaxb 初学者。我正在尝试运行 xjc 以从模式生成 java 类。我在文件顶部有一个具有以下格式的示例 .xsd 文件

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xs:schema xmlns:xs="urn:iso:std:iso:yakity:schmakity" elementFormDefault="qualified">
    <xs:element name="Document" type="Document"/>

我以本教程为指导

jee5 tutorial

我运行以下命令来尝试解析模式并生成 java 类

 xjc -nv /home/tommy/xsds/my.xsd

但它总是抱怨架构标签,我会假设架构必须在这里?

[ERROR] Unexpected <xs:schema> appears at line 2 column 101

非常感谢任何帮助。

【问题讨论】:

    标签: xml jakarta-ee jaxb


    【解决方案1】:

    分配给 xs 前缀的命名空间对于 XML 模式是错误的。它应该是http://www.w3.org/2001/XMLSchema 而不是urn:iso:std:iso:yakity:schmakity

    如果您希望urn:iso:std:iso:yakity:schmakity 成为符合此 XML 模式的 XML 文档的命名空间,则应按如下方式进行设置:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema 
        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="urn:iso:std:iso:yakity:schmakity" 
        xmlns="urn:iso:std:iso:yakity:schmakity" 
        elementFormDefault="qualified">
    </xs:schema>
    

    【讨论】:

    • 感谢 Blaise,修复了它。我有一个问题,这个 xml 中提供的真正命名空间的形式是 xs="urn:iso:std:iso:yakity:schmakity" 我刚刚将最后一部分编辑为“yakity schmakity”。它是 ISO 生成的模式。为什么我需要进行此更改?
    • @user1843591 - XML 文档有一个 2 部分名称(本地名称 + 命名空间)。为了被识别为 XML 模式,节点需要位于正确的名称空间中。 targetNamespace是如何为文档指定命名空间的配置。
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 2017-05-18
    • 1970-01-01
    • 2021-11-26
    • 2021-11-05
    • 2017-12-19
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多