gpt4 book ai didi

java - xsd 架构文件 - 显示 elementName 已定义

转载 作者:行者123 更新时间:2023-12-02 10:46:10 25 4
gpt4 key购买 nike

我有两个 XSD 文件,我想要两个不同的 xsd 文件的元素具有相同的名称但具有不同的属性类型。

假设下面是xml1.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/wm"
xmlns="http://www.example.com/wm"
elementFormDefault="qualified">
<xsd:element name="testEame1">
<xsd:annotation>
<xsd:documentation> test </xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type='xsd:string' minOccurs="1"/>
<xsd:element name="session" type='xsd:string' minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="pid" type="xsd:integer" use="required"/>
<xsd:attribute name="version" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>

下面是xml2.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/wm"
xmlns="http://www.example.com/wm"
elementFormDefault="qualified">
<xsd:element name="testEame1">
<xsd:annotation>
<xsd:documentation> test </xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type='xsd:string' minOccurs="1"/>
<xsd:element name="session" type='xsd:integer' minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="pid" type="xsd:integer" use="required"/>
<xsd:attribute name="version" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>

xml1和xml2的区别是

<xsd:element name="session" type='xsd:string' minOccurs="1"/>

<xsd:element name="session" type='xsd:integer' minOccurs="1"/>

使用 xsd 文件运行 xjc 时,我遇到以下问题。

C:\Temp\tt>xjc *.xsd
parsing a schema...
[ERROR] 'testEame1' is already defined
line 17 of file:/C:/Temp/tt/xml2.xsd

[ERROR] (related to above error) the first definition appears here
line 5 of file:/C:/Temp/tt/xml1.xsd

Failed to parse a schema.

我访问过的内容 versioninglink2

但我不确定如何实现版本控制和零错误编译。任何帮助将不胜感激!

更新1:或者我希望 session 元素的类型为整数或字符串

<xsd:element name="session" type='xsd:integer | xsd:string' minOccurs="1"/>

最佳答案

您的两个架构的 targetNamespace 相同 ( http://www.example.com/wm )。一旦尝试为每个模式使用不同的 targetNamespace 。

关于java - xsd 架构文件 - 显示 elementName 已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com