Hlavní navigace

PHP 4.3.0 a XSLT

6. 1. 2003
Doba čtení: 3 minuty

Sdílet

27. prosince byla uvolněna nová verze skriptovacího jazyka pro vývoj webových aplikací - PHP 4.3.0. Tento článek není recenzí nové verze, to přenechám povolanějším, zaměřuje se pouze na jeden z mnoha aspektů oblíbeného skriptovacího jazyka, a tím je možnost provádění transformací XSLT.

Právě z hlediska XSLT je nová verze PHP svým způsobem přelomová. Místo přehledu dostupných funkcí (od toho je referenční příručka) se zaměřím na vývoj XSLT v PHP.

Historie soužití PHP a XSLT je poměrně dlouhá a pestrá. Je pevně svázána s open source procesorem XSLT, pocházejícím z české kotliny, nazvaným Sablotron (Ginger Alliance). Původní domácí název procesoru začínal na Š, ale v globálním, anglofonním světě se háček brzy vytratil. Když byla v květnu 2000 zveřejněna první verze Sablotronu, setkala se s nemalým ohlasem. Konečně se objevil otevřený procesor XSLT (licencovaný pod MPL resp. GPL) napsaný v C++, tedy vhodný pro vkládaní do nejrůznějších skriptovacích jazyků. Uživatelům PHP tato skutečnost neunikla a už v červnu 2000 Steven Liu napsal první rozšíření pro PHP4, které umožňovalo z PHP skriptů volat služby Sablotronu.

Programátoři v PHP si postupně začali uvědomovat, že XML a XSLT umožňuje výhodné oddělení obsahu a formy, a rozšíření začalo nabývat na popularitě. Vývojový tým PHP projevil zájem o zahrnutí Stevenovy extenze do stromu zdrojového kódu PHP, ale vinou špatné komunikace se dohoda nepodařila. Namísto toho Sterling Hughes z týmu PHP napsal zbrusu nové rozšíření a umístil je mezi standardní extenze do adresáře php4/ext/sablot. První verzí PHP obsahující XSLT extenzi byla v říjnu 2000 verze 4.0.3. Mimochodem, v té době se jednalo také o úplném zahrnutí celého Sablotronu do PHP (podobně, jako je do PHP zahrnut databázový server mySQL), ke kterému nakonec z různých důvodů nedošlo.

Sterling Hughes má na svědomí ještě jeden zásadní redesign extenze. Po Sablotronu se brzy objevily další dva open source procesory v C/C++: Xalan C++ (Apache) a Libxslt (Gnome/ RedHat) a začalo se ozývat volání po otevření PHP také pro tyto procesory. V PHP 4.1.0 se tak objevila nová obecná extenze php4/ext/xslt s defaultním ovladačem pro Sablotron. Ironií je, že ovladače pro další procesory dodnes nikdo nevytvořil, ani se k tomu, pokud vím, nikdo nechystá. Pro úplnost je však třeba doplnit, že Libxslt se do PHP dostalo zadními vrátky přes extenzi pro DOM (php4/ext/domxml) napsanou pro knihovnu Libxml.

Stabilita, bohužel, dlouho nebyla silnou stránkou kombinace Apache – PHP – Sablotron. Když se konečně podařilo přimět vývojáře serveru Apache, aby z předvolené konfigurace vyřadili proprietární verzi parseru Expat, která byla příčinou pseudonáhodných konfliktů se standardní verzí téhož parseru linkovanou Sablotronem, začala váznout komunikace se Sterlingem. Extenze byla napsána nad zastaralým API Sablotronu a využívala pouze malou část dostupných funkcí. Situace vyvrcholila Sterlingovým značně asertivním odstoupením od údržby všech jeho rozšíření pro PHP v září letošního roku.

Všechno zlé je k něčemu dobré. Osiřelého kódu se ujala skupina programátorů v PHP v čele s Melvynem Sopacuou, soustředěná kolem mailing listu sab-php@gingerall.cz. Během několika málo měsíců noví údržbáři opravili staré chyby, přešli na nové API a začali přidávat chybějící funkce. Vývoj extenze je poprvé důsledně synchronizován s vývojem Sablotronu; některé změny v nejnovější verzi procesoru souvisejí právě s potřebami PHP. První plody práce nové skupiny se objevily v nejnovějším PHP verze 4.3.0. Extenze XSLT byla důkladně testována s aktuálním Sablotronem 0.97 a zdá se, že XSLT v PHP konečně dosáhlo úrovně stability potřebné pro spolehlivé ostré nasazení. Důkazem toho může být, že použití extenze XSLT a Sablotronu testuje při svém přechodu na PHP firma Yahoo (její vývojáři se aktivně podílejí na vývoji extenze).

Budoucnost PHP a XSLT je, jak bývá ve světě otevřeného sotwaru zvykem, otevřená. Nový vývojový tým plánuje pokrytí celého současného API Sablotronu, tedy zejména přidání funkcí DOM Level2 pro přístup k načteným dokumentům a rozhraní SXP umožňující XPath/XSLT nad externími dokumenty přístupnými přes zpětná volání. Uvidíme, jak rychle a zda vůbec se to podaří.

CS24 tip temata

Optimistická krátkodobá prognóza koexistence PHP a XML by mohla vypadat takto: Obě rozšíření ext/xslt a ext/domxml se vyvinou v generická rozhraní pro základní práci s XML (DOM, XPath, XSLT), jejichž funkčnost se bude do značné míry překrývat. Konkurence nemůže uškodit ani v případě open projektu. Krom toho každá z extenzí bude nabízet své další specifické funkce. Rozhraní, jako je SXP Sablotronu, mohou umožnit i jejich vzájemnou interoperabilitu. Prostředí významu PHP by si podobnou podporu XML zasloužilo.

Linky:
PHP 4.3.0
XSLT