1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 07:12:18 +01:00
Files
archived-doc-tr/reference/xml/examples.xml
2022-07-13 04:23:38 +03:00

349 lines
9.1 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f5992156e664c34794804c282a95f6428a2687a7 Maintainer: nilgun Status: ready -->
<chapter xml:id="xml.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="example.xml-structure">
<title>XML Eleman Yapısı Örneği</title>
<para>
İlk örnekte, bir belgedeki girintili başlangıç elemanlarının yapısı
gösterilmiştir.
<example>
<title>- XML Eleman yapısının gösterimi</title>
<programlisting role="php">
<![CDATA[
<?php
$file = "data.xml";
$depth = 0;
function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth; $i++) {
echo " ";
}
echo "$name\n";
$depth++;
}
function endElement($parser, $name)
{
global $depth;
$depth--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
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);
?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="example.xml-map-tags">
<title>XML Etiket Eşleme Örneği</title>
<para>
<example>
<title>- XML etiketlerini HTML etiketlerine eşleme</title>
<para>
Bu örnekte bir XML belgedeki etiketler doğrudan HTML etiketlerine
eşlenmektedir. <varname>$map_array</varname> içinde bulunmayan etiketler
yok sayılmaktadır. Elbette, bu örnek belli bir XML belgeye özgüdür.
</para>
<programlisting role="php">
<![CDATA[
<?php
$file = "data.xml";
$map_array = array(
"BOLD" => "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 "</$map_array[$name]>";
}
}
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);
?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="example.xml-external-entity">
<title>XML Harici Öğe Örneği</title>
<para>
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.
</para>
<para>
Bu örnek için kullanılan XML belgeler:
</para>
<para>
<example>
<title>- Harici Öğe Örneği</title>
<programlisting role="php">
<![CDATA[
<?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 "&lt;<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 "&gt;";
}
function endElement($parser, $name)
{
echo "&lt;/<font color=\"#0000cc\">$name</font>&gt;";
}
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
// güvenilirdir diyebiliriz. Değilse, kodu göstermekle
// yetineceğiz.
if (trustedFile($parser_file[$parser])) {
eval($data);
} else {
printf("Güvenilmez PHP kodu: <i>%s</i>",
htmlspecialchars($data));
}
break;
}
}
function defaultHandler($parser, $data)
{
if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
printf('<font color="#aa00aa">%s</font>',
htmlspecialchars($data));
} else {
printf('<font size="-1">%s</font>',
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 "<pre>";
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 "</pre>";
echo "Çözümleme bitti\n";
xml_parser_free($xml_parser);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>xmltest.xml</title>
<programlisting role="xml">
<![CDATA[
<?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>
]]>
</programlisting>
</example>
</para>
<para>
<filename>xmltest.xml</filename> dosyasında içerilen dosya:
<example>
<title>xmltest2.xml</title>
<programlisting role="xml">
<![CDATA[
<?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>
]]>
</programlisting>
</example>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->