Autor | Zpráva | ||
---|---|---|---|
Tomáš Hanus Profil |
#1 · Zasláno: 18. 7. 2007, 15:39:02 · Upravil/a: Tomáš Hanus
mám xml soubor
a šablonu
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 * |
#2 · Zasláno: 18. 7. 2007, 16:45:38
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 |
#3 · Zasláno: 18. 7. 2007, 19:20:08
Alutom
díky za ochotu, ale tím to není. |
||
Chamurappi Profil |
#4 · Zasláno: 18. 7. 2007, 19:58:34 · Upravil/a: Chamurappi
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"… 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"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 |
#5 · Zasláno: 18. 7. 2007, 20:14:06
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 |
#6 · Zasláno: 18. 7. 2007, 20:19:14
Reaguji na Tomáše Hanuse:
Mohu někde naživo vidět, jak to nefunguje? |
||
Tomáš Hanus Profil |
#7 · Zasláno: 18. 7. 2007, 20:21:48
|
||
Tomáš Hanus Profil |
#8 · Zasláno: 18. 7. 2007, 20:23:33 · Upravil/a: Tomáš Hanus
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 |
#9 · Zasláno: 18. 7. 2007, 20:54:32
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 |
#10 · Zasláno: 18. 7. 2007, 21:06:19
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 |
#11 · Zasláno: 18. 7. 2007, 21:18:11
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 |
#12 · Zasláno: 18. 7. 2007, 21:20:03
Chamurappi
aha, no ja jsem :) radši pomlčet. Hele, díky ti moc ;) |
||
Časová prodleva: 17 let
|
0