Avatar billede hansen Nybegynder
05. oktober 2004 - 09:44 Der er 7 kommentarer og
1 løsning

vis kun 5 poster

Er det muligt at gennemløbe et RSS, og her vælge kun at vise de 5 nyeste poster i RSS feeden, jeg har nedenstående XSL dokumnet.

---
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">

<h1 class="rsshead"><xsl:value-of select="//channel/description"/></h1>

<table border="0">
    <xsl:for-each select="//channel/item">
        <tr>
        <td>
            <a class="rssitemtitle">
            <xsl:attribute name="href"><xsl:value-of select="link"></xsl:value-of></xsl:attribute>
            <xsl:value-of select="title"/>
            </a>
            <br/>
            <xsl:value-of select="description"/>
        </td>
        </tr>
    </xsl:for-each>

    <xsl:for-each select="//item">
        <tr>
        <td>
            <a class="rssitemtitle">
            <xsl:attribute name="href"><xsl:value-of select="link"></xsl:value-of></xsl:attribute>
            <xsl:value-of select="title"/>
            </a>
            <br/>
            <xsl:value-of select="description"/>
        </td>
        </tr>
    </xsl:for-each>

    </table>

</xsl:template>
</xsl:stylesheet>
---
Avatar billede janegil Nybegynder
05. oktober 2004 - 12:07 #1
<xsl:template select="item[6>pos()]">
Avatar billede hansen Nybegynder
06. oktober 2004 - 09:24 #2
Det viser stadigvæk alle udtræk fra DRs RSS feed

Jeg har erstattet denne linie
<xsl:template match="/">

med denne
<xsl:template select="item[6>pos()]">

Er det korrekt forstået ?
Avatar billede hansen Nybegynder
06. oktober 2004 - 10:00 #3
Fandt selv løsningen efter at have besøgt omkring 10000 sider på nettet :-(
--
<xsl:for-each select="Recordset/Record" order-by="fName">
<xsl:if test="context()[index() $ge$ 0 and index() $lt$ 10]">
    <TR>
        <TD><xsl:value-of select="fName"/></TD>
        <TD><xsl:value-of select="lName"/></TD>
        <TD><xsl:value-of select="hire_date"/></TD>
    </TR>
</xsl:if>
</xsl:for-each>
--
Avatar billede janegil Nybegynder
06. oktober 2004 - 10:26 #4
Nei, jeg tente vel mere i retning av å erstatte all for-each med templates og apply-templates.

Så kanskje erstatte
<xsl:for-each select="//item">
med
<xsl:for-each select="//item[6>pos()]">

Men hva er forskjellen på
<xsl:for-each select="//channel/item">
og
<xsl:for-each select="//item">
?
Avatar billede nute Nybegynder
13. oktober 2004 - 19:50 #5
det vil jo være smart hvis du benytter korrekt namespace:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

den du bruger, er MS working draft, og er MEGET gammel ... den kan sådan set ikke bruges til noget.

/nute
Avatar billede hansen Nybegynder
19. oktober 2004 - 08:16 #6
Hmm, når jeg bytter denne her ud:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
med denne her i mit script:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

så stopper den med at hente nyhederne hos f.eks. DR?

Min kode som den virker med det gamle, og uden det nye som nute skriver:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">

<h1 class="rsshead"><xsl:value-of select="//channel/description"/></h1>

<table border="0">

    <xsl:for-each select="//channel/item">
    <xsl:if test="context()[index() $ge$ 0 and index() $lt$ 3]">
        <tr>
        <td>
            <a class="rssitemtitle">
            <xsl:attribute name="href"><xsl:value-of select="link"></xsl:value-of></xsl:attribute>
            <xsl:value-of select="title"/>
            </a>
            <br/>
            <xsl:value-of select="description"/>
        </td>
        </tr>
    </xsl:if>
    </xsl:for-each>

    <xsl:for-each select="//item">
    <xsl:if test="context()[index() $ge$ 0 and index() $lt$ 3]">
        <tr>
        <td>
            <a class="rssitemtitle">
            <xsl:attribute name="href"><xsl:value-of select="link"></xsl:value-of></xsl:attribute>
            <xsl:value-of select="title"/>
            </a>
            <br/>
            <xsl:value-of select="description"/>
        </td>
        </tr>
    </xsl:if>
    </xsl:for-each>

    </table>

</xsl:template>
</xsl:stylesheet>
Avatar billede nute Nybegynder
19. oktober 2004 - 11:29 #7
det er ikke kun at skifte namespace - det er en helt anden måde at skrive sin xsl på, når man bruger dent rigtige namespace. Man kan fx ikke skrive

index() $ge$ 0

Dette skal skrives sådan:

position() &gt; 0


Denne linie

<xsl:if test="context()[index() $ge$ 0 and index() $lt$ 3]">

ville jeg have skrevet sådan:

<xsl:if test="position() &lt; 3">

( position() vil altid give en værdi > 0, så dette behøves ikke at tjekkes for )

Kig her for at få et hurtig overblik over hvad du kan bruge af funktioner:

http://www.mulberrytech.com/quickref/XSLTquickref.pdf

/nute
Avatar billede hansen Nybegynder
19. oktober 2004 - 13:10 #8
takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester