[XENFORO] XSD tarzında Php içerisinde özel kod yazma.

OGUZHANPW

Onlar ABC'yi öğrettiler ama DEF'yi biz öğrendik.
Mesajlar
42
En iyi cevaplar
0
Beğeniler
20
Puanları
0


Öncelikle, Bu makalemde xenforo da kullanılan <xen:if> ve xsd dosya türünde <xsd:eif> vb. elementlerin nasıl yapıldığı ve internette bulunamayan php içerisinde ister veritabanından ister düz xml yazaraktan <xxx:element> vb. kodların nasıl yazıldığını göstereceğim..
PHP:
<?php
$xsdstring = <<<XML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<opw:schema xmlns:opw="http://www.w3.org/2001/XMLSchema">
  <opw:element name="1">
    <opw:alt>
        <opw:element name="1.1" type="opw:string"/>
        <opw:element name="1.2">
          <opw:alt>
              <opw:element name="1.2.1"/>
              <opw:element name="1.2.2"/>
              <opw:element name="1.2.3"/>
              <opw:element name="1.2.4"/>
          </opw:alt>
        </opw:element>
        <opw:degisken>
            <opw:if ifname="deger"/>
        </opw:degisken>
    </opw:alt>
  </opw:element>
</opw:schema>
XML;
$doc = new DOMDocument();
$doc->loadXML(mb_convert_encoding($xsdstring, 'utf-8', mb_detect_encoding($xsdstring)));
$xpath = new DOMXPath($doc);
$xpath->registerNamespace('opw', 'http://www.w3.org/2001/XMLSchema');
function echoElements($indent, $elementDef) {
  global $doc, $xpath;
  echo "<b>".$indent.$elementDef->getAttribute('name')."</b><br><br>";
  $elementDefs = $xpath->evaluate("opw:alt/opw:element", $elementDef);
  foreach($elementDefs as $elementDef) {
    echoElements($indent . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", $elementDef);
  }
}
$elementDefs = $xpath->evaluate("/opw:schema/opw:element");
foreach($elementDefs as $elementDef) {
  echoElements("", $elementDef);
}
function echoifElements($indents, $elementDefsss) {
  global $doc, $xpath;
  echo "<font style='color:red;'>".$indents.$elementDefsss->getAttribute('ifname')."</font><br><br>";
  $elementDefss = $xpath->evaluate("opw:alt/opw:degisken/opw:if", $elementDefsss);
  foreach($elementDefss as $elementDefsss) {
    echoifElements($indents . "&nbsp;&nbsp;&nbsp;&nbsp;", $elementDefsss);
  }
}
$elementDefss = $xpath->evaluate("/opw:schema/opw:element");
foreach($elementDefss as $elementDefsss) {
  echoifElements("", $elementDefsss);
}
?>

Yukarıdaki belirttiğim php kodu içerisinde ben opw kullandım. Eğer notepad++ programını kullanıyor iseniz CTRL+F tuşlarına basarak önünüze çıkan pencereden değiştir sekmesine basarak aranan bölümüne opw, değiştir bölümüne ise istediğinizi yazabilirsiniz. Fakat değiştir bölümüne u, ğ, ü, ö gibi harfler kullanmamaya dikkat edelim çünkü hata çıkabiliyor.

Yukarıda vermiş olduğum php kodu içerisinde eğer bilmiyor iseniz &nbsp; kodu boşluk anlamına gelmektedir.

Verdiğim veriyi test etmek için buraya tıklayabilirsiniz.

___​
 



Üst