Portál AbcLinuxu, 31. července 2025 00:18


Dotaz: Spracovanie rss Abclinuxu cez XSLT

junckritter avatar 10.12.2006 17:22 junckritter | skóre: 3 | blog: Laying_Circus | Trnava
Spracovanie rss Abclinuxu cez XSLT
Přečteno: 226×
Odpovědět | Admin

Zdravim, do skoly robim blog pomocou XSLT a chcem si tam dat posledny clanok/spravicku z abc-cka ziskany z rss. Do premennej si vlozim posledny element "item" a potom z neho taham title a link. Nejak takto:

<xsl:variable name="abc" select="document('http://www.abclinuxu.cz/auto/abc.rss')//rdf:RDF/item[position()=last()]" /> <a href="{$abc/link}"><xsl:value-of select="$abc/title" /></a>

Ale nefunguje to. Ani bez toho rdf:RDF, ani s nim (namespace rdf som nadefinoval, aj rss 1.0) Rovnaky postup na rss feed Roota a jednoho radia funguje. Nevedel by niekto poradit, neriesil to uz niekto? Dik

2008 All Human Rights Reserved
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.12.2006 22:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Spracovanie rss Abclinuxu cez XSLT
Odpovědět | | Sbalit | Link | Blokovat | Admin
XPath2 neznam, ale item[position()=last()] je podle mne nesmysl. Nema tam byt item[last()]?

A pak jeste zapist <a href="{$abc/link}"></a> nemuze fungovat, protoze ten href neni ve jmennem prostoru XSLT, takze XSLT procesor jej presne doslova okopiruje do vystupu.
junckritter avatar 11.12.2006 17:16 junckritter | skóre: 3 | blog: Laying_Circus | Trnava
Rozbalit Rozbalit vše Re: Spracovanie rss Abclinuxu cez XSLT
Ad 1) [position()=last()] a [last()] robia to iste, minimalne v prostredi nasej aplikacie. Ale je to jedno, lebo som zistil ze aj tak potrebujem [1].

Ad 2) Rovnaka (samozrejme okrem cesty ku konkretnemu elementu item) konstrukcia len s adresou Roota a Radia FM funguje dobre, takze tam snad chyba nebude. Nastavenie namespace rdf by tiez malo byt dobre, kedze bez jeho nastavenia mi XSLT procesor vynada ze rdf nepozna, po nastaveni uz mlci. Ako adresa linku sa v tomto konkretnom pripade zobrazuje "", rovnako aj titulok. Aje ked dam spocitat count(//item), tak vyhodi 0.

Inak XSLT mame verziu 1.0.
2008 All Human Rights Reserved
12.12.2006 12:06 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Spracovanie rss Abclinuxu cez XSLT
Roota jsem nestudoval, ale podle specifikace RSS1 (jestli se tomu da rikat specifikace), je koren a vetsina jeho potomku, mimo jine i item/title a item/link ve NS http://purl.org/rss/1.0/. Navic posledni clanek byva ten prvni.

Takze vysledna sablona muze vypadat takhle
<xslt:stylesheet
    xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rss1="http://purl.org/rss/1.0/"
    exclude-result-prefixes="rdf rss1"
    version="1.0">

<xslt:output method="xml" encoding="utf-8" indent="yes"/>

<xslt:template match="/">
    <last_abc>
        <xslt:variable name="abc"
            select="document('http://www.abclinuxu.cz/auto/abc.rss')//rdf:RDF/rss1:item[1]"/>
        <a href="{$abc/rss1:link}"><xslt:value-of select="$abc/rss1:title"/></a>
    </last_abc>
</xslt:template>
Ciste teoreticky: RSS1 definuje polozky kanalu pomoci RDF (//rss1:items/rdf:Seq/rdf:li), ktere pres atribut @rdf:resource ukazuje na //rss1:item[@rdf:about]/. Takze by bylo zahodno kontrolovat i to.
12.12.2006 12:08 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Spracovanie rss Abclinuxu cez XSLT
s/koren a vetsina jeho potomku/vetsina jeho potomku/
junckritter avatar 13.12.2006 12:43 junckritter | skóre: 3 | blog: Laying_Circus | Trnava
Rozbalit Rozbalit vše Re: Spracovanie rss Abclinuxu cez XSLT
Diky moc, uz to funguje. Vysledna podoba je <xsl:variable name="abc" select="document('http://www.abclinuxu.cz/auto/zpravicky.rss')//rss:item[1]" /> a <a href="{$abc/link}"><xsl:value-of select="$abc/rss:title" /></a> Takze bolo treba nadefinovat extension-element-prefixes pre rss a pouzit to pri ziskavani elementov (rss:item). Vsetko logicke, len som si to musel uvedomit. Vdaka.
2008 All Human Rights Reserved

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.