/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JAXB og Schema
Fra : Dennis B. Hansen


Dato : 04-08-03 08:32

Hej...

Jeg har problemer med at JAXB compilere nogle XML schema's der
validerer korrekt i både XMLSpy og XSDValid.

Problemet synes at være at JAXB kun vil acceptere et import-tag pr.
namespace, men min temmelig begrænsede viden om XML schema siger mig
at det bør der da ikke være noget i vejen med, eller???

Jeg har lavet et lille eksempel der belyser problemet bestående af to
XML schema's der importeres ind i et andet Schema og anvendes. Hvis
jeg bytter om på mine imports skifter fejlen fra at være et problem
med den ene til den anden

Eksempel:
<?xml version="1.0"?>
<schema targetNamespace="Tester"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<simpleType name="NonEmptyString">
   <restriction base="string">
      <minLength value="1"/>
   </restriction>
</simpleType>
</schema>

<?xml version="1.0"?>
<schema targetNamespace="Tester"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<simpleType name="PositiveNumber">
   <restriction base="integer">
      <minInclusive value="0"/>
   </restriction>
</simpleType>
</schema>

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="Foo"       
xmlns:test="Tester"    
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified"
version="1.0">
<import namespace="Tester" schemaLocation="SimpleNumber.xsd"/>
<import namespace="Tester" schemaLocation="SimpleString.xsd"/>
<complexType name="StringNumber">
<sequence>
   <element name="aString" type="test:NonEmptyString"
minOccurs="0"/>
   <element name="aNumber" type="test:PositiveNumber"
minOccurs="0"/>
</sequence>
</complexType>
</schema>

.... Beklager den manglende/fjollede formatering, men som sagt giver
ovenstående simple eksempel nedenstående fejl ved JAXB compilering
(via Ant), men den ændres til en fejl i PositiveNumber, hvis der
byttes om på rækkefølgen import-tags.

Fejlen, som det står ovenfor:
[xjc] Compiling file:/U:/Gas/vejman/SchemaTest.xsd
[xjc] [ERROR] src-resolve: Cannot resolve the name
'test:NonEmptyString' to a(n) type definition component.
[xjc] line 16 of SchemaTest.xsd

Håber i kan forklare mig hvorfor, eller i det mindste bare at ikke har
fattet en skid

Hygge
/Dennis B. Hansen

 
 
Morten (05-08-2003)
Kommentar
Fra : Morten


Dato : 05-08-03 12:04


> <?xml version="1.0" encoding="UTF-8"?>
> <schema targetNamespace="Foo"       
> xmlns:test="Tester"    
> xmlns="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified"
> version="1.0">
> <import namespace="Tester" schemaLocation="SimpleNumber.xsd"/>
> <import namespace="Tester" schemaLocation="SimpleString.xsd"/>

Bruger man sædvanligvis ikke netop namespaces til at separere elementer
fra forskellige dokument typer? Jeg vil foreslå at du prøver at
importere dine 2 schemas i forskellige namespaces. Jeg ved at det er
ulovligt at have samme targetNamespace i det schema der importerer hhv.
det der importeres, det er ikke just dit tilfælde men det lugter lidt
af derhen af.

Morten


Morten (05-08-2003)
Kommentar
Fra : Morten


Dato : 05-08-03 12:09

Morten wrote:

>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <schema targetNamespace="Foo"
>> xmlns:test="Tester"
>> xmlns="http://www.w3.org/2001/XMLSchema"
>> elementFormDefault="qualified" attributeFormDefault="unqualified"
>> version="1.0"> <import namespace="Tester"
>> schemaLocation="SimpleNumber.xsd"/>
>> <import namespace="Tester" schemaLocation="SimpleString.xsd"/>
>
>
> Bruger man sædvanligvis ikke netop namespaces til at separere elementer
> fra forskellige dokument typer? Jeg vil foreslå at du prøver at
> importere dine 2 schemas i forskellige namespaces. Jeg ved at det er
> ulovligt at have samme targetNamespace i det schema der importerer hhv.
> det der importeres, det er ikke just dit tilfælde men det lugter lidt
> af derhen af.
>
> Morten
>

Alternativt, prøv at bruge <include ..> i stedet for <import ..>



Dennis B. Hansen (06-08-2003)
Kommentar
Fra : Dennis B. Hansen


Dato : 06-08-03 15:30

Hej Morten

Tak for dit svar, det vil jeg kigge lidt på. Uheldigvis står jeg bare
i den situation at jeg ikke kan ændre forfærdentligt meget på
Schemaerne (da de er interface til et eksisterende system).

Hygge
/Dennis


On Tue, 05 Aug 2003 13:09:29 +0200, Morten <usenet@kikobu.com> wrote:

>Morten wrote:
>
>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <schema targetNamespace="Foo"
>>> xmlns:test="Tester"
>>> xmlns="http://www.w3.org/2001/XMLSchema"
>>> elementFormDefault="qualified" attributeFormDefault="unqualified"
>>> version="1.0"> <import namespace="Tester"
>>> schemaLocation="SimpleNumber.xsd"/>
>>> <import namespace="Tester" schemaLocation="SimpleString.xsd"/>
>>
>>
>> Bruger man sædvanligvis ikke netop namespaces til at separere elementer
>> fra forskellige dokument typer? Jeg vil foreslå at du prøver at
>> importere dine 2 schemas i forskellige namespaces. Jeg ved at det er
>> ulovligt at have samme targetNamespace i det schema der importerer hhv.
>> det der importeres, det er ikke just dit tilfælde men det lugter lidt
>> af derhen af.
>>
>> Morten
>>
>
>Alternativt, prøv at bruge <include ..> i stedet for <import ..>
>
>


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste