wDOM::executeXPath

Führt eine xPath-Abfrage auf ein DOM-Objekt aus

Funktionsaufruf

DomNodeList executeXPath(DOMDocument dom, String xPathExpression)

Parameter

dom
DOM-Objekt
xPathExpression
XPath-Abfrage
options
Erweiterte Optionen
context
Kontextknoten, von dem aus die Abfrage gestellt wird
namespacePrefix
Namensraum-Prefix
namespaceURI
Namensraum-URI

Beispiel 1: XML-Dokument auslesen und ausgeben

Liest die Knoten eines XML-Baumes aus (z.B. getEntries.php)

  require_once $_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php';
  
  $userType = wUserCur::getType();
  
  if($userType != 'admin' && $userType != 'standard'){
    exit;
  }

  $domObject   = wDOM::parseFile('/[PROJEKT]/wGlobal/content/entries/locomotion.wEntries.php');
  $resultNodes = wDOM::executeXPath($domObject, "//entry");
  
  $result = '<entries>'."\n";
  
  foreach($resultNodes as $resultNode){
    $result .= '  <entry value="'.$resultNode->getAttribute('value').'">'.$resultNode->textContent.'</entry>'."\n";
  }
  $result .= '</entries>'."\n";  

  print $result;

XML-Datei locomotion.wEntries.php zu getEntries.php Script

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<locomotion>
  <entries>
    <entry value="car">Auto</entry>
    <entry value="train">Bahn</entry>
    <entry value="airplane">Flugzeug</entry>
  </entries>
</locomotion>

Beispiel 2: XML-Dokument auslesen und ausgeben

Liest den XML-Baum einer Kategorien-Datei aus

//Ermittelt alle Kategorienknoten
 
$resultNodes = wDOM::executeXPath(wDOM::parseFile($_SERVER['DOCUMENT_ROOT'].'/[IHR-LAYOUT-PROJEKT]/wGlobal/content/categories/standard.wCategories.php'), '//category');
  
print '<div class="listCategories">';

foreach($resultNodes as $resultNode){
  //Falls es sich um eine Unterkategorie handelt, wird diese eingerueckt
  if($resultNode->parentNode->tagName == 'category'){
    //print "   ".$resultNode->getAttribute('text')." (".$resultNode->getAttribute('id').")<br />";
    // die Datei document-category.php stellt eine Inhaltsseite mit Liste dar, welche die URL-Parameter berücksichtigt
    print ' <a href="/[PROJEKT]/documents-category.php?categories[]='.$resultNode->getAttribute('id').'" class="categories" style="margin-left:20px">'.$resultNode->getAttribute('text')."</a><br />";
  }
  else{
    //print $resultNode->getAttribute('text')." (".$resultNode->getAttribute('id').")<br />";
    // die Datei document-category.php stellt eine Inhaltsseite mit Liste dar, welche die URL-Parameter berücksichtigt
    print '<a href="/[PROJEKT]/documents-category.php?categories[]='.$resultNode->getAttribute('id').'" class="categories">'.$resultNode->getAttribute('text')."</a><br />";
  }
}
print '</div>';

Beispiel 3: Liest Werte aus dem wd:meta Bereich aus (Namensraum muss definiert werden)

$titleNode = wDOM::executeXPath($domObject, '//wd:meta/wd:title/text()', array('namespacePrefix' => 'wd', 'namespaceURI' => 'http://weblication.de/5.0/wd'))->item(0);

print $titleNode->wholeText;

Hinweis
Beim Einsatz von Framework-Funktionen in eigenen Skripten beachten Sie bitte den Artikel "So verwenden Sie das PHP-Framework in eigenen Scripten".
Wenn Sie eine Funktion innerhalb einer Weblication® Seite z.B. über das PHP-Quelltext Element oder in einem XSL-Template über wsl:php einbinden, muss das Framework über die grid.php nicht mehr referenziert werden.