spotkanie 5

XML

Przykładowy plik XML wygląda tak:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Bardziej zaawansowany przykład.

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>

  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>

  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>

  <book category="web">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>
  </book>

  <book category="web" cover="paperback">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>

</bookstore>

Proszę zajrzeć do:

Zadanie 1.

Stwórz dokument XML zawierający informacje o firmie zgodnie z zaleceniami prowadzącego. Tam gdzie możesz wykorzystaj atrybuty.

Rozwiązanie:

<?xml version="1.0" encoding="UTF-8"?>
<company name="MY BEst" >
    <address>
        <street>Błotna</street>
        <no>234</no>
    </address>
    <email>
        office@my-best.org
    </email>
	<employee role="boss">
		<name>Jan</name>
		<surname>Kowalski</surname>
		<email>re@my-best.org</email>
		<salary>1232.44</salary>
		<address>
			<street>Wejska</street>
			<no>23</no>
		</address>
	</employee>
	<departments>
		<department name="IT">
			<employee role="manager">
				<name>Jan</name>
				<surname>Kowalski</surname>
				<email>jk@my-best.org</email>
				<salary>1232.44</salary>
				<address>
					<street>Wejska</street>
					<no>23</no>
				</address>
			</employee>
			<employee role="regular">
				<name>Kamil</name>
				<surname>Nowak</surname>
				<email>kn@my-best.org</email>
				<salary>1232.44</salary>
				<address>
					<street>Wejska</street>
					<no>23</no>
				</address>
			</employee>
		</department>
	</departments>
</company>

XPath

Zapoznaj się z XML XPath oraz później z tutorialem.

Zadanie 2.

Wykorzystując XPath Tester wybierz następujące elementy:

  • wszystkich pracowników
  • ostatni dział
  • wybierz wszystkich drugich pracowników w dziale
  • elementy, które mają atrybut
  • pracowników którzy zarabiają powyżej 10000
  • pracowników z działu IT którzy zarabiają mniej niż 2000
  • pracowników, którzy są zwykłymi pracownikami
  • pracownika, który jest szefem

w razie problemów zerknij tutaj.

Ostylowanie = XSLT lub CSS

Zapoznaj się z XML and XSLT.

Przyjrzyj się następującemu przykładowi

<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>

<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
<calories>650</calories>
</food>

<food>
<name>Strawberry Belgian Waffles</name>
<price>$7.95</price>
<description>Light Belgian waffles covered with strawberries and whipped cream</description>
<calories>900</calories>
</food>

<food>
<name>Berry-Berry Belgian Waffles</name>
<price>$8.95</price>
<description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
<calories>900</calories>
</food>

<food>
<name>French Toast</name>
<price>$4.50</price>
<description>Thick slices made from our homemade sourdough bread</description>
<calories>600</calories>
</food>

<food>
<name>Homestyle Breakfast</name>
<price>$6.95</price>
<description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
<calories>950</calories>
</food>

</breakfast_menu>

Podlikowanie pliku CSS w pliku XML.

<?xml-stylesheet type="text/css" href="arkusz.css"?>
food{
	color: red;
	display:block;
	margin: 10px;
}
price{
	font-weight: bold;
	display:block;
}

Podlikowanie pliku XSLT w pliku XML (przetestuj w http://xslttest.appspot.com).

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
<xsl:for-each select="breakfast_menu/food">
  <div style="background-color:teal;color:white;padding:4px">
    <span style="font-weight:bold"><xsl:value-of select="name"/> - </span>
    <xsl:value-of select="price"/>
    </div>
  <div style="margin-left:20px;margin-bottom:1em;font-size:10pt">
    <p>
    <xsl:value-of select="description"/>
    <span style="font-style:italic"> (<xsl:value-of select="calories"/> calories per serving)</span>
    </p>
  </div>
</xsl:for-each>
</body>
</html>

Zadanie 3.

Przygotuj ostylowanie dla pliku z pierwszego zadania.

XML DTD

Zapoznaj się z XML DTD.

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>

Zadanie 4.

Przygotuj reguły dla pliku z pierwszego zadania.

XML Schema

Zapoznaj się z XML Schema.

JSON

Porównaj przykładowy plik JSON i XML oraz zapoznaj się z innymi przykładami.

XML

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

JSON

{
	"note": {
		"to": "Tove",
		"from": "Jani",
		"heading": "Reminder",
		"body": "Don't forget me this weekend!"
	}
}

JSON vs. XML

Zadanie 5.

Zapoznaj się z podstawowym kursem JSON tutorial

REST API

Lista darmowych API znajduje się >>tutaj<<

Zadanie 6.

Korzystając z API https://restcountries.eu proszę pobrać informacje o Polsce