Avatar billede dj_alf Nybegynder
10. januar 2003 - 08:38 Der er 6 kommentarer og
1 løsning

Hvodden hullen gør man.

Hejsa..

Jeg er lidt vaklende i XML/XSL så jeg bliver nød til at spørge.

jeg har en XML jeg gerne vil have vist med en XSL template.
Al tekst formatering går fint men billeder kan jeg simpelthen ikke få til at virke.

hvodden går man? - Det skal da lige sige at jeg 'parser' XML-filen gennem en Linux/Tomcat/Cocoon installation.

(jeg smækker lige XML-filen og XSL fil med ind.)

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!-- generate HTML skeleton on root element -->
<xsl:template match="/">
  <html>
    <head>
      <title><xsl:apply-templates select="page/title"/></title>
    </head>
    <body>
        <xsl:apply-templates/>
    </body>
  </html>
</xsl:template>

<!-- story is used later by the Meerkat example -->
<xsl:template match="p|story">
    <p><xsl:apply-templates/></p>
</xsl:template>

<!-- convert sections to HTML headings -->
<xsl:template match="s1">
    <h1><xsl:apply-templates select="@title"/></h1>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="image">
  <xsl:apply-templates select='@href'/>                                         
</xsl:template>

</xsl:stylesheet>

også lige XML-filen.

<?xml version="1.0" encoding="iso-8859-1"?>
<page>
<title>This is the pageOne.xml example</title>
<s2 title="Section one">
    <p>This is the text of section one</p>
</s2>
<s2 title="Section two">
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
    <P>This is another text for section two</P>
</s2>
<imageset>
  <image href='http://128.9.205.249/edpic/P000020.jpg'></image>
</imageset>
</page>
Avatar billede arne_v Ekspert
10. januar 2003 - 08:43 #1
Proev lige med " i.s.f. ' i image tagget.

(dobbelt plinger i.s.f. enkelt plinger)
Avatar billede getalife Nybegynder
10. januar 2003 - 09:15 #2
Som du gør det nu, udskriver den jo bare værdien af Image.
Prøv følgende:
<xsl:template match="image">
  <img><xsl:attribute name="src"><xsl:apply-templates select='@href'/></xsl:attribute></img>
</xsl:template>
Avatar billede dj_alf Nybegynder
10. januar 2003 - 09:18 #3
Arh...

Kan jeg bruge samme template hvis jeg vil have billedet med i en pdf istedet?
Avatar billede janegil Nybegynder
10. januar 2003 - 09:25 #4
Du har
<xsl:apply-templates select='@href'/>
men ingen template som matcher '@' eller '@href' eller lignende, tror jeg?

Nå er det en built-in rule for templates,
http://www.w3.org/TR/xslt#built-in-rule
som sier at
<xsl:template match="text()|@*">
  <xsl:value-of select="."/>
</xsl:template>
men i så fall ender du nok med bare selve URL'en, uten å få den plassert i noe IMG-element?

<xsl:template match="image">
  <img alt="">

<xsl:apply-templates select='@href'/>
</xsl:template>
Avatar billede janegil Nybegynder
10. januar 2003 - 09:28 #5
[browseren gikk amok for meg...]

<xsl:template match="image">
  <img alt="">
    <xsl:attribute><xsl:value-of select="@href"/></xsl:attribute>
  </img>
</xsl:template>
       

<xsl:apply-templates select='@href'/>
</xsl:template>
Avatar billede janegil Nybegynder
10. januar 2003 - 09:29 #6
oops, getalife var først, og min kode er feil...
Avatar billede dj_alf Nybegynder
10. januar 2003 - 09:52 #7
Jeg fandt selv ud af det.. :)

    <xsl:template match="image">                                  <fo:block>                                                                          <xsl:variable name="http" select="@href"/>                   
      <fo:external-graphic src="url:{$http}" content-width="200%" content-height="200%"/>
    </fo:block>
    </xsl:template>
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