<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/xml.examples.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'example.xml-external-entity.php',
    1 => 'XML Harici &Ouml;ğe &Ouml;rneği',
    2 => 'XML Harici &Ouml;ğe &Ouml;rneği',
  ),
  'up' => 
  array (
    0 => 'xml.examples.php',
    1 => '&Ouml;rnekler',
  ),
  'prev' => 
  array (
    0 => 'example.xml-map-tags.php',
    1 => 'XML Etiket Eşleme &Ouml;rneği',
  ),
  'next' => 
  array (
    0 => 'ref.xml.php',
    1 => 'XML &Ccedil;&ouml;z&uuml;mleyici İşlevleri',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/xml/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="example.xml-external-entity" class="section">
  <h2 class="title">XML Harici Öğe Örneği</h2>
  <p class="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.
  </p>
  <p class="para">
   Bu örnek için kullanılan XML belgeler:
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - Harici Öğe Örneği</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$file </span><span style="color: #007700">= </span><span style="color: #DD0000">"xmltest.xml"</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">trustedFile</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #FF8000">// sadece sahibi olduğumuz yerel dosyalara güveniyoruz<br />    </span><span style="color: #007700">if (!</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">"@^([a-z][a-z0-9+.-]*)\:\/\/@i"</span><span style="color: #007700">, </span><span style="color: #0000BB">$file</span><span style="color: #007700">)<br />        &amp;&amp; </span><span style="color: #0000BB">fileowner</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">) == </span><span style="color: #0000BB">getmyuid</span><span style="color: #007700">()) {<br />            return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />    }<br />    return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">startElement</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$attribs</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"&amp;lt;&lt;font color=\"#0000cc\"&gt;</span><span style="color: #0000BB">$name</span><span style="color: #DD0000">&lt;/font&gt;"</span><span style="color: #007700">;<br />    if (</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$attribs</span><span style="color: #007700">)) {<br />        foreach (</span><span style="color: #0000BB">$attribs </span><span style="color: #007700">as </span><span style="color: #0000BB">$k </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$v</span><span style="color: #007700">) {<br />            echo </span><span style="color: #DD0000">" &lt;font color=\"#009900\"&gt;</span><span style="color: #0000BB">$k</span><span style="color: #DD0000">&lt;/font&gt;=\"&lt;font<br />                   color=\"#990000\"&gt;</span><span style="color: #0000BB">$v</span><span style="color: #DD0000">&lt;/font&gt;\""</span><span style="color: #007700">;<br />        }<br />    }<br />    echo </span><span style="color: #DD0000">"&amp;gt;"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">endElement</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"&amp;lt;/&lt;font color=\"#0000cc\"&gt;</span><span style="color: #0000BB">$name</span><span style="color: #DD0000">&lt;/font&gt;&amp;gt;"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">characterData</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"&lt;b&gt;</span><span style="color: #0000BB">$data</span><span style="color: #DD0000">&lt;/b&gt;"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">PIHandler</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$target</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">)<br />{<br />    switch (</span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$target</span><span style="color: #007700">)) {<br />        case </span><span style="color: #DD0000">"php"</span><span style="color: #007700">:<br />            global </span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">;<br />            </span><span style="color: #FF8000">// Çözümlenen belge "güvenilir" ise içerdiği PHP kodu da<br />            // güvenilirdir diyebiliriz. Değilse, kodu göstermekle<br />            // yetineceğiz.<br />            </span><span style="color: #007700">if (</span><span style="color: #0000BB">trustedFile</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">[</span><span style="color: #0000BB">$parser</span><span style="color: #007700">])) {<br />                eval(</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br />            } else {<br />                </span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"Güvenilmez PHP kodu: &lt;i&gt;%s&lt;/i&gt;"</span><span style="color: #007700">,<br />                        </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">));<br />            }<br />            break;<br />    }<br />}<br /><br />function </span><span style="color: #0000BB">defaultHandler</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">)<br />{<br />    if (</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">) == </span><span style="color: #DD0000">"&amp;" </span><span style="color: #007700">&amp;&amp; </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">) == </span><span style="color: #DD0000">";"</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">'&lt;font color="#aa00aa"&gt;%s&lt;/font&gt;'</span><span style="color: #007700">,<br />                </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">));<br />    } else {<br />        </span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">'&lt;font size="-1"&gt;%s&lt;/font&gt;'</span><span style="color: #007700">,<br />                </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">));<br />    }<br />}<br /><br />function </span><span style="color: #0000BB">externalEntityRefHandler</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$openEntityNames</span><span style="color: #007700">, </span><span style="color: #0000BB">$base</span><span style="color: #007700">, </span><span style="color: #0000BB">$systemId</span><span style="color: #007700">,<br />                                  </span><span style="color: #0000BB">$publicId</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">$systemId</span><span style="color: #007700">) {<br />        if (!list(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$fp</span><span style="color: #007700">) = </span><span style="color: #0000BB">new_xml_parser</span><span style="color: #007700">(</span><span style="color: #0000BB">$systemId</span><span style="color: #007700">)) {<br />            </span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%s dosyasındaki %s öğesi açılamadı\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$systemId</span><span style="color: #007700">,<br />                   </span><span style="color: #0000BB">$openEntityNames</span><span style="color: #007700">);<br />            return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />        }<br />        while (</span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">4096</span><span style="color: #007700">)) {<br />            if (!</span><span style="color: #0000BB">xml_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">))) {<br />                </span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"XML hatası: %s öğesi çözümlenirken %d. satırda %s\n"</span><span style="color: #007700">,<br />                       </span><span style="color: #0000BB">$openEntityNames</span><span style="color: #007700">,<br />                       </span><span style="color: #0000BB">xml_get_current_line_number</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">),<br />                       </span><span style="color: #0000BB">xml_error_string</span><span style="color: #007700">(</span><span style="color: #0000BB">xml_get_error_code</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">));<br />                </span><span style="color: #0000BB">xml_parser_free</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">);<br />                return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />            }<br />        }<br />        </span><span style="color: #0000BB">xml_parser_free</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser</span><span style="color: #007700">);<br />        return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />    }<br />    return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">new_xml_parser</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">)<br />{<br />    global </span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">;<br /><br />    </span><span style="color: #0000BB">$xml_parser </span><span style="color: #007700">= </span><span style="color: #0000BB">xml_parser_create</span><span style="color: #007700">();<br />    </span><span style="color: #0000BB">xml_parser_set_option</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #0000BB">XML_OPTION_CASE_FOLDING</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">xml_set_element_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #DD0000">"startElement"</span><span style="color: #007700">, </span><span style="color: #DD0000">"endElement"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">xml_set_character_data_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #DD0000">"characterData"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">xml_set_processing_instruction_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #DD0000">"PIHandler"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">xml_set_default_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #DD0000">"defaultHandler"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">xml_set_external_entity_ref_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">,<br />              </span><span style="color: #DD0000">"externalEntityRefHandler"</span><span style="color: #007700">);<br /><br />    if (!(</span><span style="color: #0000BB">$fp </span><span style="color: #007700">= @</span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">))) {<br />        return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />    }<br />    if (!</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">)) {<br />        </span><span style="color: #0000BB">settype</span><span style="color: #007700">(</span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">, </span><span style="color: #DD0000">"array"</span><span style="color: #007700">);<br />    }<br />    </span><span style="color: #0000BB">$parser_file</span><span style="color: #007700">[</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">] = </span><span style="color: #0000BB">$file</span><span style="color: #007700">;<br />    return array(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br />}<br /><br />if (!(list(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$fp</span><span style="color: #007700">) = </span><span style="color: #0000BB">new_xml_parser</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">))) {<br />    die(</span><span style="color: #DD0000">"XML girdi açılamadı"</span><span style="color: #007700">);<br />}<br /><br />echo </span><span style="color: #DD0000">"&lt;pre&gt;"</span><span style="color: #007700">;<br />while (</span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">4096</span><span style="color: #007700">)) {<br />    if (!</span><span style="color: #0000BB">xml_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">))) {<br />        die(</span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"XML hatası: %d. satırda %s"</span><span style="color: #007700">,<br />                    </span><span style="color: #0000BB">xml_get_current_line_number</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">)),<br />                    </span><span style="color: #0000BB">xml_error_string</span><span style="color: #007700">(</span><span style="color: #0000BB">xml_get_error_code</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">)));<br />    }<br />}<br />echo </span><span style="color: #DD0000">"&lt;/pre&gt;"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"Çözümleme bitti\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">xml_parser_free</span><span style="color: #007700">(</span><span style="color: #0000BB">$xml_parser</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Örnek 2 xmltest.xml</strong></p>
    <div class="example-contents">
<div class="xmlcode"><pre class="xmlcode">&lt;?xml version=&#039;1.0&#039;?&gt;
&lt;!DOCTYPE chapter SYSTEM &quot;/sadece/bir/test.dtd&quot; [
&lt;!ENTITY plainEntity &quot;DNM öğesi&quot;&gt;
&lt;!ENTITY systemEntity SYSTEM &quot;xmltest2.xml&quot;&gt;
]&gt;
&lt;chapter&gt;
 &lt;TITLE&gt;&amp;plainEntity; başlığı&lt;/TITLE&gt;
 &lt;para&gt;
  &lt;informaltable&gt;
   &lt;tgroup cols=&quot;3&quot;&gt;
    &lt;tbody&gt;
     &lt;row&gt;&lt;entry&gt;a1&lt;/entry&gt;&lt;entry morerows=&quot;1&quot;&gt;b1&lt;/entry&gt;&lt;entry&gt;c1&lt;/entry&gt;&lt;/row&gt;
     &lt;row&gt;&lt;entry&gt;a2&lt;/entry&gt;&lt;entry&gt;c2&lt;/entry&gt;&lt;/row&gt;
     &lt;row&gt;&lt;entry&gt;a3&lt;/entry&gt;&lt;entry&gt;b3&lt;/entry&gt;&lt;entry&gt;c3&lt;/entry&gt;&lt;/row&gt;
    &lt;/tbody&gt;
   &lt;/tgroup&gt;
  &lt;/informaltable&gt;
 &lt;/para&gt;
 &amp;systemEntity;
 &lt;section id=&quot;about&quot;&gt;
  &lt;title&gt;Belge hakkında/title&gt;
  &lt;para&gt;
   &lt;!-- Bu bir açıklama --&gt;
   &lt;?php echo &#039;Merhaba!  PHP sürümü: &#039; . phpversion(); ?&gt;
  &lt;/para&gt;
 &lt;/section&gt;
&lt;/chapter&gt;</pre>
</div>
    </div>

   </div>
  </p>
  <p class="para">
   <var class="filename">xmltest.xml</var> dosyasında içerilen dosya:
   <div class="example" id="example-3">
    <p><strong>Örnek 3 xmltest2.xml</strong></p>
    <div class="example-contents">
<div class="xmlcode"><pre class="xmlcode">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE foo [
&lt;!ENTITY testEnt &quot;deneme öğesi&quot;&gt;
]&gt;
&lt;foo&gt;
   &lt;element attrib=&quot;value&quot;/&gt;
   &amp;testEnt;
   &lt;?php echo &quot;Burada çalıştırılacak bir PHP kodu var.&quot;; ?&gt;
&lt;/foo&gt;</pre>
</div>
    </div>

   </div>
  </p>
 </div><?php manual_footer($setup); ?>