Narzędzia Informatyki - Ćwiczenia 6


Poprzednie Następne
Temat: XML, XSD oraz transformacje XSLT   


XML

Założenia plików XML:

Przykładowy plik XML

<?xml version="1.0" encoding="UTF-8"?>
<students
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="a.xsd">
<student>
<id>124132</id>
<firstname>Rafał</firstname>
<lastname>Witkowski</lastname>
</student>
</students>

Pliki xml są dobrze obsługiwane przez większość popularnych przeglądarek (Firefox, IE, itp)


Składnia:

Uwaga!!! : sprawdź zapisując podany wyżej plik na dysku z rozszerzeniem xml a następnie otwierając go w jednej z przeglądarek

XSD - XML Schema

XML Schema (Wikipedia) (Schemat XML, Schemat Rozszerzalnego Języka Znaczników) to opracowany przez W3C standard służący do definiowania struktury dokumentu XML. XML Schema stanowi alternatywę dla DTD, przy czym posiada znacznie większe możliwości.

XML Schema jest strukturą XML, w odróżnieniu od DTD nie będącego częścią standardu XML. Dokumenty zawierające definicje XML Schema zapisuje się zwykle w plikach z rozszerzeniem .xsd (od XML Schema Definition).

Specyfikacja XML Schema powstała w 2001 r. i składa się z 3 części:

   1. Primer - Elementarz - nienormatywna część zawierająca podstawy tego języka
   2. Structures - Struktury
   3. Datatypes - Typy danych


TUTORIAL: http://www.15seconds.com/issue/031209.htm


Przykładowy plik xsd dla naszego wcześniej zdefiniowanego pliku może wyglądać następująco:

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="students">
<xs:complexType>
<xs:sequence>
<xs:element name="student" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:decimal"/>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>


Plik XML jest zgodny z powyższym XSD

Jak to sprawdzić?

Trzeba posiadać albo odpowiednie oprogramowanie lub wykorzystać do tego celu jedną z podstawowych bibliotek np. w JAVA:

import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

public class XSDValidate {
public static void main(String[] args) {
try {
SchemaFactory factory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");

Schema schema = factory.newSchema(new StreamSource(
"d:/DANE/aaa/xsd/ex7/studenci.xsd"));
Validator validator = schema.newValidator();

// at last perform validation:
validator.validate(new StreamSource(
"d:/DANE/aaa/xsd/ex7/studenci.xml"));

} catch (Exception ex) {
ex.printStackTrace();
}
}
}

Należy zmienić jednak ścieżki do plików xsd oraz xml !!!


Zadanie 1
Uruchom program w języku JAVA który umożliwia sprawdzenie poprawności pliku XML z podanym schematem XSD. Zmodyfikuj plik XML dodając własne elementy XML. Sprawdź czy plik jest dalej poprawnie sformatowany

Zadanie 2
Czy ważna jest kolejnośc elementów w pliku XML?
<firstname>
<lastname>
<id>
Zmień kolejność i sprawdź poprawność pliku XML.
Zadanie 3
Zmodyfikuj plik XSD tak by podzielić strukturę na osobne typy:

jak w przykładzie poniżej:

<xs:complexType name="shipordertype">
<xs:sequence>
<xs:elment name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

Zadanie 4
Stwórz plik XML oraz XSD dla danych zebranych na pierwszych ćwiczeniach