2012-11-19 14 views
5

Ecco il mio codice PHP:PHP SimpleXML XPath: contiene e la posizione

$xml = new SimpleXMLElement('data.xml', null, true); 
$q = $xml->xpath('post/misc[contains(tags,"animal")][position() <= 2]'); 

Ed ecco il file XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<posts> 
    <post> 
     <id>1</id> 
     <misc> 
      <tags>animal,tiger</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>2</id> 
     <misc> 
      <tags>plant,coconut</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>3</id> 
     <misc> 
      <tags>animal,lion</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
    <post> 
     <id>4</id> 
     <misc> 
      <tags>animal,monkey</tags> 
      <prio>0.5</prio> 
     </misc> 
    </post> 
</posts> 

Come faccio ad avere i 2 primi elementi in cui è tag contiene ' animale '?

Il risultato xpath deve essere post:id=1 e post:id=3, ma è visto restituire tutti gli elementi che contiene animal.

risposta

4

Mettere parte principale XPath in () parentesi, cioè .:

(//post/misc[contains(tags,"animal")])[position() <= 2]