Ewaluacja ścieżek w XPath

GeSHi library error: sites/all/modules/geshifilter/geshi is not a directory.

W serwisie http://9fingers.pl/ padło ciekawe pytanie dotyczące wyjęcia ścieżki elementu z atrybutu w dokumencie i użycia jej jako wskazania miejsca z którego mają być pobrane dane dla wyjście. Zawiłe? Pokażmy to na przykładzie. Poniżej kod dokumentu przetwarzanego:[geshifilter-code language="XML"]<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <page> <pre>fragment kodu </pre> <file name="index.xml" sec="/page/pre"/> </page> [/geshifilter-code]Poniżej kod arkusza wzorca translacji, jaki chciało by się zastosować:[geshifilter-code language="XSLT"]<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/*"> <xsl:variable name="vwhat" select="/page/file/@sec/." /> <xsl:copy-of select="$vwhat" /> </xsl:template> </xsl:stylesheet>[/geshifilter-code]ale to nie działa! Domyślnie XSLT 1.0 nie ewaluuje ścieżki zawartej w zmiennej [geshifilter-code]$vwhat[/geshifilter-code] jako selektora, tylko jako tekst do wyświetlenia. Na swój sposób jest to logiczne i spójne z ideą działania zmiennych. Ale intuicja każe to właśnie w ten sposób zrobić.
Dłubiąc w poszukiwaniu rozwiązania po internecie, wpadłem na Pytanie na bytes.com na pytanie dotyczące, czegoś bardzo podobnego. Skierowało mnie ono do strony Rozszerzenia XSLT z rozszerzeniami do XSLT, gdzie istnieje moduł dynamic - jego rolą jest dynamiczna ewaluacja napisów zawierających ścieżki XPath.
W przykładzie będzie to wyglądać następująco:[geshifilter-code language="XSLT"]<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn"> <xsl:template match="/*"> <xsl:variable name="vwhat" select="/page/file/@sec/." /> <xsl:copy-of select="dyn:evaluate($vwhat)" /> </xsl:template> </xsl:stylesheet>[/geshifilter-code]Taki przykład, działa już zgodnie z oczekiwaniami.

Wadą rozwiązania, jest ograniczona ilość procesorów XSLT, która wpiera te rozszerzenia. Jakieś zmiany w tej materii miały miejsce w XSLT 2.0, ale szczegóły nie są jeszcze dla mnie jasne.