Erweiterte PHP / XSLT Integration

23.11.2012

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.

XSLT-Schleife über die PHP-Funktion wUsers::getUsers

<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.