Photo by Robert Trachtenberg - NBC.com | TV Network for Primetime
A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected]...
description
Transcript of A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected]...
![Page 1: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/1.jpg)
A Sneak Preview of XML in PHP 5
Adam TrachtenbergCo-Author PHP Cookbook
January 21, 2004
![Page 2: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/2.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
XML Extensions in PHP 5• Work together as a unified whole.• Are standardized on a single XML
library: libxml2.• Fully comply with W3 specifications.• Efficiently process data.• Provide you with the right XML tool for
your job.
![Page 3: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/3.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
Five Major Extensions• DOM• SAX• SimpleXML• XPath• XSLT
![Page 4: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/4.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
Music Catalogue XML<music> <artist id="1"> <name>The Rolling Stones</name> <albums> <title>Exile On Main Street</title> </albums> </artist> <artist id="2"> <name>Aimee Mann</name> <albums> <title>I'm With Stupid</title> <title>Bachelor No. 2</title> </albums> </artist></music>
![Page 5: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/5.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
DOM• The 800 pound gorilla of XML.• You can do everything and the <kitchen:sink> with DOM, but navigating through your documents can be cumbersome.
• Tree-based API• Undergone a complete rewrite to
correspond with DOM specifications.
![Page 6: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/6.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
DOM Example Code$music = new domDocument;$music->preserveWhiteSpace = false;$music->load('music.xml');
$names = $music-> getElementsByTagName('name');foreach ($names as $name) { print $name->firstChild
->nodeValue;}
The Rolling StonesAimee Mann
![Page 7: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/7.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
SAX• PHP's original XML extension.• Streaming (or event-based) parser• Uses less memory than DOM, but
frequently at the expense of more complex PHP code.
• Used to use expat. Now uses libxml2
![Page 8: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/8.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
SimpleXML• A new PHP 5 only extension.• Excels at parsing RSS files, REST results,
and configuration data.• If you know the document's format ahead
of time, SimpleXML is the way to go.• Only supports elements, text nodes, and
attributes.• Tree-based API
![Page 9: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/9.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
SimpleXML Example Code$x = simplexml_load_string($xml);$artists = $x->artist;
foreach($artists as $artist) { print "$artist->name\n";}
The Rolling StonesAimee Mann
![Page 10: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/10.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
XPath• Query XML documents like you're using
regular expressions to find the subset of information that you need and eliminate the unnecessary portions.
• Highly useful and undervalued piece of XML.
• Usable with DOM and SimpleXML
![Page 11: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/11.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
XPath Example Code$xpath = new domXPath($music);$albums = $xpath->query("/music/artist[name =
'Rolling Stones']/albums/name");
foreach ($albums as $a)print $a->firstChild->nodeValue;
}Exile On Main Street
![Page 12: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/12.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
XSLT• A way to take XML documents and
transform them into HTML or another output format.
• Defines templates using XML-based stylesheets.
• Easily shared among different applications, but has a quirky syntax.
• Uses libxslt library instead of Sablotron.
![Page 13: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/13.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
XSLT Example Code$xslt = new xsltProcessor;$xsl = domDocument::load('music.xsl');
$xslt->importStylesheet($xsl);
$xml = domDocument::load('music.xml');
print $xslt->transformToXML($xml);
![Page 14: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/14.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
Web Services• SOAP
– PEAR::SOAP– soap Extension (Written in C)
• REST– SimpleXML
• XML-RPC– Still there…
![Page 15: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/15.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
Resources• DOM, XSLT, XPath
– PHP 5 Meets XML and the DOMPHP Magazine: www.php-mag.net
• SimpleXML– Using PHP 5's SimpleXML
O’Reilly Network: www.onlamp.com/php
![Page 16: A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004](https://reader035.fdocuments.us/reader035/viewer/2022081520/56816867550346895ddec998/html5/thumbnails/16.jpg)
Adam Trachtenberg [http://www.trachtenberg.com]
Did I mention I wrote a book?