Hlavní navigace

PHP 4.3.0 a XSLT

Petr Cimprich 6. 1. 2003

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ří.

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

Našli jste v článku chybu?

7. 1. 2003 9:44

Petr Cimprich (neregistrovaný)

Prepsanim ext/sablot na ext/xslt byly pripraveny podminky pro integraci dalsich procesoru; nejvetsi zajem na tom meli hlavne uzivatele libxslt. Potom vsak libxslt nevstoupilo do PHP timto ocekavanym zpusobem, ale pres nove vzniklou extenzi ext/domxml. Tedy, obrazne receno a bez pejorativniho vyznamu, zadnimi vratky (tj. jinudy nez mnozi ocekavali).

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Platební brány a EET? Stále s otazníkem

Platební brány a EET? Stále s otazníkem

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Podnikatel.cz: Dárky v podnikání. Jak je uplatnit v daních?

Dárky v podnikání. Jak je uplatnit v daních?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu