XSL - Abfrage, ob Attribut vorhanden ist
Lukas
- xsl
0 sascha baumann0 Mia
Hallo,
schonmal vorweg, ich habe FAST keine Ahnung von XSL. Ich lese eine XML-Datei aus, nun sind nicht immer alle Attribute in der XML enthalten (meine nicht die Werte). Kann sein, dass ich die XML mal mit paar weniger oder paar mehr Attributen haben. In der XSL stehen aber alle drin. Wie kann ich eine Abfrage machen, dass wenn ein Attribut nicht vorhanden ist, der auch nicht angezeigt wird. Bsp:
<xsl:if 'dieser Attribut vorhanden'> oder <xsl:if test="@Attribut!=''">
ANZEIGEN
</xsl:if>
Natürlich ist der 'Kot' oben falsch.
Danke schonmal!!!
Lukas
Hi,
sollte so aussehen:
<xsl:if test="@attr1 | @attr2">
LALA
</xsl:if>
Bedenke, das Du für dieses Beispiel auf dem Knoten stehen musst. (Ein umschließendes XSL-Statement hat den Knoten mit Select ausgewählt) Ansonsten mußt Du den kompletten XPath zu den Attributen angeben.
Cheers
Sascha
Danke für die Antwort, das habe ich aber schon leider ausprobiert:
<xsl:if test="@Dateiname">
<td><h3>Dateiname</h3></td>
</xsl:if>
<xsl:if test="@Titel">
<td><h3>Titel</h3></td>
</xsl:if>
.
.
.
Dateiname ist nicht vorhanden und wird auch nicht angezeigt, Titel ist aber vorhanden, zwar ohne Wert, aber das spielt kein Rolle, und wird ebenfalls nicht angezeigt. Die Attribute die existieren (wie Titel) sollen angezeigt werden, auch wenn das Feld am Ende leer ist.
Trotzdem Danke
Hi,
sollte so aussehen:<xsl:if test="@attr1 | @attr2">
LALA
</xsl:if>Bedenke, das Du für dieses Beispiel auf dem Knoten stehen musst. (Ein umschließendes XSL-Statement hat den Knoten mit Select ausgewählt) Ansonsten mußt Du den kompletten XPath zu den Attributen angeben.
Cheers
Sascha
Hi
versuch mal folgendes
<xsl:if test="@Titel | @Titel==''">
<td><h3>Titel</h3></td>
</xsl:if>
Bin mir gerade nicht sicher ob = oder == ... probiers mal aus.
Cheers
Sascha
Danke für die Antwort, das habe ich aber schon leider ausprobiert:
<xsl:if test="@Dateiname">
<td><h3>Dateiname</h3></td>
</xsl:if><xsl:if test="@Titel">
<td><h3>Titel</h3></td>
</xsl:if>
Danke für die Antwort!!!
Hab ich auch schon gemacht:
<xsl:if test="@Dateiname | @Dateiname=''">
<td>
<h3>Dateiname</h3>
</td>
</xsl:if>
<xsl:if test="@Titel | @Titel=''">
<td>
<h3>Titel</h3>
</td>
</xsl:if>
Titel und Dateiname werden dann garnicht angezeigt, habe es auch mit != ausprobiert, mit <xsl:if test="@Dateiname!=''"> usw.
Ich weiß nicht mehr weiter. Wenn nötig, dann bin ich auch bereit die xsl und xml per email zu zuschicken.
Hi
versuch mal folgendes<xsl:if test="@Titel | @Titel==''">
<td><h3>Titel</h3></td>
</xsl:if>Bin mir gerade nicht sicher ob = oder == ... probiers mal aus.
Cheers
Sascha
Hi,
<xsl:if test="@Dateiname | @Dateiname=''">
Der logische Operator für Oder ist in XPath
or
, nicht
|
cu,
Andreas
Danke, aber es klappt immernoch nicht. :-(
Gruß
Lukas
Hallo,
Danke, aber es klappt immernoch nicht. :-(
Was klappt nicht?
Gebe bitte auch das rundherum deines XSLs bekannt, wenn es mit
<xsl:if test="@Dateiname and @Dateiname != ''">
<td>
<h3>Dateiname</h3>
</td>
</xsl:if>
<xsl:if test="@Titel and @Titel != ''">
<td>
<h3>Titel</h3>
</td>
</xsl:if>
Es ist aus deiner Beschreibung auch nicht ganz klar, was nun passieren soll.
Wenn das Attribut nicht vorhanden ist soll nichst (d.h. keine Tabellenzelle?) erzeugt/angezegigt werden.
Wenn das Attribut vorhanden aber leer ist?
Grüße
Thomas
Hallo Lukas,
hast du es schon mal mit der Abfrage "nicht vorhanden" im choose versucht? Im Prinzip so (vorsicht, ich konnte nicht testen):
xsl:choose
<xsl:when test='!@title'>
</xsl:when>
xsl:otherwise
Anzeigen
</xsl:otherwise>
</xsl:choose>
Gruß Mia