Narzędzia Informatyki - Ćwiczenia 6
Poprzednie
Następne
Temat: XML, XSD oraz transformacje
XSLT
XML
Założenia plików XML:
- Plik tekstowy
- Format danych niezależny od platformy
- Łatwo zrozumialny dla człowieka
- Łatwość w obsłudze przez programy komputerowe
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:
- Musi zawierać przynajmniej jeden element
- Elementy muszą być zagnieżdżane (Błędne jest np
<student><name> dasd ad </student></name>)
- Pusty element może zostać zapisany w postaci: <tag/>
- Nazwa elementu(tagu):
- nie moze zaczynac sie od liter xml
- wielkosc liter np <Tag> <tag> ma znaczenie
- nie moze zawierac spacji
- moze zawierac cyfry,litery,kropke, podkreslenie)
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