Commit 48bcd5a8 by Patryk Czarnik

przykład arkusza XSLT - przy okazji ;)

parent deb643fc
<?xml version="1.0" encoding="UTF-8"?>
<!-- Data modyfikacji: 2021-08-11 -->
<sklep>
<kategoria id="herbata">
<nazwa>Herbata</nazwa>
<opis>Herbata jest dobra.</opis>
</kategoria>
<kategoria id="kawa">
<nazwa>Kawa</nazwa>
<opis>Dobra kawa też nie jest zła. Zawiera <term>kofeinę</term>.</opis>
</kategoria>
<kategoria id="czeko">
<nazwa>Czekolada</nazwa>
</kategoria>
<towar id-kategorii="herbata" id-towaru="teekane-gold">
<nazwa>Teekane Gold <rem>80 szt.</rem></nazwa>
<opis>
Opis z <em>wyróżnieniem <em>zagnieżdżonym</em></em>, <term>pojęciem</term>, <rem>uwagą</rem> oraz <link href="http://pl.wikipedia.org">odnośnikiem</link>.
<br/>
Ten fragment ma być od nowej linii.<br/>
Wprowadzamy jeszcze odnośniki do innych towarów: <inny-towar ref="lipton100"/>.
</opis>
<cena>12</cena>
<vat>23</vat>
<cena-promocyjna od="2016-11-17" do="2016-11-18">10.99</cena-promocyjna>
</towar>
<towar id-kategorii="czeko" id-towaru="milka-m">
<nazwa>Milka mleczna</nazwa>
<opis>
Niebieskie krowy dają czekoladę. Takie rzeczy tylko w niemieckich Alpach.
<br/>
<![CDATA[Wzór na czekoladę: x < 15 & y > 7 ]]>
</opis>
<cena>2.50</cena>
<vat>23</vat>
</towar>
<towar id-kategorii="herbata" id-towaru="lipton100">
<nazwa>Lipton 100 szt.</nazwa>
<opis>
Herbata w żółtym pudełku <em>mieszczącym 100 sztuk</em>.<br/>
Opłacalny wybór.
</opis>
<cena>12</cena>
<vat>23</vat>
<cena-promocyjna od="2016-11-20" do="2016-11-21">10.99</cena-promocyjna>
<cena-promocyjna od="2016-11-10" do="2016-11-30">10.49</cena-promocyjna>
<!-- Komentarz herbaty -->
</towar>
<towar id-kategorii="herbata" id-towaru="lipton25">
<nazwa>Lipton 25 szt.</nazwa>
<opis>
Herbata w żółtym pudełku <em>mieszczącym 25 sztuk</em>.<br/>
<em><rem>Nieco mniej</rem> opłacalny wybór</em>.
</opis>
<cena>6.50</cena>
<vat>23</vat>
</towar>
<towar id-kategorii="kawa" id-towaru="jacobs-k">
<nazwa>Jacobs Krönung</nazwa>
A KUKU
<opis>
Królowa kawy od <link href="http://www.coffeemoose.pl/historia-firmy-jacobs">wielu lat</link>.
</opis>
<cena>13</cena>
<vat>23</vat>
<cena-promocyjna od="2016-11-18" do="2017-04-18">16</cena-promocyjna>
</towar>
<towar id-kategorii="herbata" id-towaru="dilmah">
<nazwa>Dilmah black tea</nazwa>
<opis>
Czarna herbata Dilmah. Klasyka smaku.
</opis>
<cena>16</cena>
<vat>23</vat>
<cena-promocyjna od="2016-11-12" do="2016-11-21">17</cena-promocyjna>
</towar>
<towar id-kategorii="kawa" id-towaru="tchibo">
<nazwa>Tchibo Family</nazwa>
<opis>
Ulubiona kawa rodzinna.<br/>
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
Ala ma kota a Ola ma psa. Ala z Olą lubią się jak pies z kotem.
</opis>
<cena>19</cena>
<vat>23</vat>
<cena-promocyjna od="2016-11-20" do="2016-11-21">16</cena-promocyjna>
</towar>
<towar>
<nazwa>Pan Tadeusz</nazwa>
<opis>
Litwo! Ojczyzno moja! ty jesteś jak zdrowie:
Ile cię trzeba cenić, ten tylko się dowie,
Kto cię stracił. Dziś piękność twą w całej ozdobie
Widzę i opisuję, bo tęsknię po tobie.
Panno święta, co Jasnej bronisz Częstochowy
I w Ostrej świecisz Bramie! Ty, co gród zamkowy
Nowogródzki ochraniasz z jego wiernym ludem!
Jak mnie dziecko do zdrowia powróciłaś cudem
(Gdy od płaczącej matki, pod Twoją opiekę
Ofiarowany, martwą podniosłem powiekę;
I zaraz mogłem pieszo, do Twych świątyń progu
Iść za wrócone życie podziękować Bogu),
Tak nas powrócisz cudem na Ojczyzny łono.
Tymczasem przenoś moją duszę utęsknioną
Do tych pagórków leśnych, do tych łąk zielonych,
Szeroko nad błękitnym Niemnem rozciągnionych;
Do tych pól malowanych zbożem rozmaitem,
Wyzłacanych pszenicą, posrebrzanych żytem;
Gdzie bursztynowy świerzop, gryka jak śnieg biała,
Gdzie panieńskim rumieńcem dzięcielina pała,
A wszystko przepasane jakby wstęgą, miedzą
Zieloną, na niej z rzadka ciche grusze siedzą.
</opis>
<cena>10000000</cena>
<vat>8</vat>
</towar>
<towar id-kategorii="czeko" id-towaru="wedel-g">
<nazwa>Wedel gorzka</nazwa>
<opis>
Czekolada gorzka i twarda.<br/>
<rem>Uwaga na zęby</rem>
</opis>
<cena>2.20</cena>
<vat>23</vat>
</towar>
<towar id-kategorii="czeko" id-towaru="wedel-m">
<nazwa>Wedel mleczna</nazwa>
<opis>
Jeśli ktoś lubi bardziej na słodko, czekolada mleczna będzie OK.
</opis>
<cena>2.20</cena>
<vat>23</vat>
</towar>
<towar id-kategorii="herbata" id-towaru="ahmad">
<nazwa>Ahmad Tea</nazwa>
<opis>
Mocna czarna herbata dla wybrednych. Jak dla mnie smaczniejsza niż <inny-towar ref="lipton100"/>.
</opis>
<cena>13</cena>
<vat>23</vat>
</towar>
<towar id-kategorii="herbata" id-towaru="saga">
<nazwa>Saga</nazwa>
<opis>
Tania herbata dla oszczędnych. <rem>Jednak nie tak tania jak produkty w Biedronce.</rem>
</opis>
<cena>13</cena>
<vat>23</vat>
</towar>
</sklep>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="UTF-8" version="5"/>
<xsl:template match="/">
<html>
<head>
<title>Przykładowy sklep</title>
<xsl:call-template name="wstaw_css"/>
</head>
<body>
<h1>Asortyment sklepu</h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="kategoria">
<div class="kategoria" id="K{@id}">
<xsl:apply-templates select="nazwa"/>
<xsl:apply-templates select="opis"/>
<ul>
<xsl:for-each select="//towar[@id-kategorii = current()/@id]">
<xsl:sort select="nazwa"/>
<li><a href="#T{@id-towaru}"><xsl:value-of select="nazwa"/></a></li>
</xsl:for-each>
</ul>
</div>
</xsl:template>
<xsl:template match="towar">
<div class="towar" id="T{@id-towaru}">
<xsl:apply-templates select="nazwa"/>
<xsl:if test="@id-kategorii">
<div>Kategoria: <a href="#K{@id-kategorii}"><xsl:value-of select="/sklep/kategoria[@id = current()/@id-kategorii]/nazwa"/></a></div>
</xsl:if>
<div>Cena netto: <xsl:value-of select="format-number(cena, '0.00')" /></div>
<div>Cena brutto: <xsl:value-of select="format-number(cena * (1 + vat div 100), '0.00')" /></div>
<div>Stawka VAT: <xsl:value-of select="vat"/>%</div>
<xsl:apply-templates select="opis"/>
</div>
</xsl:template>
<xsl:template match="nazwa">
<h2>
<xsl:apply-templates />
</h2>
</xsl:template>
<xsl:template match="opis">
<p class="opis">
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="em">
<strong>
<xsl:apply-templates />
</strong>
</xsl:template>
<xsl:template match="rem">
<span class="rem">
<xsl:apply-templates />
</span>
</xsl:template>
<xsl:template match="term">
<dfn>
<xsl:apply-templates />
</dfn>
</xsl:template>
<xsl:template match="link">
<a href="{@href}">
<xsl:apply-templates />
</a>
</xsl:template>
<xsl:template match="br">
<br/>
</xsl:template>
<xsl:template name="wstaw_css">
<style type="text/css"><![CDATA[
body {
background-color: white;
font-family: 'Arial', sans-serif;
font-size: 14pt;
}
.kategoria, .towar {
width: 800px;
margin: 20px auto;
padding: 10px 20px;
background-color: #DDDDDD;
}
.kategoria {
border: 6px outset red;
}
.towar {
border: 6px inset blue;
}
h2 {
color:blue;
text-align: center;
}
.opis {
margin: 0.5em 0;
}
.rem {
font-style: italic;
color: magenta;
font-size: smaller;
}
dfn {
font-weight: bold;
font-style: normal;
}
.komentarz {
color: green;
text-style: italic;
}
]]>
</style>
</xsl:template>
</xsl:stylesheet>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment