&reftitle.examples;
XML Eleman Yapısı Örneği İlk örnekte, bir belgedeki girintili başlangıç elemanlarının yapısı gösterilmiştir. - XML Eleman yapısının gösterimi ]]>
XML Etiket Eşleme Örneği - XML etiketlerini HTML etiketlerine eşleme Bu örnekte bir XML belgedeki etiketler doğrudan HTML etiketlerine eşlenmektedir. $map_array içinde bulunmayan etiketler yok sayılmaktadır. Elbette, bu örnek belli bir XML belgeye özgüdür. "B", "EMPHASIS" => "I", "LITERAL" => "TT" ); function startElement($parser, $name, $attrs) { global $map_array; if (isset($map_array[$name])) { echo "<$map_array[$name]>"; } } function endElement($parser, $name) { global $map_array; if (isset($map_array[$name])) { echo ""; } } function characterData($parser, $data) { echo $data; } $xml_parser = xml_parser_create(); // Etiketin $map_array içinde bulunduğundan emin olmak için // büyük harfe dönüşüm uyguluyoruz xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); if (!($fp = fopen($file, "r"))) { die("XML belge açılamadı"); } while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML hatası: %d. satırda %s", xml_get_current_line_number($xml_parser)), xml_error_string(xml_get_error_code($xml_parser))); } } xml_parser_free($xml_parser); ?> ]]>
XML Harici Öğe Örneği 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: - Harici Öğe Örneği $name"; if (count($attribs)) { foreach ($attribs as $k => $v) { echo " $k=\"$v\""; } } echo ">"; } function endElement($parser, $name) { echo "</$name>"; } function characterData($parser, $data) { echo "$data"; } 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 // güvenilirdir diyebiliriz. Değilse, kodu göstermekle // yetineceğiz. if (trustedFile($parser_file[$parser])) { eval($data); } else { printf("Güvenilmez PHP kodu: %s", htmlspecialchars($data)); } break; } } function defaultHandler($parser, $data) { if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") { printf('%s', htmlspecialchars($data)); } else { printf('%s', htmlspecialchars($data)); } } function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId, $publicId) { if ($systemId) { if (!list($parser, $fp) = new_xml_parser($systemId)) { printf("%s dosyasındaki %s öğesi açılamadı\n", $systemId, $openEntityNames); return false; } while ($data = fread($fp, 4096)) { if (!xml_parse($parser, $data, feof($fp))) { printf("XML hatası: %s öğesi çözümlenirken %d. satırda %s\n", $openEntityNames, xml_get_current_line_number($parser), xml_error_string(xml_get_error_code($parser)); xml_parser_free($parser); return false; } } xml_parser_free($parser); return true; } return false; } function new_xml_parser($file) { global $parser_file; $xml_parser = xml_parser_create(); xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); xml_set_processing_instruction_handler($xml_parser, "PIHandler"); xml_set_default_handler($xml_parser, "defaultHandler"); xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler"); if (!($fp = @fopen($file, "r"))) { return false; } if (!is_array($parser_file)) { settype($parser_file, "array"); } $parser_file[$xml_parser] = $file; return array($xml_parser, $fp); } if (!(list($xml_parser, $fp) = new_xml_parser($file))) { die("XML girdi açılamadı"); } echo "
";
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML hatası: %d. satırda %s",
                    xml_get_current_line_number($xml_parser)),
                    xml_error_string(xml_get_error_code($xml_parser)));
    }
}
echo "
"; echo "Çözümleme bitti\n"; xml_parser_free($xml_parser); ?> ]]>
xmltest.xml ]> &plainEntity; başlığı a1b1c1 a2c2 a3b3c3 &systemEntity;
Belge hakkında/title> <para> <!-- Bu bir açıklama --> <?php echo 'Merhaba! PHP sürümü: ' . phpversion(); ?> </para> </section> </chapter> ]]> </programlisting> </example> </para> <para> <filename>xmltest.xml</filename> dosyasında içerilen dosya: <example> <title>xmltest2.xml ]> &testEnt; ]]>