Politechnika Świętokrzyska
Projektowanie Aplikacji Internetowych
Laboratorium 6
XML
Grupa: 312B
Paweł Grzeszczak
Piotr Chebdowski
Data wykonania ćwiczenia: 09.01.2012
Godzina: 11:40
Data oddania sprawozdania: 12.01.2012
1. Zbudować witrynę opartą o język XML.
Baza danych magazynu wojskowego. Przedmioty z magazynu są przypisane
osobą na podstawie ID zawartych w podelementach ‘relation’.
<!DOCTYPE baza [
<!ELEMENT baza
(magazyn,osoby,relacje)>
<!ELEMENT magazyn
(sprzet*)>
<!ELEMENT osoby
(osoba*)>
<!ELEMENT relacje
(relation*)>
<!ELEMENT sprzet
(#PCDATA)>
<!ELEMENT relation
(EMPTY)>
<!ELEMENT osoba
(#PCDATA)>
<!ATTLIST sprzet id_sprz ID #REQUIRED>
<!ATTLIST osoba id_os ID #REQUIRED>
<!ATTLIST relation id_sprz IDREF #REQUIRED>
<!ATTLIST relation id_os IDREF #REQUIRED>
]>
<baza>
<magazyn>
<sprzet id_sprz="a1">ckm</sprzet>
<sprzet id_sprz="a2">skarpety</sprzet>
<sprzet id_sprz="a3">manierka</sprzet>
<sprzet id_sprz="a4">granat</sprzet>
<sprzet id_sprz="a5">kalosze</sprzet>
<sprzet id_sprz="a6">bazuka</sprzet>
</magazyn>
<osoby>
<osoba id_os="b3">Kazimierz</osoba>
<osoba id_os="b2">Waldek</osoba>
<osoba id_os="b1">Pedro</osoba>
</osoby>
<relacje>
<relation id_os="b1" id_sprz="a1"/>
<relation id_os="b1" id_sprz="a2"/>
<relation id_os="b1" id_sprz="a3"/>
<relation id_os="b1" id_sprz="a5"/>
<relation id_os="b2" id_sprz="a2"/>
<relation id_os="b2" id_sprz="a3"/>
<relation id_os="b2" id_sprz="a5"/>
<relation id_os="b2" id_sprz="a6"/>
<relation id_os="b3" id_sprz="a1"/>
<relation id_os="b3" id_sprz="a2"/>
<relation id_os="b3" id_sprz="a5"/>
</relacje>
</baza>
a) CSS
Wyświetlenie bazy z pliku army2.xml z użyciem CSS.
Prolog pliku xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet type="text/css" href="army.css"?>
Plik army.css:
baza {
font-family:Arial, Helvetica, sans-serif;
font-size: 20px;
background-color: #66FF00;
padding: 50px;
}
magazyn {
display:block;
font-size: 15px;
}
sprzet {
display:block;
}
osoby {
font-weight: bold;
}
osoba {
display:block;
}
h1 {
font-weight: bold;
font-size: 50px;
color:#969696;
}
b) XSL
Wyświetlenie bazy z pliku army.xml z użyciem XSL..
Prolog pliku xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="army.xsl"?>
Plik army.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title> Magazyn wojskowy </title>
<link href="army.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<center><h1>
-- Magazyn wojskowy --
</h1></center>
<table>
<tr>
<th>Osoba</th>
</tr>
<xsl:for-each select="//osoba">
<tr>
<td><xsl:apply-templates/></td>
</tr>
</xsl:for-each>
<th>Itemy</th>
<xsl:for-each select="//sprzet">
<tr>
<td><xsl:apply-templates/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
c)PHP
Wyświetlenie bazy z pliku army.xml. Przechodząc po relacjach wyświetlamy osobę i
przypisane jej przedmioty.
Plik army.php:
<?php
$baza = simplexml_load_file("army.xml");
foreach($baza->relacje->relation as $s) {
$id = $s->attributes(); //id z relacji
foreach($baza->osoby->osoba as $boo) {
$b = $boo->attributes(); //id z osoby
if(!strcmp($b, $id[0])) {
print $boo.' : ';
}
}
foreach($baza->magazyn->sprzet as $bs) {
$idbs = $bs->attributes(); // id ze sprzetu
if(!strcmp($idbs, $id[1])) {
print $bs.'</br>';
}
}
}
?>