Reading a XML processing instruction with PHP

21 Oct 2008

I'm doing some XSL transformations in a project I'm involved in right now. The XML documents that are beeing transformed all include a xml-stylesheet processing instruction that I need to read in order to know what stylesheet to use for a specfic document.

To my surprise, reading processing instructions from a DOMDocument in PHP was not so easy as one might assume.

I wont go into details and tell you about all the hair (of which I have very little) I lost during my search for a way to get ahold of those processing instructions. In the end I used a XPath expression to select the PI. Below you'll find the code I used.

$doc = new DOMDocument; $doc->load("document.xml"); $xpath = new DOMXpath($doc); $nodes = $xpath->evaluate("/child::processing-instruction('xml-stylesheet')"); if(!empty($nodes)) $pi = $nodes->item(0); print $pi->target; print $pi->data;