файл схемы xsd - показывает, что elementName уже определено - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть два файла 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"/>

при запуске xjc с файлами xsd, я столкнулся с проблемой ниже.

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.

ЧтоЯ посетил versioning и link2

Но я не уверен, как реализовать управление версиями и компилировать без ошибок.Любая помощь будет высоко оценена!

ОБНОВЛЕНИЕ 1: Или Я хочу, чтобы элемент сеанса имел тип integer или string

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

1 Ответ

0 голосов
/ 01 октября 2018

Ваше targetNamespace обеих схем одинаково (http://www.example.com/wm). Однажды попробуйте использовать другое targetNamespace для каждой схемы.

...