2016-07-22 2 views
0

현재 JAXB (및 해당 도구 인 XJC)를 사용하여 XML 스키마 (.xsd)를 자동 생성 된 Java 클래스로 "변환"하려고합니다.JAXB/XJC - XML ​​스키마 파싱 실패

나는 다음 명령을 실행 :

java -jar "../lib/com.sun.jaxb_1.0.0/jaxb-xjc.jar" schema.xsd 

을하지만, 분명히, 나는 다음과 같은 오류 내 스키마를 컴파일하고 얻을하지 않습니다 프랑스에 대한

parsing a schema... 
[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'heureType' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 9 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'demandeCri' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 24 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'infoCri' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 28 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'criType' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 33 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'initLiaison' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 46 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'listeCri' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 50 of file:***/Workspace_XML/fichier_cri/schema.xsd 

[ERROR] s4s-elt-invalid-content.1 : Le contenu de 'fichierCri' n'est pas valide. L'élément 'element' n'est pas valide, est mal placé ou compte trop d'occurrences. 
line 67 of file:***/Workspace_XML/fichier_cri/schema.xsd 

Failed to parse a schema. 

미안하지만, 오류는 다음과 같이 번역 할 수 있습니다.

[ERROR] s4s-elt-invalid-content.1 : The content of 'heureType' is not valid. The element 'element' is not valid, is misplaced or appears to many times. 

여러 가지 방법으로 코드를 작성하지만 좋은 결과는 얻지 못했습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<!-- the Root Element --> 
<xs:element name="fichier_cri" type="fichierCri"/> 


<!-- ########## LEVEL 0 ########## --> 

    <xs:complexType name="fichierCri"> 
    <xs:element name="init_liaison" type="initLiaison" minOccurs="0" maxOccurs="unbounded"/> 
    <xs:sequence> 
     <xs:element name="liste_cri" type="listeCri" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 


<!-- ########## LEVEL 1 ########## --> 

<xs:complexType name="initLiaison"> 
    <xs:element name="source" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
</xs:complexType> 

<xs:complexType name="listeCri"> 
    <xs:element name="demande_cri" type="demandeCri" minOccurs="0" maxOccurs="unbounded"/> 
    <xs:element name="info_cri" type="infoCri" minOccurs="0" maxOccurs="unbounded"/> 
    <xs:sequence> 
     <xs:element name="cri" type="criType" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 


<!-- ########## LEVEL 2 ########## --> 

<xs:complexType name="demandeCri"> 
     <xs:element name="fichier_erreur" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
</xs:complexType> 

<xs:complexType name="infoCri"> 
     <xs:element name="nb_erreur" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="num_proch_erreur" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
</xs:complexType> 

<xs:complexType name="criType"> 
     <xs:element name="num_erreur" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="num_cri" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="heure" type="heureType" minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="data" type="dataType" minOccurs="0" maxOccurs="unbounded"/> 
</xs:complexType> 


<!-- ########## LEVEL 3 ########## --> 

<xs:complexType name="heureType"> 
     <xs:element name="secondes" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
     <xs:element name="nano_secondes" type="xs:int" minOccurs="0" maxOccurs="unbounded"/> 
</xs:complexType> 

<xs:complexType name="dataType"> 
    <xs:sequence> 
     <xs:element name="octet" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 


<!-- *** end *** -->  
</xs:schema> * 

누군가가 이것에 대해 뭔가를 알고 않습니다 여기

내 코드? :/

+0

이 비트 보이는 용의자를합니까 : 요소 이름을 = 0 "maxOccurs ="unbounded "/> DaveH

+0

아마도 구성하기 전에 구성 요소를 선언하려고 시도하는 것일 수 있습니다. 레벨 3에서 레벨 시작 0 –

+0

@DaveH 죄송합니다. 약간의 붙여 넣기 오류가 있습니다 ^^ '해결되었습니다;) –

답변

1

오류 메시지는 xsd 파일의 구문이 올바르지 않음을 나타냅니다. 이것은 사실입니다. 문제를 해결하기 위해 xsd를 편집하면 오류 메시지가 사라집니다.

<complexType name="foo"> 
    <sequence> 
     <element ... /> 
     <element ... /> 
    </sequence> 
</complexType> 

하는 복잡한 유형 내의 모든 요소 시퀀스 요소 내에 있는지 확인 :

당신이 복잡한 유형을 정의

. <sequence>은 유효한 문서에 포함 된 요소가 지정된 순서로 포함되어 있다고 말합니다.

물론 복잡한 유형을 정의하는 데 사용할 수있는 다른 옵션이 있습니다. 예를 들어 <sequence> 대신 <choice>을 사용할 수 있습니다. 즉, 유효한 문서에 포함 된 요소 중 하나가 포함됩니다.

스키마 파일의 스키마 (xsd)를 살펴 보는 것이 좋습니다. 스키마 파일 (http://www.w3.org/2001/XMLSchema) 맨 위에있는 링크를 확인하십시오. 더 개방 이없는 -

+0

그래, 고마워, 그것 효과. complexType에 시퀀스가 ​​있어야한다는 것을 알지 못했지만 ... "시퀀스"는 무엇을 의미합니까? 목록이나 요소와 같은 요소가 여러 번 나타날 수 있다고 생각했습니다. –

+0

@KingKunu 나는 복잡한 유형에 대한 다양한 옵션과 모든 대답의 출처 (스키마 스키마)에 대한 포인터에 대해 좀 더 자세히 설명하기 위해 대답을 편집했습니다. – Rob

+0

정말 고마워! 이제 이해가된다 ! 나는 그것이 그것이라고 생각했던 것이 절대적으로 아니었다! ^^ ' –