warum kommt es doppelt vor?
ilja
- xsl
0 Götz0 Thomas Meinike
meine XML:
<Baugruppen>
<Baugruppe Typ="SM">
<X>0</X>
<Y>1</Y>
<X>2</X>
</Baugruppe>
<Baugruppe Typ="SB">
<X>0</X>
<Y>1</Y>
<X>2</X>
</Baugruppe>
</Baugruppen>
meine XSL:
<xsl:for-each select="Baugruppen/Baugruppe">
<input type="text" name="Typ" value="{@Typ}" readonly="readonly" style="text-align:center"/>
</xsl:for-each>
mein problem ist, dass er es doppelt anzeigt. also zwei inputs. eine mit SM die andere mit SB.
wie kann ich das problem umgehen?
danke,
ilja
Hallo ilja!
<xsl:for-each select="Baugruppen/Baugruppe">
<input type="text" name="Typ" value="{@Typ}" readonly="readonly" style="text-align:center"/>
</xsl:for-each>
mein problem ist, dass er es doppelt anzeigt. also zwei inputs. eine mit SM die andere mit SB.
wie kann ich das problem umgehen?
Das kommt drauf an, was Du vor hast.
Aber wenn Du nur 1 Element ausgeben willst, warum nimmst Du dann eigentlich for-each, oder verstehe ich Dein XSL nur nicht?
MfG
Götz
Hallo ilja!
<xsl:for-each select="Baugruppen/Baugruppe">
<input type="text" name="Typ" value="{@Typ}" readonly="readonly" style="text-align:center"/>
</xsl:for-each>mein problem ist, dass er es doppelt anzeigt. also zwei inputs. eine mit SM die andere mit SB.
wie kann ich das problem umgehen?Das kommt drauf an, was Du vor hast.
Aber wenn Du nur 1 Element ausgeben willst, warum nimmst Du dann eigentlich for-each, oder verstehe ich Dein XSL nur nicht?MfG
Götz
ja, es muss nur 1 Element ausgegeben werden.
warum nicht for-each? was sollte ich deiner meinung dann nehmen?
mfg,
ilja
Hallo ilja!
ja, es muss nur 1 Element ausgegeben werden.
warum nicht for-each? was sollte ich deiner meinung dann nehmen?
Weil for-each eine Schleifenanweisung ist, und deswegen eigentlich nur dann sinnvoll eingesetzt ist, wenn man auch irgendwas in einer Schleife durchlaufen will (Siehe auch SELFHTML / XML/DTDs / Darstellung von XML-Daten / XSLT-Elemente / xsl:for-each (für jedes Element aus einer Menge wiederholen)).
Du könntest ja das Element, das Du ausgeben willst einfach direkt ansprechen?!
MfG
Götz
Hallo,
Weil for-each eine Schleifenanweisung ist,
Da loopt aber nix! Es ist eine Mehrfachverarbeitungsanweisung.
MfG, Thomas
Hallo,
meine XSL:
<xsl:for-each select="Baugruppen/Baugruppe">
<input type="text" name="Typ" value="{@Typ}" readonly="readonly" style="text-align:center"/>
</xsl:for-each>mein problem ist, dass er es doppelt anzeigt. also zwei inputs. eine mit SM die andere mit SB.
xsl:for-each macht das, was man erwartet: Fuer jedes Vorkommen von Baugruppen/Baugruppe wird ein input-Element erzeugt.
wie kann ich das problem umgehen?
Wenn es nur das erste Vorkommen sein soll:
<input type="text" name="Typ" value="{Baugruppen/Baugruppe[1]/@Typ}" readonly="readonly" style="text-align:center"/>
oder innerhalb von xsl:for-each entsprechend pruefen auf den Attributwert oder die aktuelle Position bzgl. Baugruppe:
<xsl:if test="@Typ = 'SM'">
<input ... />
</xsl:if>
bzw.
<xsl:if test="position() = 1">
<input ... />
</xsl:if>
MfG, Thomas