Mam bardzo ciekawy problem. Otoz mam zarejestrowana funkce php ktore wywoluje z xsl. Zwraca mi ona DOMDocument.
Wg dokumentacji php mozna zwrocic do XSL DOMDocument, jest to oczywiscie prawda, ale nie wiedziec czemu for-each na takim zbiorze wezlow
dziala jakby wogle ich nie bylo. Natomiast wypisanie wartosci za pomoca value-of zwraca string z wartosciami ktore trzymalem w przekazywanym DOMDocumencie.
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:x="http://www.w3.org/1999/xhtml" xmlns="http://xml.wikidot.org/wikiml" xmlns:php="http://php.net/xsl"> <xsl:template match="x:div"> <block> <xsl:if test="boolean(string(@style))"> <xsl:for-each select="php:function('wikidot_style_parser', string(@style))/attr"> <!-- tu jak widac przekazuje funkce ktora zwraca mi node-set .--> <xsl:value-of select="key" /> </xsl:for-each> </xsl:if> <xsl:apply-templates /> </block> </xsl:template> </xsl:stylesheet>
A to funkcja ktora przekazuje.
<?php function style_parser($cssString) { $parser = StyleStringParser(); $attributes = $parser->parse($cssString); $xml = '<css>' ; foreach ($attributes as $key => $value) { $xml.= '<attr><key>'.$key.'</key><value>'.$value.'</value></attr>'; } $xml.='</css>'; $doc = new DOMDocument('1.0', 'UTF-8'); $doc->loadXML($xml); return $doc; } ?>
Czy ktos ma pomysl jak ten problem rozwiazac ? :-)
Pozdrawiam.