Avatar billede no-stress Nybegynder
29. november 2004 - 00:06 Der er 2 kommentarer

xsl:choose / xpath boolean

Hej

Jeg har nogle problemer med at få min choose sætning til at virke
når jeg tester på henholdvis 0 og 1 i approved i mit XML dokument, så viser den ikke noget output

den interessante del af koden er her. hele koden er i bunden

<xsl:for-each select="ROWSET/ROW">
<xsl:chose>
<xsl:when test="number /page/appointments/ROWSET/ROW/accept='0'">
<xsl:apply-templates select="/page/appointments/ROWSET/ROW"     
                              mode="unapproved"/>
</xsl:when>
<xsl:when test="number /page/appointments/ROWSET/ROW/accept='1'">
xsl:apply-templates select="page/appointments/ROWSET/ROW" mode="approved"/>                    </xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="noappoint"/>
</xsl:otherwise>
</xsl:chose>
</xsl:for-each>
        <td>Table Finished </td></table>
        </body>
    </html>
</xsl:template>


Takker og med venlige hilsner
Thomas


Her kommer hele koden

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

<xsl:template match="page">
    <html>
        <head>
            <title>View Appointments</title>
        </head>
        <body>
        <h1>You have the following appointments</h1>
        <table border="0" cellpadding="10">
            <th>Start</th><th>Finish</th><th>Subject</th>
            <xsl:for-each select="ROWSET/ROW">
                <xsl:chose>
                    <xsl:when test="number /page/appointments/ROWSET/ROW/accept='0'">
                        <xsl:apply-templates select="/page/appointments/ROWSET/ROW" mode="unapproved"/>
                    </xsl:when>
                    <xsl:when test="number /page/appointments/ROWSET/ROW/accept ='1'">
                        <xsl:apply-templates select="page/appointments/ROWSET/ROW" mode="approved"/>                    </xsl:when>
                    <xsl:when test="number /page/appointments/ROWSET/ROW/accept ='2'">
                        <xsl:apply-templates select="page/appointments/ROWSET/ROW" mode="declined"/>
                    </xsl:when>
                    <xsl:when test="number /page/appointments/ROWSET/ROW/accept ='3'">
                        <xsl:apply-templates select="page/appointments/ROWSET/ROW" mode="deleted"/>       
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="noappoint"/>
                    </xsl:otherwise>
                </xsl:chose>
            </xsl:for-each>
        <td>Table Finished </td></table>
        </body>
    </html>
</xsl:template>

<xsl:template match="accepted">
    <xsl:value-of select="/page/appointments/ROWSET/ROW/accept"/>
</xsl:template>

<xsl:template match="noappoint">
    <tr bgcolor="yellow">
        <td>You currently have no appointments</td>
    </tr>
</xsl:template>

<xsl:template match="/page/appointments/ROWSET/ROW" mode="unapproved">
    <tr bgcolor="yellow">
        <td><xsl:apply-templates select="datetimestart"/></td>
        <td><xsl:apply-templates select="datetimefinish"/></td>
        <td><xsl:apply-templates select="subject"/></td>
    </tr>
</xsl:template>
<xsl:template match="/page/appointments/ROWSET/ROW" mode="approved">
    <tr bgcolor="blue">
        <td><xsl:apply-templates select="datetimestart"/></td>
        <td><xsl:apply-templates select="datetimefinish"/></td>
        <td><xsl:apply-templates select="subject"/></td>
    </tr>
</xsl:template>
<xsl:template match="/page/appointments/ROWSET/ROW" mode="declined">
    <tr bgcolor="red">
        <td><xsl:apply-templates select="datetimestart"/></td>
        <td><xsl:apply-templates select="datetimefinish"/></td>
        <td><xsl:apply-templates select="subject"/></td>
    </tr>
</xsl:template>
<xsl:template match="/page/appointments/ROWSET/ROW" mode="deleted">
    <tr bgcolor="grey">
        <td><xsl:apply-templates select="datetimestart"/></td>
        <td><xsl:apply-templates select="datetimefinish"/></td>
        <td><xsl:apply-templates select="subject"/></td>
    </tr>
</xsl:template>

</xsl:stylesheet>
Avatar billede atoft Nybegynder
29. november 2004 - 09:36 #1
Jeg vil prøve at at omskrive til din test til

<xsl:when test="number(/page/appointments/ROWSET/ROW/accept)='0'" />

Hvis det ikke virker, er det sikkert din referencer som er galt, men det kan jeg ikke se unden at kigge i dit xml document.

I øvrigt vil kan du lave dine xml:template match om til match="ROW", men igen afhænger det lidt at dit xml document.
Avatar billede atoft Nybegynder
29. november 2004 - 09:37 #2
ups det skal selvfølgelige være

<xsl:when test="number(/page/appointments/ROWSET/ROW/accept)=0" />

altså uden '-er om 0
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