Avatar billede kresten Nybegynder
06. februar 2002 - 13:12 Der er 5 kommentarer og
1 løsning

Hent første element

Hejsa

Jeg har et "lille" problem der er ved at gøre mig grå hår. Det er noget gammel XSL som skal vise den første nyhed der ligger i noget XML som ser sådan ud:
<articles>
  <article>
    <title><![CDATA[Min overskrift1]]></title>
    <text>
      <paragraph>
        <![CDATA[Her er en masse tekst1]]>
      </paragraph>
      <paragraph>
        <![CDATA[.. og mere tekst1]]>
      </paragraph>
    </text>
  <text>
      <paragraph>
        <![CDATA[Her er en masse tekst1]]>
      </paragraph>
      <paragraph>
        <![CDATA[.. og mere tekst1]]>
      </paragraph>
  </text>
</articles>

Jeg vil så lave noget XSL som kun skriver den første nyhed ud, og kun den. Dvs overskriften og de paragrafer der er.

Udfordringen for dig er så at den bruger det gamle www.w3.org/TR/WD-xsl namespace, så du kan ikke rigtig lave noget fancy :)

Nogen forslag?
Avatar billede Slettet bruger
06. februar 2002 - 14:15 #1
Here you go...

<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
   
    <xsl:template match="/">
        <xsl:apply-templates select="/articles/article[0]" />
    </xsl:template>

    <xsl:template match="* | text()">
            <xsl:value-of />
        </xsl:template>
   
    <xsl:template match="article">
        <xsl:apply-templates />
    </xsl:template>
   
</xsl:stylesheet>

/CS
Avatar billede Slettet bruger
06. februar 2002 - 14:23 #2
PS:
- Du har glemt at "lukke" <article>.
- Husk at lave nogle templates til <title> og <paragraph>, f.eks:

<xsl:template match="title">
  <h1><xsl:apply-templates /></h1>
</xsl:template>

<xsl:template match="paragraph">
  <p>><xsl:apply-templates /></p>
</xsl:template>

/CS
Avatar billede kresten Nybegynder
06. februar 2002 - 14:30 #3
Men den skriver dem begge ud? Jeg vil kun have den allerførste :(
Avatar billede kresten Nybegynder
06. februar 2002 - 15:46 #4
Det virker ikke helt som jeg vil have men det kan være det er fordi min XML skulle have set sådan ud :

<?xml version="1.0" encoding="UTF-8"?>
<articles>
<article>
  <title><![CDATA[Min overskrift1]]></title>
  <text>
  <paragraph><![CDATA[Her er en masse tekst1]]></paragraph>
  <paragraph/>
  <paragraph><![CDATA[.. og mere tekst1]]></paragraph>
  </text>
</article>
<article>
  <title><![CDATA[Min overskrift2]]></title>
  <text>
  <paragraph><![CDATA[Her er en masse tekst2]]></paragraph>
  <paragraph/>
  <paragraph><![CDATA[.. og mere tekst2]]></paragraph>
  </text>
</article>
</articles>

Det output jeg gerne vil have er :

Min overskrift 1

Her er en masse tekst1
.. og mere tekst1

Men om ikke andet har din [0] givet nogle ideer, men jeg kan bare ikke så det til at virke! :(
Avatar billede Slettet bruger
06. februar 2002 - 16:26 #5
Hvordan kører du transformationen? Direkte i IE(5), eller kører du noget server-sjov.

Jeg har kørt en xml-fil som ovenstående, med mit stylesheet direkte i IE hvor jeg først havde [0], og derefter prøvede med [1], og det virkede efter hensigten...

/CS
Avatar billede kresten Nybegynder
06. februar 2002 - 16:37 #6
Yep, du har ret! Det er min fejl fordi jeg ikke kiggede ordenlig i XMLen har jeg som er en del større, der var (selvfølgelig) en fejl i genereringen af XMLen :)
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

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