Erweiterte PHP / XSLT Integration

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.

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.