23. Nov 2012
Die Integrationsmöglichkeiten von PHP in XSLT wurden erweitert. Nun können auch Node-Sets über PHP generiert werden.
Die Integrationsmöglichkeiten von PHP in XSLT wurden erweitert. Nun können auch Node-Sets über PHP generiert werden.
Bisher konnten nur Strings in XSLT genutzt werden. Wollte man in XSLT Schleifen über PHP-Funktionen machen, war dazu ein wsl:php Bereich notwendig. Dies lässt sich jetzt auch direkt über eine xsl:for-each Schleife lösen. In manchen Fällen spart man so zusätzlichen Quelltext.
<xsl:if test="$groupsConfirmations != ''"> <ul> <xsl:for-each select="php:function('wXSLT::phpFunctionArrayToNodeset', 'wUsers::getUsers', string($groupsConfirmations))/*"> <li> <xsl:variable name="user" select="." /> <xsl:choose> <xsl:when test="document(concat($wDocumentRoot, $pathComments))/wComments/comment[@user = $user]"> <strong><xsl:value-of select="$user" /></strong> </xsl:when> <xsl:otherwise> <xsl:value-of select="$user" /> </xsl:otherwise> </xsl:choose> </li> </xsl:for-each> </ul> </xsl:if>
Das Beispiel zeigt eine vollständige Integration der PHP-Funktion wUsers::getUsers in ein XSLT-Schleife. Nachdem die Funktion die XSLT-Variable $groupsConfirmations zum Filtern der Gruppen übergeben bekommt, liefert sie ein Node-Set, für die XSLT-Schleife. Auf die Werte - in dem Fall die Benutzer der Gruppe - kann über den xPath-Punkt zugegriffen werden.