XSLT/XPATH: prüfen ob XML Element existiert
Permafr0st
- xsl
hallo
ich habe Suchergebnisse als XML vorliegen, die je nach Suchergebnis Elemente aufweisen oder eben nicht. das will ich mit meinem XSL Stylesheet prüfen.
es gibt da die XPATH Funktion element-available()
, die prüft ob im XSL ein Element existiert. was ich brauche
wäre sowas für meine (dynamischen) XML Daten:
http://www.w3schools.com/Xsl/func_elementavailable.asp
mein bisheriger Konstrukt:
<xsl:choose>
<!-- das will ich abfangen -->
<xsl:when test="/ResultSet/Results/.../RESULTPAGE/RESULTSET/EMPTYRESULTSET">
= leere schleife =
</xsl:when>
<!-- das funkt bei Ergebnissen -->
<xsl:otherwise>
<xsl:for-each select="/ResultSet/Results/.../RESULTPAGE/RESULTSET/HIT">
<tr>
<td>
<a href="{FIELD[@NAME='url']}"><xsl:value-of select="FIELD[@NAME='personnames']"/></a>
</td>
</tr>
<xsl:for-each>
</xsl:otherwise>
</xsl:choose>
/HIT existiert wenn Ergebnisse sprich Hits da sind als <HIT>ergebnis1</HIT>
. Existieren keine, so habe ich das selbstschliessende Element <EMPTYRESULTSET />
wie kann ich das machen?
danke, Gruß
Hallo,
xsl:if bzw. xsl:when mit einem boolschen Ausdruck für test="...." sollte theoretisch bereits ausreichen. Zur Not hätte man noch die XPATH Funktion "count(...)".
Was tut denn mit dem bisherigen Konstrukt nicht?
Frank
Hallo,
xsl:if bzw. xsl:when mit einem boolschen Ausdruck für test="...." sollte theoretisch bereits ausreichen. Zur Not hätte man noch die XPATH Funktion "count(...)".Was tut denn mit dem bisherigen Konstrukt nicht?
Frank
mit count() funkt es dankesehr!
habe diese anleitung herangezogen:
http://www.zvon.org/xxl/XPathTutorial/Output/example7.html
zur Not? ich wüsste jetzt gern was jetzt die "ordentliche" elegante Lösung wäre. mit einem boolschen ausdruck für test="" ? in test="" hatte ich bisher den ganzen XPATH Pfad, absolut. mit dem bisherigen Construct gibt er mir nicht den HTML teil den er soll. jetzt tut er es:
<xsl:when test="//*[count(EMPTYRESULTSET)>=1]">
<tr>
<td>= leeres ergebnis =</td>
</tr>
</xsl:when>
Danke, Gruß