Przejdź do głównej zawartości

Posty

Wyświetlanie postów z maj, 2013

DeliveryServer - DynaMents - Pobranie ścieżki węzła/liścia

Ostatnio zmagałem się z problemem pobrania ścieżki węzła/liścia w języku DynaMents, który używany jest po stronie DeliveryServer'a. W XSLT można tego dokonać stosując: <xsl:value-of select= "name()" /> Po długich bojach, udało mi się to osiągnąć przy pomocy DynaMent'u attribute działającego w trybie read . W DynaMencie tym można podać atrybut value . W atrybucie tym można podać 3 różne wartości, są to: value - pobierana jest wartość węzła/liścia, path - pobierana jest ścieżka węzła/liścia, name - pobierana jest nazwa węzła/liścia.  Listing poniżej przedstawia kod, który wypisuje wszystkie ścieżki węzłów z globalnej zmiennej REQUEST wraz z wartościami znajdującymi się w węzłach. Linia 3 tego listingu odpowiada za wypisanie ścieżki węzła. 1. <rde-dm:attribute type= "children" mode= "for-each" alias= "reqAttr" source= "request" > 2. <rde-dm:attribute attribute= &quo

XSLT 1.0 - lowercase i uppercase

 XSLT 2.0 udostępnia dużo więcej wbudowanych funkcji niż wersja 1.0 tego standardu. Są to między innymi funkcje lower-case() i upper-case(): <xsl:variable name= "var" > ŚmIeSzNy NaPiS </xsl:variable> <xsl:value-of select= "upper-case($var)" /> Czasem jednak pojawia się konieczność poprawienia kodu, który napisany został w specyfikacji XSLT 1.0 i nie ma możliwości jej zmiany na nowszą. W takim wypadku część funkcji dostępnych w XSLT 2.0 trzeba będzie zaimplementować samemu. Niestety tutaj pojawia się kolejny problem - w starej XSLT nie ma możliwości tworzenia własnych funkcji. Całe szczęście możemy osiągnąć efekt jaki udostępniają lower-case() i upper-case() poprzez użycie funkcji translate() . Oto jak można to zrobić: <xsl:variable name= "lowerCase" > abcdefghijklmnopqrstuvwxyz </xsl:variable> <xsl:variable name= "upperCase" > ABCDEFGHIJKLMOPQERTUVWZYZ </xsl:variable> <