Jak w XSLT usunąć puste węzły XML’a?

Problem: Mamy XML: <root> <category>Biznes</category> <category> </category> <category></category> <category>Hobby</category> </root> Poprzez transformacje XSLT, chcemy usunąć puste węzły kategorii. Rozwiązanie: <xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”> <xsl:template match=”/”> <root> <xsl:for-each select=”category”> <xsl:if test=”normalize-space(.)=””> <category> <![CDATA[<xsl:value-of disable-output-escaping=”yes” select=”normalize-space(.)” />]]> </category> </xsl:if> </xsl:for-each> </root> </xsl:template> </xsl:stylesheet> Wyjaśnienie: Instrukcja match=”/” wybiera wszystkie węzły XML’a Instrukcja for-each iteruje po wszystkich węzłach o nazwie … Czytaj dalej „Jak w XSLT usunąć puste węzły XML’a?”

Wzorzec projektowy Decorator – elastyczne dodawanie funkcjonalności

Wzorzec dekoratora jest przydatny w wielu sytuacjach, w których chcemy elastycznie dodawać funkcjonalność do istniejących obiektów. Oto kilka przykładów problemów, do których można użyć wzorca dekoratora: Dopasowywanie funkcjonalności na etapie uruchamiania: Możemy użyć dekoratora, aby dodać lub zmienić zachowanie obiektu w zależności od określonych warunków, takich jak konfiguracja aplikacji czy uprawnienia użytkownika. Logowanie i analiza: … Czytaj dalej „Wzorzec projektowy Decorator – elastyczne dodawanie funkcjonalności”

Wzorzec projektowy Strategy. Elastyczność i niezależność w twoim kodzie.

Wzorzec projektowy Strategy przydaje się do definiowania rodziny zachowań, algorytmów lub strategii, które mogą być wymieniane przez aplikację. Umożliwia to programowanie do interfejsu, a nie konkretnej implementacji. Do konkretnych zastosowań wzorca Strategy należą: Abstrakcja algorytmów: Strategy pozwala na oddzielenie logiki algorytmu od klienta, co pozwala na łatwą zmianę implementacji algorytmu bez konieczności modyfikacji kodu klienta. … Czytaj dalej „Wzorzec projektowy Strategy. Elastyczność i niezależność w twoim kodzie.”

FirePHP – przyjazne debug’owanie aplikacji internetowych

Debugowanie to poważny problem programistów Bez względu na to jakimi dobrymi programistami jesteśmy nigdy nie ustrzeżemy się błędów. To normalne, błędy popełnia każdy, różnica pomiędzy dobrym programistą a złym polega m. in. na szybkości wykrycia błędnego kodu i naprawienia go. Mówiąc o błędnym kodzie nie mam na myśli jedynie błędów syntaktycznych, ale również błędów logicznych, … Czytaj dalej „FirePHP – przyjazne debug’owanie aplikacji internetowych”

Przyjemna komunikacja php – flash czyli AMFPHP

Z pewnością każdy programista php, który w swoim projekcie musiał komunikować się z flash’em na własnej skórze doświadczył, że nie jest to zadanie ani przyjemne ani przyjazne w implementacji. Aby przekazać dane flash’owi, skrypty muszą generować XML’e, które następnie zasysa flash i przetwarza Action Script’em. Bolączek tego rozwiązania jest wiele, poczynając od dodatkowego czasu potrzebnego … Czytaj dalej „Przyjemna komunikacja php – flash czyli AMFPHP”