Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML]XLS składnia
Forum PHP.pl > Forum > Przedszkole
NomexPL
Witam.
Proszę o pomoc w temacie prawidłowej składni lub brakującego w niej elementu, który pozwolił by mi zamienić wpis o określonym ciągu znaków na obrazek.
Dla przykładu jeżeli pojawia się wartość "zielony" w tabeli generowanej przez arkusz XLS nie pojawia się docelowo w html wpis "zielony" tylko obrazek zielony.gif

  1. <xsl:if test="kolory = 'zielony'"><img src="zielony.gif" /></xsl:if>


To działa ale w tabeli najpierw pojawia się napis "zielony" a obok niego dopiero obrazek "zielony.gif"

  1. </td>
  2. <td width="10%">zielony<img src="zielony.gif">
  3. </td>


Jak sprawić aby wartość "zielony" w wynikowym pliku html była przedstawiana tylko jako obrazek bez poprzedzającej go wartości tekstowej "zielony"
erix
A może pokaż kawałek parsowanego XML-a? winksmiley.jpg

PS. XSL, to nie to samo, co XLS.
NomexPL
Masz rację - literówka - chodziło mi o XSL

Moj XML
  1. <qstat>
  2. <server type="WICS" address="85.236.100.216:55000" status="UP">
  3. <hostname>85.236.100.216:55000</hostname>
  4. <name>
  5. <#C00>sKillers PL - </><#FF0>Official</><#0F0> Clan Server</>
  6. </name>
  7. <gametype/>
  8. <map>do_Vineyard</map>
  9. <numplayers>14</numplayers>
  10. <maxplayers>16</maxplayers>
  11. <numspectators>0</numspectators>
  12. <maxspectators>0</maxspectators>
  13. <ping>37</ping>
  14. <retries>0</retries>
  15. <rules>
  16. <rule name="_queryport">55001</rule>
  17. <rule name="hostport">55000</rule>
  18. <rule name="myAllowSpectatingFlag">no</rule>
  19. <rule name="myAllowFreeSpectatingFlag">no</rule>
  20. <rule name="myLockedSpectatorTeams[0]">no</rule>
  21. <rule name="myLockedSpectatorTeams[1]">no</rule>
  22. <rule name="myMatchModeFlag">no</rule>
  23. <rule name="myTeamsAreLockedFlag">no</rule>
  24. <rule name="myFPMModeFlag">no</rule>
  25. <rule name="myMaxGameLength">1200.000000</rule>
  26. <rule name="myCurrentGameLength">712.133240</rule>
  27. <rule name="myGameType">Domination</rule>
  28. </rules>
  29. <players>
  30. <player>
  31. <name>[S-R]XenonNinja</name>
  32. <score>945</score>
  33. <team>USSR</team>
  34. <bot>0</bot>
  35. <role>AIR</role>
  36. </player>
  37. </players>
  38. </server>
  39. </qstat>

(Skróciłem go nieco o powtarzające się elementy drzewa <player>)

to natomaiast plik XSL
  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="html"/>
  4.  
  5. <xsl:template match="/">
  6.    <html><head/>
  7.        <body>
  8.            <table width="100%" border="1" style="; width: 100%; height: 100%">
  9.                <tbody>
  10.                    <tr>
  11.                        <td width="10%">PING</td>
  12.                        <td colSpan="2" width="10%">
  13.                            <xsl:value-of select="qstat/server/ping"/>
  14.                        </td>
  15.                    </tr>
  16.                    <tr>
  17.                        <td width="10%">MAPA</td>
  18.                        <td colSpan="2" width="10%">
  19.                            <xsl:value-of select="qstat/server/map"/>
  20.                        </td>
  21.                    </tr>
  22.                    <tr>
  23.                        <td width="10%">GRACZE</td>
  24.                        <td colSpan="2" width="13%">
  25.                            <xsl:value-of select="qstat/server/numplayers"/>/
  26.                            <xsl:value-of select="qstat/server/maxplayers"/>
  27.                        </td>
  28.                    </tr>
  29.                    <tr style="font-weight: bold; font-family: verdana; background-color: #308a11; text-align: center">
  30.                        <td colSpan="3" width="10%">NICK</td>
  31.                        <td width="10%">TYP</td>
  32.                        <td width="10%">PUNKTY</td>
  33.                    </tr>
  34.                    <xsl:for-each select="qstat/server/players/player">
  35.                        <tr>
  36.                            <td colSpan="3" width="10%">
  37.                                <xsl:for-each select=".">
  38.                                    <xsl:value-of select="name"/>
  39.                                </xsl:for-each>
  40.                                <font style="background-color: #b9d3ee"/>
  41.                            </td>
  42.                            <td width="10%">
  43.  
  44.                                <xsl:for-each select=".">
  45.                                    <xsl:value-of select="role"/>
  46.                                </xsl:for-each><xsl:if test="role = 'AIR'"><img src="air.gif" alt=""/></xsl:if>
  47.  
  48.                            </td>
  49.                            <td width="10%">
  50.                                <xsl:for-each select=".">
  51.                                    <xsl:value-of select="score"/>
  52.                                </xsl:for-each>
  53.                            </td>
  54.                        </tr>
  55.                    </xsl:for-each>
  56.  
  57.  
  58.  
  59.                </tbody>
  60.            </table>
  61.        </body>
  62.    </html>
  63. </xsl:template>
  64.  
  65. </xsl:stylesheet>


Oczywiście chodzi o przypadek gdy chcę zamienić wartość <role>AIR</role> na obrazek w dowolnym formacie np. *.gif.
Finalnie w HTML jeżeli wystepuje wartość "AIR" pojawia się obrazek ale poprzedzony jest tekstem AIR.
erix
Kod
<xsl:for-each select=".">
        <xsl:value-of select="role"/>
</xsl:for-each><xsl:if test="role = 'AIR'"><img src="air.gif" alt=""/></xsl:if>

Przecież sam to każesz parserowi. winksmiley.jpg

Wartość jest zawsze wypisywana, a obrazek opcjonalnie. winksmiley.jpg
NomexPL
Dzięki erix
Tak to jest jak ktoś uczy się samemu metodą prób i błędów....
Dobrze że jest ta piaskownica.. i ludzie którzy są chętni pomagać..
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.