herausfiltern der attribute
ulli
- xsl
0 norbert =:-)0 ulli0 norbert =:-)0 ulli0 norbert =:-)0 ulli
0 Martin Speiser
0 Thomas J.S.
hi ho
... mein xml-document(mit delphi erstellt, deshalb leider fast nur attribute) hat verkürzt folgende struktur:
<ROWDATA>
<ROW id="1" key_mainmenu="8" pfad="" introtext="blalba" key_land="0" />
<ROW id="2" key_mainmenu="2" pfad="" introtext="test" key_land="0" />
...
</ROWDATA>
... ich verwende php 4+ und sablotron ...
meine frage ist nun, wie bekomme ich aus dem xml-dokument den inhalt von introtext heraus, aufgrund einer zuvorerfolgten abfrage von key_mainmenu? ... also etwa: wenn key_mainmenu=8 dann gib introtext aus
meine ansätze waren/sind: (der parameter mainid wird richtig übergeben ... das ist sicher :) )
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="mainid"/>
<xsl:template match="ROWDATA">
<xsl:if test="ROW[attribute::key_mainmenu=$mainid]">
<xsl:value-of select="ROW/@introtext" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
... bis dann
Hallo ulli!
Hoffe, das passt so:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:if test="@key_mainmenu='$mainid'">
<xsl:value-of select="@introtext" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
mfg
norbert =:-)
hi norbert
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:if test="@key_mainmenu='$mainid'">
<xsl:value-of select="@introtext" />
</xsl:if>
</xsl:template></xsl:stylesheet>
leider tut sich nichts ...
ulli
Hallo ulli!
1.) Sorry - hab mich verschaut und ROW übersehen:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:if test="ROW/@key_mainmenu='$mainid'">
<xsl:value-of select="ROW/@introtext" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
2.) Du hast erwähnt, dass die Parameterübergabe von mainid funktioniert - teste das Ganze mal mit
<xsl:if test="ROW/@key_mainmenu='8'">
mfg
norbert =:-)
Hallo ulli!
jo hi
1.) Sorry - hab mich verschaut und ROW übersehen:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:if test="ROW/@key_mainmenu='$mainid'">
ich denke, dass sollte <xsl:if test="ROW/@key_mainmenu=$mainid"> heißen ... ohne ' um $mainid oder?
<xsl:value-of select="ROW/@introtext" />
</xsl:if>
</xsl:template></xsl:stylesheet>
... geht zwar ... aber genauso wie mein versuch, es wird immer nur der erste eintrag von introtext ausgegeben
2.) Du hast erwähnt, dass die Parameterübergabe von mainid funktioniert - teste das Ganze mal mit
<xsl:if test="ROW/@key_mainmenu='8'">
... ja hab ich geht für 8
... das die übergabe von $mainid funzt hab ich mit
<xsl:value-of select="$mainid" />
nach <xsl:value-of select="ROW/@introtext" /> ausprobiert ... da steht dann als letztes zeichen immer der jeweils richtige wert von mainid
... ich glaub xsl mag mich nicht ^^ *g*
ulli
Hallo ulli!
Ei ei - jetzt hab ich mich aber blamiert.
Natürlich bekommst Du nur eine Ausgabe - es gibt ja auch nur eine ROWDATA. Entweder Du machst ein eigenes Template für ROW (wird dann also für jeden ROW-Eintrag durchlaufen) oder du machst eine for-each Schleife innerhalb des ROWDATA-Templates (also bewusstes Abfragen aller ROW)!
mfg
norbert =:-)
danke euch beiden ... jetzt funzt es ... werde dann wahrscheinlich später noch mal auf euer wissen zurückkommen :)
cu ulli
Hi ihr zwei,
warum nicht einfach:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:value-of select="ROW[@key_mainmenu='$mainid']/@introtext" />
</xsl:template>
</xsl:stylesheet>
Die Parameterübergabe muss natürlich richtig sein.
Gruß,
Martin
Hallo,
<xsl:template match="ROWDATA">
<xsl:param name="mainid"/>
<xsl:if test="@key_mainmenu='$mainid'">
<xsl:value-of select="@introtext" />
</xsl:if>
</xsl:template></xsl:stylesheet>
Verwirrt ihn nicht!
Dass er einen globalen Parameter verwendet ist besser, so kann er diesen nicht nur in dem einen Template benützen.
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="mainid"/>
<xsl:template match="ROWDATA">
<xsl:value-of select="ROW[@key_mainmenu = $mainid]/@introtext" />
</xsl:template>
</xsl:stylesheet>
Was er nicht gesagt hat, ob/dass er alle Intortexte braucht und wie er diese dargestellt bekommen will.
also könnte er auch sowas machen:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="mainid"/>
<xsl:template match="ROWDATA">
<xsl:if test="ROW[@key_mainmenu = $mainid]">
<xsl:call-template name="introtext" />
</xsl:if>
</xsl:template>
<xsl:template name="introtext" match="@introtext">
<p><xsl:value-of select="." /></p>
</xsl:template>
</xsl:stylesheet>
Grüße
Thomas