Podstawy programowania II 5

background image

1

Podstawy programowania II

dr inż. Paweł Róg

background image

2

Zagadnienia

Projektowanie dokumentów XML

Elementy i atrybuty

Typy dokumentów XML

Pisanie dokumentów XML

Testowanie dokumentów XML

background image

3

Przykładowy dokument XML

<?xml version="1.0"?>

<product barcode="2394287410">

<manufacturer>Verbatim</manufacturer>

<name>DataLife MF 2HD</name>

<quantity>10</quantity>

<size>3.5"</size>

<color>black</color>

<description>floppy disks</description>

</product>

background image

4

Bardzo prosty dokument XML

<person>

Alan Turing

</person>

Dokument ten składa się z jednego elementu
o nazwie
person, ograniczonego tagami
<person> i </person> oraz zawartości Alan
Turing

<person> i </person> są znacznikami

background image

5

Składnia znaczników

Znaczniki XML mają podobną składnię do

znaczników HTML.

Znacznik początkowy rozpoczyna się od <, natomiast

końcowy – od </. Po nich następuje nazwa

znacznika, zakończona w obu przypadkach >.

W przeciwieństwie do HTML, w XML nazwy

znaczników mogą być dowolne.

Elementy puste (które nie mają zawartości) mogą być

zapisane albo w postaci <tag></tag> albo

w postaci <tag />. Nie może być natomiast

niedomkniętych znaczników (np. <br> lub <hr>).

Rozróżniana jest wielkość znaków w nazwach

znaczników (<person>, <Person> oraz <PERSON>

są różnymi znacznikami).

background image

6

Nieco bardziej złożony dokument

<person>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

background image

7

Korzeń, rodzice i dzieci

Zależności pomiędzy elementami można
przedstawić w postaci drzewa

background image

8

Rodzice i dzieci

Dokument z powyższego przykładu nadal składa
się z jednego elementu
person, jednak
zawartością tego elementu nie jest zwykły tekst,
ale cztery inne elementy: jeden element
name
oraz trzy elementy
profession.

Element person jest nazywany rodzicem
elementów
name i profession, które z kolei są
nazywane jego dziećmi.

Jeden rodzic może mieć wiele dzieci, jednak
każde dziecko musi mieć (poza jednym wyjątkiem)
dokładnie jednego rodzica.

background image

9

Korzeń

Każdy dokument XML ma jeden element, który nie
ma rodzica.

Jest to pierwszy element w dokumencie. Element
ten zawiera wszystkie pozostałe elementy.

Element ten jest nazywany korzeniem dokumentu.

Każdy dobrze sformatowany dokument XML
zawiera dokładnie jeden korzeń.

W naszym przypadku korzeniem jest element
person.

background image

10

Mieszana zawartość

W poprzednim przykładem zawartością
elementów
first_name, last_name oraz
profession były dane tekstowe, które nie
zawierały znaczników.

Zawartością elementów person oraz name były
elementy-dzieci.

Taki podział na elementy, które zawierają
wyłącznie inne elementy oraz elementy, które
zawierają wyłącznie tekst jest popularny
w dokumentach o charakterze rekordów danych.

XML może być jednak używany do tworzenia
dokumentów narracyjnych, takich jak raporty,
artykuły, opowiadania, strony WWW itp.

background image

11

Narracyjny dokument XML

<biography>

<paragraph>

<name><first_name>Alan</first_name>
<last_name>Turing</last_name></name> was one of the first
people to truly deserve the name <emphasize>computer
scientist</emphasize>. Although his contributions to the field
are too numerous to list, his best-known are the eponymous
<emphasize>Turing Test</emphasize> and <emphasize>Turing
Machine</emphasize>.

</paragraph>

<definition>The <term>Turing Test</term> is to this day the
standard test for determining whether a computer is truly
intelligent. This test has yet to be passed.</definition>

background image

12

<definition>A <term>Turing Machine</term> is an abstract
finite state automaton with infinite memory that can be proven
equivalent to any any other finite state automaton with
arbitrarily large memory. Thus what is true for one Turing
machine is true for all Turing machines no matter how
implemented.
</definition>

<paragraph>
<name><last_name>Turing</last_name></name> was also an
accomplished <profession>mathematician</profession> and
<profession>cryptographer</profession>. His assistance was
crucial in helping the Allies decode the German Enigma cipher.
He committed suicide on <date><month>June</month> day>7</day>,
<year>1954</year></date> after being convicted of
homosexuality and forced to take female hormone injections.
</paragraph>

</biography>

background image

13

Korzeniem przedstawionego dokumentu jest
element
biography.

Element biography zawiera elementy-dzieci
paragraph i definition.

Elementy paragraph i definition zawierają
elementy-dzieci:
term, emphasize, name
profession oraz dane tekstowe nie
zawierające znaczników. Elementy te mają
mieszaną zawartość.

Tego typu zawartość jest mniej popularna
i trudniejsza do zarządzania poprzez programy
komputerowe.

background image

14

Atrybuty

Elementy mogą mieć atrybuty, które są parami typu

nazwa-wartość, dołączonymi do znacznika

otwierającego.

Nazwy są oddzielone od wartości za pomocą znaku =.

Wartości są otoczone znakami " lub '.

<person

born="1912-06-23" died="1954-06-07"

>

Alan Turing

</person>

background image

15

Kolejność, użycie " lub 'oraz znaki odstępu nie mają

wpływu na znaczenie atrybutów:

<person

died = '1954-06-07' born = '1912-06-23'

>

Alan Turing

</person>

background image

16

Poprzedni przykład możemy przepisać wykorzystując

atrybuty:

<person>

<name first="Alan" last="Turing"/>

<profession value="computer scientist"/>

<profession value="mathematician"/>

<profession value="cryptographer"/>

</person>

background image

17

Narracyjny dokument z atrybutami

<biography xmlns:xlink="http://www.w3.org/1999/xlink/">
<image
source="http://www.turing.org.uk/turing/pi1/busgroup.jpg"
width="152" height="345"/>

<paragraph><person born='1912-06-23' died='1954-06-
07'><first_name>Alan</first_name>
<last_name>Turing</last_name> </person> was one of the first
people to truly deserve the name <emphasize>computer
scientist</emphasize>. Although his contributions to the field
were too numerous to list, his best-known are the eponymous
<emphasize xlink:type="simple"
xlink:href="http://cogsci.ucsd.edu/~asaygin/tt/ttest.html">Tur
ing Test</emphasize> and <emphasize xlink:type="simple"
xlink:href="http://mathworld.wolfram.com/TuringMachine.html">T
uring Machine</emphasize>.</paragraph>

background image

18

<paragraph><last_name>Turing</last_name> was also an
accomplished <profession>mathematician</profession> and
<profession>cryptographer</profession>. His assistance was
crucial in helping the Allies decode the German Enigma
machine.<footnote source="The Ultra Secret, F.W. Winterbotham,
1974">1</footnote></paragraph>

<paragraph> <last_name>Turing</last_name> committed suicide on
<date><month>June</month> <day>7</day>,year>1954</year></date>
after being convicted of homosexuality and forced to take
female hormone injections.<footnote source="Alan Turing: the
Enigma, Andrew Hodges, 1983">2</footnote>
</paragraph>

</biography>

background image

19

Nazwy w XML

Element lub inna nazwa w XML (np. atrybut) może
zawierać znaki alfanumeryczne: A-Z, a-z, 0-9 oraz
znaki spoza alfabetu angielskiego, np. ö, ç, itp.
Może także zawierać:

_ znak podkreślenia,

- myślnik,

. kropkę.

Nazwa XML nie może zawierać innych znaków
interpunkcyjnych, np.

"

, ', $, %, ;.

Nazwa XML nie może zawierać znaków odstępu.

Wszystkie nazwy zaczynające się od „XML” są
zarezerwowane.

background image

20

Przykłady poprawnych nazw XML

<Drivers_License_Number>98 NY

32</Drivers_License_Number>

<month-day-year>7/23/2001</month-day-year>

<first_name>Alan</first_name>

<_4-lane>I-610</_4-lane>

<téléphone>011 33 91 55 27 55 27</téléphone>

background image

21

Przykłady błędnych nazw XML

<Driver's_License_Number>98 NY

32</Driver's_License_Number>

<month/day/year>7/23/2001</month/day/year>

<first name>Alan</first name>

<4-lane>I-610</4-lane>

background image

22

Referencje

Dane znakowe wewnątrz elementu nie mogą
zawierać znaku
<, ponieważ jest on zawsze
interpretowany jako początek taga.

Jeśli potrzebny jest znak < w tekście należy użyć
referencji
&lt;.

Kiedy parser będzie czytał dokument, zamieni
każde wystąpienie
&lt;, &#x60; lub &#x3C; na
znak
<.

background image

23

Referencje

<SCRIPT LANGUAGE="JavaScript">

if (location.host.toLowerCase( ).indexOf("ibiblio")

&lt;

0) {

location.href="http://ibiblio.org/xml/";
}

</SCRIPT>

background image

24

Podobnie, dane tekstowe nie mogą zawierać znaku &

dlatego należy go zastąpić referencją &amp;

<company>W.L. Gore

&amp;

Associates</company>

Ponieważ kod znaku & to 38, dlatego można go rónież

zastąpić referencją &#38;

<company>W.L. Gore

&#38;

Associates</company>

background image

25

Predefiniowane referencje:

&lt;
Znak mniejszości, lewy nawias kątowy (<)

&amp;
Ampersand (&)

&gt;
Znak większości, prawy nawias kątowy (>)

&quot;
Cudzysłów (")

&apos;
Apostrof (')

background image

26

Tylko &lt; oraz &amp; są wymagane. Pozostałe są

opcjonalne. &quot; i &apos; są przydatne wewnątrz

wartości atrybutów, w celu uniknięcia niejednoznaczności

z i ':

<image source='oreilly_koala3.gif'
width='122' height='66'

alt='Powered by O

&apos;

Reilly Books'

/>

background image

27

Sekcje CDATA

W przypadku, kiedy dokument XML zawiera
przykłady kodu źródłowego XML lub HTML,
wszystkie znaki
< i & w tym kodzie muszą być
zastąpione za pomocą
&lt; i &amp;

W przypadku większych fragmentów tekstu może
to się stać niewygodne i powodować błędy,
w przypadku, kiedy dokument XML jest edytowany
przez człowieka.

Aby temu zaradzić wprowadzono sekcje CDATA.
Rozpoczynają się one
<![CDATA[ i kończą ]]>.

Wszystko pomiędzy <![CDATA[ i ]]> jest
traktowane jako surowe dane znakowe. Znaki
& nie są interpretowane.

background image

28

Sekcje CDATA

<p>You can use a default <code>xmlns</code>
attribute to avoid having to add the svg prefix to
all your elements:</p>

<pre><

![CDATA[

<svg xmlns="http://www.w3.org/2000/svg"
width="12cm" height="10cm">

<ellipse rx="110" ry="130" />

<rect x="4cm" y="1cm" width="3cm"
height="6cm" />

</svg>

]]>

</pre>

background image

29

Komentarze

W dokumentach XML można umieszczać
komentarze rozpoczynające się znakami
<!--
i kończące znakami
-->.

<!-- I need to verify and update these

links when I get a chance. -->

background image

30

Sterowanie przetwarzaniem

XML umożliwia wstawianie w dokumencie instrukcji

sterujących przetwarzaniem, umożliwiających

przekazanie informacji do aplikacji przetwarzających

dokument.

Instrukcja taka rozpoczyna się znakami <? i kończy

znakami ?>.

Po znakach <? następuje nazwa aplikacji, do której

skierowana jest instrukcja.

Przykładowa instrukcja skierowana do robotów

indeksujących:

<?robots index="yes" follow="no"?>

background image

31

Inna postać instrukcji :)

<?php

mysql_connect("database.unc.edu", "clerk","password");

$result = mysql("HR", "SELECT LastName, FirstName FROM

Employees ORDER BY LastName, FirstName");

$i = 0;

while ($i < mysql_numrows ($result)) {

$fields = mysql_fetch_row($result);

echo "<person>$fields[1] $fields[0] </person>\r\n";

$i++;

}

mysql_close( );

?>

background image

32

Przykładowa instrukcja polecająca przeglądarce

zastosowanie do dokumentu XML arkuszu stylów przed jego

wyświetleniem.

<?xml-stylesheet href="person.css" type="text/css"?>

<person>

Alan Turing

</person>

background image

33

Deklaracja XML

Dokument XML może rozpoczynać się od deklaracji XML:

<?xml version="1.0" encoding="ASCII" standalone="yes"?>

<person>

Alan Turing

</person>

background image

34

Atrybuty deklaracji XML

Atrybut version deklaracji XML określa numer
wersji XML i powinien mieć wartość 1.0.

Atrybut encoding określa sposób kodowania
dokumentu XML.

Atrybut standalone określa, czy dany dokument
XML wymaga odczytania zewnętrznego
dokumentu DTD.

background image

35

Przykład innego kodowania

<?xml version="1.0" encoding="ISO-8859-1"

standalone="yes"?>

<person>

Erwin Schrödinger

</person>

background image

36

Testowanie dokumentów XML

Każdy dokument XML, bez wyjątku, musi być
prawidłowo sformatowany. Tzn. musi spełniać
zbiór reguł, m.in.:

Każdy tag otwierający musi mieć swój tag zamykający,

Elementy mogą być zagnieżdżone, ale nie mogą się

przeplatać,

Może być tylko jeden element-korzeń,

Wartości atrybutów muszą być ograniczone

"

lub ',

Element nie może mieć dwóch atrybutów o tej samej

nazwie,

Komentarze i instrukcje sterujące przetwarzaniem nie

mogą być umieszczone wewnątrz tagów,

Znaki < i & nie mogą wystąpić w danych tekstowych

elementu lub atrybutu.

Przeglądarka, xmllint


Document Outline


Wyszukiwarka

Podobne podstrony:
Podstawy programowania II 1
Podstawy programowania II 2
Podstawy programowania II 6
Podstawy programowania II 4
Podstawy programowania II 3
Podstawy programowania II 1
Podstawy programowania II 5 Dynamiczne struktury danych(1)
PODSTAWA PROGRAMOWA PRZEDMIOTU MATEMATYKA II etap?ukacyjny
PLAN?UKACJI RELIGIJNEJ W ZAKRESIE I,II,III KLASY GIMNAZJUM plus podstawa programowa 2(1)x
PODSTAWA PROGRAMOWA KSZTAŁCENIA OGÓLNEGO, Studia, PWK3 II rok
Analiza stopnia realizacji podstawy programowej w grupie II na rok szkolny 12
Analiza stopnia realizacji podstawy programowej w grupie II na rok szkolny 12
PLAN?UKACJI RELIGIJNEJ W ZAKRESIE I,II,III KLASY GIMNAZJUM plus podstawa programowa 2
Podstawy programowania (wykład II)
Sprawozdanie z realizacji podstawy programowej z edukacji polonistycznej i matematycznej w klasie II
PLAN EDUKACJI RELIGIJNEJ W ZAKRESIE I,II,III KLASY GIMNAZJUM plus podstawa programowa 2
podstawa programowa przedmiotu historia i spoleczenstwo ii etap edukacyjny klasy iv vi zgodna z rozp

więcej podobnych podstron