Bu örnekte XML kodu renklendirilmektedir. Bir harici öğe gönderimi eylemcisinin diğer belgeleri içermek ve çözümlemek amacıyla nasıl kullanıldığı gösterilmiştir. Bunun yanında, PI hedeflerinin ve bunları içeren kodun nasıl ele alınacağı da gösterilmiştir.
Bu örnek için kullanılan XML belgeler:
Örnek 1 - Harici Öğe Örneği
<?php
$file = "xmltest.xml";
function trustedFile($file)
{
// sadece sahibi olduğumuz yerel dosyalara güveniyoruz
if (!preg_match("@^([a-z][a-z0-9+.-]*)\:\/\/@i", $file)
&& fileowner($file) == getmyuid()) {
return true;
}
return false;
}
function startElement($parser, $name, $attribs)
{
echo "<<font color=\"#0000cc\">$name</font>";
if (count($attribs)) {
foreach ($attribs as $k => $v) {
echo " <font color=\"#009900\">$k</font>=\"<font
color=\"#990000\">$v</font>\"";
}
}
echo ">";
}
function endElement($parser, $name)
{
echo "</<font color=\"#0000cc\">$name</font>>";
}
function characterData($parser, $data)
{
echo "<b>$data</b>";
}
function PIHandler($parser, $target, $data)
{
switch (strtolower($target)) {
case "php":
global $parser_file;
// Çözümlenen belge "güvenilir" ise içerdiği PHP kodu da
Örnek 2 xmltest.xml
<?xml version='1.0'?> <!DOCTYPE chapter SYSTEM "/sadece/bir/test.dtd" [ <!ENTITY plainEntity "DNM öğesi"> <!ENTITY systemEntity SYSTEM "xmltest2.xml"> ]> <chapter> <TITLE>&plainEntity; başlığı</TITLE> <para> <informaltable> <tgroup cols="3"> <tbody> <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row> <row><entry>a2</entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> &systemEntity; <section id="about"> <title>Belge hakkında/title> <para> <!-- Bu bir açıklama --> <?php echo 'Merhaba! PHP sürümü: ' . phpversion(); ?> </para> </section> </chapter>
xmltest.xml dosyasında içerilen dosya:
Örnek 3 xmltest2.xml
<?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY testEnt "deneme öğesi"> ]> <foo> <element attrib="value"/> &testEnt; <?php echo "Burada çalıştırılacak bir PHP kodu var."; ?> </foo>