Autor Zpráva
Tomáš Hanus
Profil
mám xml soubor

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="ctecka.xsl" media="screen" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/">
<item rdf:about="http://www.petrkunc.net/lotus/1184011646-rady-pro-zacinajic i-s-quickrem.html">
<title>Rady pro začínající s Quickrem</title>
<link>http://www.petrkunc.net/lotus/1184011646-rady-pro-zacinajici-s-q uickrem.html</link>
<description>Tak Quickr už je venku v plné verzi a pokud se chcete pustit do jeho prozkoumávání, možná se vám budou hodit tyto postřehy a odkazy.</description>
<dc:subject>Quickr</dc:subject>
<dc:creator>Petr Kunc</dc:creator>
<dc:date>2007-07-09T20:07:00+01:00</dc:date>
</item>
<item rdf:about="http://www.petrkunc.net/lotus/1183819830-znate-nove-ikony.h tml">
<title>Znáte nové ikony?</title>
<link>http://www.petrkunc.net/lotus/1183819830-znate-nove-ikony.html</ link>
<description>S novými verzemi dostávají produkty novejší produktové ikony, symboly. Jsou všechny kulaté a do oranžova, jak je zvykem. Asi jste už viděli nové ikony Quickru nebo Connections. A znáty tyhle, které...</description>
<dc:subject>Lotus Notes</dc:subject>
<dc:creator>Petr Kunc</dc:creator>
<dc:date>2007-07-07T14:50:00+01:00</dc:date>
</item>
<item rdf:about="http://www.petrkunc.net/lotus/1183664287-seminar-lotus-quic kr.html">
<title>Seminář Lotus Quickr</title>
<link>http://www.petrkunc.net/lotus/1183664287-seminar-lotus-quickr.ht ml</link>
<description>Na konec července připravujeme pro techniky z řad obchodních partnerů dvoudenní technický seminář o Lotus Quickru. Akce bude mít teore...</description>
<dc:subject>Quickr</dc:subject>
<dc:creator>Petr Kunc</dc:creator>
<dc:date>2007-07-05T19:38:00+01:00</dc:date>
</item>
</rdf:RDF>


a šablonu


<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
<xsl:template match="/rdf">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="expires" content="-1" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="private" />
<meta http-equiv="content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Novinky z Lotus Notes" />
<title>Novinky z Lotus Notes</title>
<style>
table {padding-bottom: 10px; border: 1px}
</style>
</head>
<body>
<xsl:for-each select="item">
<table>
<tr>
<td>
<xsl:value-of select="title" />
</td>
</tr>
<tr>
<td>
<xsl:value-of select="link" />
</td>
</tr>
<tr>
<td>
<xsl:value-of select="date" />
</td>
</tr>
<tr>
<td>
<xsl:value-of select="description" />
</td>
</tr>
</table>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>



nemohu docílit toho, aby pro každý item byla nová tabulka, výstup toho xml&xsl je pouze text, který jde za sebou bez mezer, žádně formátování, může mi někdo pomoci? Děkuji.
Alutom
Profil *
Nevím, zkus třeba přidat do hlavičky v šabloně ("<head></head>") přidat tenhle styl:

<style type="tex/css">
<![CDATA[
html, body {display: block;}
head, head * {display: none;}
table {display: table;}
tbody {display: table-row-group;}
tr {display: table-row;}
td {display: table-cell;}
]]>
</style>

...nevím jistě, jestli to funguje...
Tomáš Hanus
Profil
Alutom
díky za ochotu, ale tím to není.
Chamurappi
Profil
Reaguji na Alutoma:
To připomíná výchozí styly HTML. Pokud ovšem prohlížeč nepoužívá výchozí styly, znamená to, že nezná sémantiku HTML elementů => nerozezná ani význam elementu <style>.


Reaguji na Tomáše Hanuse:
Doporučuji podívat se na jmenné prostory.
1) match="/rdf" — element <rdf> tam nikde nemáš. Kořenový element je <RDF> ve jmenném prostoru „http://www.w3.org/1999/02/22-rdf-syntax-ns#“. Chceš-li jej zaměřit, musíš deklarovat tentýž jmenný prostor i v XSLT šabloně.
2) select="item" — element <item> tam také nikde nemáš. Máš tam pouze <item> ve jmenném prostoru „http://purl.org/rss/1.0/“. Chceš-li jej zaměřit, musíš deklarovat i tento jmenný prostor.
3) Až budeš potřebovat elementy z dalších jmenných prostorů, tak je také musíš deklarovat.

V XPath dotazu se pak používá zápis s prefixem stejně jako u elementu. Takže přidej všechny ty deklarace:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rss="http://purl.org/rss/1.0/">
… a pak místo match="/RDF" napíšeš match="/rdf:RDF" a místo select="item" dáš select="rss:item".

Když už tady jsem, tak:
<xsl:output method="xml" indent="yes"

doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
Jestli chceš výsledek servírovat prohlížečům (nebo rovnou provádět transformovaci v prohlížeči), tak se ti tohle může vymstít, protože při MIME typu „text/html“ užívají všechny prohlížeče HTML parser => nadbytečná lomítka ignorují jako syntaktické chyby a když ti XSLT procesor vyprskne zápis <div/>, tak tomu porozumí jako počáteční značce, nikoliv jako ukončenému <div>u. Stručně řečeno: XHTML se prostě na web nehodí. Proto bych na tvém místě upřednostnil:
<xsl:output method="html" indent="yes"/>
Tomáš Hanus
Profil
Přiznávám, že tomu moc nerozumím, ale udělat to musím. Postup, který jsi psal nefunguje. Pokud právě změním jmenné prostory tak, jak jsi řekl, žádná data se nezobrazí.
Chamurappi
Profil
Reaguji na Tomáše Hanuse:
Mohu někde naživo vidět, jak to nefunguje?
Tomáš Hanus
Profil
Chamurappi
ano, samozřejmě. XML odkaz a XSL odkaz
Tomáš Hanus
Profil
Chamurappi
jinak je to pro portál, takže o parseru na straně serveru nemůže být řeč a portál je orientován především na použití prostřednictvím browseru, takže je to nezbytné. Pokud si napíši XML sám, vše mi funguje, ale potřebuji aplikovat šablonu na rss, kterou ovlivnit nemohu. Díky
Chamurappi
Profil
Reaguji na Tomáše Hanuse:
Nepřesně jsem se vyjádřil. Tím „místo select="item" dáš select="rss:item"“ jsem myslel, abys dal prefix „rss“ ke všem názvům elementů z dotyčného jmenného prostoru, takže i k „title“, „link“, „date“ a „description“.

potřebuji aplikovat šablonu na rss, kterou ovlivnit nemohu
Takže se musíš vypořádat i s vícero verzemi RSS. Hodně štěstí.

A nezapomeň na ten <xsl:output/> :-)
Tomáš Hanus
Profil
Chamurappi
Díky, teď to funguje, jsem to asi pochopil špatně já, promiň za nedorozmnění.

„potřebuji aplikovat šablonu na rss, kterou ovlivnit nemohu“
Takže se musíš vypořádat i s vícero verzemi RSS. Hodně štěstí.

Ne nemusím, o více kanálů zatím zájem nemám, ale kdo ví v dohledné době.

Ještě bych potřeboval aby jednotlivé položky (items) byly odděleny mezerou, dejme tomu 20px. Náznak v <style></style> je, ale nepracuje správně. Můžeš se na to prosím podívat? Jinak fakt děkuji za pomoc.
Chamurappi
Profil
Reaguji na Tomáše Hanuse:
1) <style type="tex/css"> — chybí ti tam „t“.
2) V Exploreru nefunguje padding na tabulce, užij margin.
Tomáš Hanus
Profil
Chamurappi
aha, no ja jsem :) radši pomlčet. Hele, díky ti moc ;)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: