<fo:block> in Verbindung mit <xsl:for-each> (Anfänger)
Jan Huss
- xsl
Hallo,
um in XSL:fo einen bestimmten Wert auszugeben nutze ich zum Beispiel
fo:block
<xsl:value-of select="//person/name"/>
</fo:block>
. Möchte ich jedoch dies tun:
<xsl:for-each select="//person/phone">
xsl:choose
<xsl:when test="@key='cellular'">fo:block
Handy: <xsl:value-of select="//person/phone"/>
</fo:block></xsl:when>
<xsl:when test="@key='buero'">fo:block
Dienstlich: <xsl:value-of select="//person/phone"/>
</fo:block></xsl:when>
</xsl:choose>
</xsl:for-each>
so gibt er mir zwar ordentlich Handy bzw. Dienstlich aus, den Wert bekomme ich jedoch nicht ausgegeben.
Was mache ich falsch?
Danke für die Hilfe.
Gruß Jan
Pff,
hab meinen Rechner neu starten müssen; jetzt geht es...
Gruß Jan
Hallo,
um in XSL:fo einen bestimmten Wert auszugeben nutze ich zum Beispiel
» . Möchte ich jedoch dies tun:
<xsl:for-each select="//person/phone">
xsl:choose
<xsl:when test="@key='cellular'">fo:block
Handy: <xsl:value-of select="//person/phone"/>
</fo:block></xsl:when>
<xsl:when test="@key='buero'">fo:block
Dienstlich: <xsl:value-of select="//person/phone"/>
</fo:block></xsl:when>
</xsl:choose>
</xsl:for-each>
nur als anmerkung: dies ist genau der fall wo man nicht mit for-each arbeiten sollte:
also ich gehe hier davon aus, dass es bei dir <person> in unterschiedlichen elternelementen vorkommt. sonst wäre //person eine reine performanceverschwendung.
damit:
<xsl:for-each select="//person/phone">
xsl:choose
<xsl:when test="@key='cellular'">fo:block
Handy: <xsl:value-of select="//person/phone"/> <--also hiermit
</fo:block></xsl:when>
gibst du für jede einzele person die handy nummer von *allen* personen aus.
besser wäre:
<xsl:template match="phone">
xsl:choose
<xsl:when test="@key='cellular'">fo:block
Handy: <xsl:value-of select="."/>
</fo:block></xsl:when>
<xsl:when test="@key='buero'">fo:block
Dienstlich: <xsl:value-of select="."/>
</fo:block></xsl:when>
</xsl:choose>
</xsl:template>
------
oder wenn du schon alles per for-each abfragst (und <person> immer das selbe elternelement hat), dann solltes du innerhalb vom elternelement von <person> sein und so machen:
<xsl:for-each select="person/phone">
xsl:choose
<xsl:when test="@key='cellular'">fo:block
Handy: <xsl:value-of select="."/>
</fo:block></xsl:when>
<xsl:when test="@key='buero'">fo:block
Dienstlich: <xsl:value-of select="."/>
</fo:block></xsl:when>
</xsl:choose>
</xsl:for-each>
wie gesagt, als anmerkung.
grüße
thomas