background image

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>  

background image

</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; 

background image

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> 

 

 

 

 

 

 

background image

 

 

 

 

</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 

background image

 

 

 

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>'; 

 

 

 

 

 

 

?>