Kai345: Mehrsprachige Ausgaben aus Scripts

Beitrag lesen

[latex]Mae  govannen![/latex]

Was ist das Problem? Ich nutze simplexml_load_file und lade damit problemlos XML incl. Attribute, allerdings ohne NS. Via SimleXML xpath() lassen sich dann die passenden Elemente, die ein Attribut einer bestimmten Sprache besitzen, selektieren.

Wie selektierst du Attribute mit SimpleXML xpath()?

Mit XPath-Syntax *g*

Um Gunnars XML als Basis zu nehmen (erst mal ohne Namespace)

foo.xml:

<root>  
  <status statuscode="401">  
    <title lang="en">Error 401 – Unauthorized</title>  
    <title lang="de">Fehler 401 – nicht autorisiert</title>  
    <content lang="de">Authorisation erforderlich.</content>  
    <content lang="en">The request requires user authentication.</content>  
  </status>  
  <status statuscode="403">  
    <title lang="en">Error 403 – Forbidden</title>  
    <title lang="de">Fehler 403 – Zugriff verweigert</title>  
    <content lang="de">Blablubb laber laber.</content>  
    <content lang="en">yet another crappy message</content>  
  </status>  
</root>
$err = '403';  
$lang = "de";  
$xml = simplexml_load_file('foo.xml');  
if ($xml) {  
    $matching = $xml->xpath(sprintf(  
       'status[@statuscode="%1$s"]/*[@lang="%2$s"]', // siehe unten  
       $err,  
       $lang  
    ));  
}

in obigem Beispiel würde xpath() folgendes übergeben werden: 'status[@statuscode="403"]/*[@lang="de"]'

Hier würde $matching sämtliche beliebigen Elemente (Selektor *) innerhalb <status statuscode="403"> enthalten (als Array von SimpleXML-Objekten), die das Attribut lang="de" besitzen:

array(2) {
  [0]=>
  object(SimpleXMLElement)#5 (2) {
    ["@attributes"]=>
    array(1) {
      ["lang"]=>
      string(2) "de"
    }
    [0]=>
    string(33) "Fehler 403 – Zugriff verweigert"
  }
  [1]=>
  object(SimpleXMLElement)#3 (2) {
    ["@attributes"]=>
    array(1) {
      ["lang"]=>
      string(2) "de"
    }
    [0]=>
    string(21) "Blablubb laber laber."
  }
}

Stur lächeln und winken, Männer!
Kai

--
It all began when I went on a tour, hoping to find some furniture
 Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
SelfHTML-Forum-Stylesheet