Announcement

Collapse
No announcement yet.

XSLT If Abfrage + Style

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSLT If Abfrage + Style

    Hallo Forum
    Ich habe ein Problem mit Abfragen in XSLT. ich hab in meiner xml-Datei Werte für eine Tabelle. in der 2.Spalte sind Werte gespeichert die die Formatierung representieren. "-1, 0, 1". Je nachdem welcher Wert vorhanden ist, soll die Zeile eine bestimmte CSS-Klasse annehmen.
    Wenn ich mit Position z.B.
    Code:
    <xsl:if test="(position() = 1)">
        <xsl:attribute name="class">table_head</xsl:attribute>
        </xsl:if>
    arbeite klappt das wunderbar er nimmt den style an. aber sobald ich auf meine Werte überprüfe klappt das nicht mehr.
    Wer kann mir helfen?
    hier der Code meiner XML-Datei:

    Code:
    <object label="Umsatz">
        <values>
          <column1>*</column1>
          <column2>0</column2>
          <column3>Total</column3>
          <column4>12345</column4>
          <column5>54321</column5>
          <column6 />
          <column7 />
          <column8>12342</column8>
          <column9>44443</column9>
          <column10 />
          <column11>6753</column11>
          <column12 />
          <column13>23</column13>
          <column14 />
        </values>
        <values>
          <column1>*</column1>
          <column2>-1</column2>
          <column3>Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Â*Δ PL</column3>
          <column4 />
          <column5>-20%</column5>
          <column6 />
          <column7 />
          <column8 />
          <column9>-15%</column9>
          <column10 />
          <column11 />
          <column12 />
          <column13>-9%</column13>
          <column14 />
        </values>
        <values>
          <column1>*</column1>
          <column2>1</column2>
          <column3>Â*Â*Â*Â*ADM Total</column3>
          <column4>378</column4>
          <column5>275</column5>
          <column6 />
          <column7 />
          <column8>97</column8>
          <column9>21</column9>
          <column10 />
          <column11>4</column11>
          <column12 />
          <column13>46</column13>
          <column14 />
        </values>
    </object>
    Hier der Code meiner XSLT-Datei:

    Code:
    <xsl:for-each select="report">
    	<xsl:for-each select="object">
    		<xsl:for-each select="values">
    			<tr>
    			<xsl:if test="report/object/values/column2/@value  = -1">
                            <xsl:attribute name="class">table_head</xsl:attribute>
                            </xsl:if>
    				<td class="">
    					<xsl:for-each select="column3">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    				</td>
    				<td class="">
    					<xsl:for-each select="column4">
    						<xsl:apply-templates/>
    				        </xsl:for-each>
    				</td>
    				<td class="">
    					<xsl:for-each select="column5">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    				</td>
    		                <td class="">
    					<xsl:for-each select="column6">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    				</td>
    			        <td class="">
    					<xsl:for-each select="column8">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    			        </td>
    			        <td class="">
    					<xsl:for-each select="column9">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    				</td>
    				<td class="">
    					<xsl:for-each select="column11">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    			        </td>
    				<td class="">
    					<xsl:for-each select="column13">
    						<xsl:apply-templates/>
    					</xsl:for-each>
    				</td>
    			</tr>
    		</xsl:for-each>
    	</xsl:for-each>
    </xsl:for-each>
    Bei der Anzeige werden nicht alle Spalten dargestellt, da in manchen noch andere interne Werte ausgegeben werden.
    MfG

    Nosalek
    Zuletzt editiert von noosis; 01.08.2007, 14:13.

  • #2
    Da gibt es wohl mehrere Probleme: Die XPath-Relation stimmt nicht beim test-Attribut. Die drei xsl:for-each-Blöcke weisen bereits auf die values-Ebene. Zudem gibt es kein Attribut value (wie @value suggeriert). Bei drei xsl:for-each-Schachtelungen wäre es auch sinnvoll, mal über den Einsatz von xsl:apply-templates nachzudenken. Damit werden Struktur und Logik überschaubarer.

    Comment

    Working...
    X