Problem z Schematem XML .

0

Witam mam problem ze schematem.
Wyświetla mi się następujący błąd :

Validation 10, 46 src-resolve: Cannot resolve the name 'ocenaType' to a(n) 'type definition' component.
Validation 21, 90 src-resolve: Cannot resolve the name 'ocenaType' to a(n) 'type definition' component.

Może ktoś ma pomysł ??

index.xml

 <?xml version="1.0"?>

<kartae xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3schools.com style.xsd">
  
  <wynik>
	<przedmiot>Matematyka</przedmiot>
	<ocena> +4.0 </ocena>
  </wynik>
  <wynik>
    <przedmiot>Polski</przedmiot>
	<ocena> plus dobry </ocena>
  </wynik>
  <wynik>
    <przedmiot>Chemia</przedmiot>
	<ocena> 4.5 </ocena>
  </wynik>
  
</kartae> 

style.xsd

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com"
elementFormDefault="qualified">



		<xs:element name="kartae" type="elem_glow"/>
		<xs:element name="wynik" type="wynikType" />
        <xs:element name="przedmiot" type="xs:string"/>
		<xs:element name="ocena" type="ocenaType"/>
		
		<xs:complexType name="elem_glow">
              <xs:sequence>
                        <xs:element name="wynik" type="wynikType" minOccurs="0" maxOccurs="unbounded"/>
               </xs:sequence>
        </xs:complexType>
		
		<xs:complexType name="wynikType">
                <xs:sequence>
                        <xs:element name="przedmiot" type="xs:string" maxOccurs="unbounded"/>
                        <xs:element name="ocena" type="ocenaType" maxOccurs="unbounded"/>
                </xs:sequence>
        </xs:complexType>
	
	
	
	
	
	<xs:element name="ocenaType">
    <xs:complexType>
     <xs:choice>
	      <!--ocena słowna-->
          <xs:element name="ocena">
		  <xs:simpleType>
		  <xs:restriction base="xs:string">
				<xs:enumeration value="dostateczny"/>
				<xs:enumeration value="plus dostateczny"/>
				<xs:enumeration value="dobry"/>
				<xs:enumeration value="plus dobry"/>
				<xs:enumeration value="bardzo dobry"/>
				<xs:enumeration value="plus bardzo dobry"/>
          </xs:restriction>
		  </xs:simpleType>
			</xs:element>
			<!--ocena ulamkowa-->
		    <xs:element name="ocena">
			<xs:simpleType>
            <xs:restriction base="xs:string">
                 <xs:pattern value="[2-5]\.(0|5)"/>
             </xs:restriction>
           </xs:simpleType>
           </xs:element>
			<!--ocena ze znakiem-->
			<xs:element name="ocena">
			<xs:simpleType>
            <xs:restriction base="xs:string">
				 <!--nie wiem jak wstawić pusty znak, więc wstawiam kropkę. (Spacja nie działa)-->
                 <xs:pattern value="\.[2-5]"/>
             </xs:restriction>
           </xs:simpleType>
           </xs:element>
			
	  </xs:choice>
			
			
    </xs:complexType> 
   </xs:element>

	
	
</xs:schema> 
 

Dzięki za pomoc z góry.

Nikt się nie spotkał z tym problemem??

0

Tworzysz nowy element o nazwie "ocenaType", a powinieneś stworzyć nowy typ - a właściwie, w tym przypadku, nową grupę, by uniknąć zbędnego zagnieżdżania.
Nie powinieneś za każdym razem powtarzać się z tymi elementami "wynik", "przedmiot" itp., ale odnosić się do nich za pomocą ref.
Poprawiłem ci ostatni pattern na ocenę ze znakiem, bo chyba o to ci chodziło.
Schema nie pozwala na niejednoznaczne definiowanie elementów o tej samej nazwie (ocena), dlatego elementy wewnątrz choice powinny różnić się nazwą.
Nie wiem, czy na pewno chcesz, aby w jednym wyniku można było utworzyć wiele przedmiotów albo wiele ocen (albo np. wiele przedmiotów i jedną ocenę).

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">

<xs:element name="kartae" type="elem_glow" />
<xs:element name="wynik" type="wynikType" />
<xs:element name="przedmiot" type="xs:string" />

<xs:complexType name="elem_glow">
    <xs:sequence>
        <xs:element ref="wynik" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="wynikType">
    <xs:sequence>
        <xs:element ref="przedmiot" />
        <xs:group ref="ocenaChoice" />
    </xs:sequence>
</xs:complexType>

<xs:group name="ocenaChoice">
<xs:choice>
    <!--ocena słowna-->
    <xs:element name="ocenaSlowna">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="dostateczny" />
            <xs:enumeration value="plus dostateczny" />
            <xs:enumeration value="dobry" />
            <xs:enumeration value="plus dobry" />
            <xs:enumeration value="bardzo dobry" />
            <xs:enumeration value="plus bardzo dobry" />
        </xs:restriction>
    </xs:simpleType>
    </xs:element>
    
    <!--ocena ulamkowa-->
    <xs:element name="ocenaUlamkowa">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="[2-5]\.(0|5)" />
        </xs:restriction>
    </xs:simpleType>
    </xs:element>
    
    <!--ocena ze znakiem-->
    <xs:element name="ocenaZnakowa">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="[+-]?[2-5]" />
        </xs:restriction>
    </xs:simpleType>
    </xs:element>
</xs:choice>
</xs:group>

</xs:schema>

Użycie:

<?xml version="1.0"?>

<kartae xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com style.xsd">
    <wynik>
        <przedmiot>Matematyka</przedmiot>
        <ocenaZnakowa>+4</ocenaZnakowa>
    </wynik>
    <wynik>
        <przedmiot>Polski</przedmiot>
        <ocenaSlowna>plus dobry</ocenaSlowna>
    </wynik>
    <wynik>
        <przedmiot>Chemia</przedmiot>
        <ocenaUlamkowa>4.5</ocenaUlamkowa>
    </wynik>
</kartae>

1 użytkowników online, w tym zalogowanych: 0, gości: 1