mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
349 lines
9.1 KiB
XML
349 lines
9.1 KiB
XML
<?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 "<<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
|
||
// 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
|
||
-->
|
||
|