XSL When Otherwise

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • InterCC
  • Registratie: April 2000
  • Laatst online: 03-06 16:09
Hallo!

Als XSL amateur probeer ik in een bestaande code een wijziging aan te brengen. Een aangeleverde XML moet omgezet worden naar XSL. Dat gaat allemaal prima en de code wordt goed omgezet en daar kan ik verder mee werken.
Mijn probleem is dat in de XML het bouwjaar 9999 voorkomt, wat 'nieuw' moet inhouden. Dit dacht ik even snel op te lossen met een When/Otherwise, alleen krijg ik het maar niet voor elkaar. Ik heb daarom een aantal basic vragen, maar eerst de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
.....
<xsl:value-of select="@id"/>|
<xsl:value-of select="Bouwjaar"/>|
<xsl:value-of select="Merk"/>|
<xsl:value-of select="Opbouw"/>|
<xsl:value-of select="Soort"/>|
<xsl:value-of select="Type"/>|
<xsl:value-of select="Url"/>|
<xsl:value-of select="Prijzen/EUR"/>|
<xsl:value-of select="Prijzen/USD"/>|
<xsl:value-of select="Soort"/>|
....


De hele XSL plakken lijkt mij overbodig. Bovenstaande code werkt goed en ik lees hier uit de XML een aantal waarden.
Zoals gezegd wil ik de output van Bouwjaar vervangen voor "Nieuw" als het bouwjaar "9999" is, anders moet gewoon de normale output (het bouwjaar) weergegeven worden.
Ik dacht dit op te lossen met onderstaande code:
code:
1
2
3
4
5
6
7
<xsl:choose>
<xsl:when test="Bouwjaar";9999><xsl:value-of select="Nieuw"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Bouwjaar"/>
</xsl:otherwise>
</xsl:choose>


Als ik deze code onder de eerste code plaats, dan werkt het niet. Wanneer ik het direct achter xsl:value-of select="Bouwjaar"/> en voor de | plaats werkt het niet. Wat ik fout doe zie ik niet. Is er iemand die mij kan wijzen op mijn fouten?

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien ook even je XML posten?

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je test statement is niet goed: <xsl:when test="Bouwjaar = 9999">

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • InterCC
  • Registratie: April 2000
  • Laatst online: 03-06 16:09
De XML is als volgt opgebouwd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<Voertuig id="12345">
<Bouwjaar>9999</Bouwjaar>
<Merk>Volkswagen</Merk>
<Opbouw>4-deurs</Opbouw>
<Soort>Golf</Soort>
<Type>Airco, 150pk</Type>
<Url>http://xxxxx?id=12345</Url>
&#8722;
<Prijzen>
<EUR>24000</EUR>
<USD>33000</USD>
</Prijzen>
</Voertuig>


Ik heb de opmerking van P_de_B doorgevoerd. Er wordt nu wel een output gegeven. De code is nu als volgt:
code:
1
2
3
4
<xsl:choose>
<xsl:when test="Bouwjaar=9999">
<xsl:value-of select="Nieuw"/>
</xsl:when></xsl:choose>

De otherwise heb ik uit de code gehaald, want die zorgde ervoor dat het bouwjaar in andere gevallen dubbel wordt weergegeven.
Ondanks deze wijzigingen werkt de code nog niet. Nog steeds staat er 9999 in de output, in plaats van Nieuw.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Er missen nog enkele quotes rond 9999 en NIeuw
XML:
1
2
3
4
5
<xsl:choose>
          <xsl:when test="Bouwjaar='9999'">
            <xsl:value-of select="'Nieuw'"/>
          </xsl:when>
        </xsl:choose>

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 22:11
Waarom doe je uberhaupt
code:
1
<xsl:value-of select="'Nieuw'"/>

als je ook gewoon die regel kan veranderen door
code:
1
2
3
<xsl:text>nieuw</xsl:text>
of simpelweg:
nieuw


oh en ipv een when zonder otherwise kan je ook xsl:if gebruiken.

[ Voor 15% gewijzigd door Caelorum op 21-01-2011 10:33 ]


Acties:
  • 0 Henk 'm!

  • InterCC
  • Registratie: April 2000
  • Laatst online: 03-06 16:09
Het is gelukt, tnx!

Met bovenstaande suggesties werd de tekst Nieuw achter de 9999 geplaatst. Ik heb daarom de code omgedraaid en de otherwise weer ingevoegd. De uiteindelijke werkende code is:

code:
1
2
3
4
5
6
7
8
<xsl:choose>
<xsl:when test="Bouwjaar='9999'">
<xsl:text>Nieuw</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Bouwjaar"/>
</xsl:otherwise>
</xsl:choose>
Pagina: 1