Problem z Schematem

0

Witam, mam problem z zdeklarowaniem schematu w XML
Czy mógłby ktoś mnie nakierować jak należy zdefiniować atrybut??
oto moje pliki :
ja.xml

<?xml version="1.0"?> 
<zagrozone_gatunki xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
					xsi:noNamespaceSchemaLocation="maconx.xsd"> 
 

<zwierze>
<nazwa jezyk="polski">  macon </nazwa>
<waga> 200 kg </waga>
<populacja> 445 </populacja>
</zwierze>

<zwierze>
<nazwa jezyk="polski">  Kaczka </nazwa>
<waga> 6 kg </waga>
<populacja> 665 </populacja>
</zwierze>
 
 
</zagrozone_gatunki> 

 

ja.xsd

 
<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

<xsd:element name="zagrozone_gatunki" type="elem_glow"/>
<xsd:element name="nazwa" type="atrybucik"/>
<xsd:element name="waga" type="xsd:string"/>
<xsd:element name="populacja" type="xsd:integer"/>


<xsd:complexType name="elem_glow">
<xsd:sequence>

	<xsd:element name="zwierze" type="typ-zwierzaka" maxOccurs="10"/> 
	
</xsd:sequence>
</xsd:complexType>


<xsd:complexType name="typ-zwierzaka">
<xsd:sequence>

	<xsd:element name="waga" type="xsd:string"/>
    <xsd:element name="populacja" type="xsd:integer"/>
	<xsd:element name="nazwa" type="xsd:atrybucik"/>
	
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="atrybucik">
<xsd:sequence>
	<xsd:element name="nazwa" type="std:string"/>
</xsd:sequence>
<xsd:attribute name="jezyk" type="xsd:string"/>
</xsd:complexType>

 
</xsd:schema> 

Dziękuję z góry :-D
0
#open<google.pl>
google("xml schema attribute")[0];
0

Trochę pokręciłeś kolejność elementów w schemacie i jeszcze skoro plik nazywasz ja.xsd, to odwołanie do niego nie może być macon.xsd. Co do definiowania elementu z atrybutem, to robi się to jako definicję typu złożonego i definiuje rodzaj zawartości: simpleContent albo complexContetn. Tu element ma zawierać tekst, więc będzie simpleContent i typ bazowy dla zawartości elementu. A w środku podaje się atrybuty.
Warto używać edytora do xsd, bo to wiele ułatwia. Przykładowo Netbeans, Eclipse, Liquid Studio dają radę.
Całość wygląda tak:

<?xml version="1.0"?>
<zagrozone_gatunki xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="ja.xsd">


	<zwierze>
		<nazwa jezyk="polski">
			macon
		</nazwa>
		<waga> 200 kg </waga>
		<populacja>445</populacja>
	</zwierze>

	<zwierze>
		<nazwa jezyk="polski">
			Kaczka
		</nazwa>
		<waga> 6 kg </waga>
		<populacja>665</populacja>
	</zwierze>


</zagrozone_gatunki> 
 
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:element name="zagrozone_gatunki" type="elem_glow" />
	<xsd:element name="nazwa" type="atrybucik" />
	<xsd:element name="waga" type="xsd:string" />
	<xsd:element name="populacja" type="xsd:integer" />

	<xsd:complexType name="elem_glow">
		<xsd:sequence>
			<xsd:element name="zwierze" type="typ-zwierzaka"
				maxOccurs="10" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="typ-zwierzaka">
		<xsd:sequence>
			<xsd:element name="nazwa" type="atrybucik" />
			<xsd:element name="waga" type="xsd:string" />
			<xsd:element name="populacja" type="xsd:integer" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="atrybucik">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="jezyk" type="xsd:string" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

</xsd:schema> 
 

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