CG0119 Web Database Systems Using XPath to Navigate & Filter XML (via SimpleXML)
XPath What is it? –w3c standard for… Navigating through an XML document Filtering & finding information –Includes… Expressions for navigating to parts of an XML document The standard includes functions (e.g. for string & date manipulation) Used in XSLT – we used some XPath path expressions last week…!!!
XPath Expressions What are they? –Path expressions are a means of selecting nodes (or sets of nodes) from an XML document –They consist of… A path to the nodes/node sets A predicate (optional) Syntax –Without a predicate: Nodenames, separated by a forward slash (/) –Predicates: Predicates are placed inside [ ]
Example xml document P Anabela Domingues P 2004 M Ann Devon U student.xml Root nodeChild of root node Children of student
Examples: XPath Expressions What would be the path expression to navigate to the startYear node? What would be the path expression to select the startYear node where the startYear = 2002? ‘/students/student/startYear’ ‘/students/student/startYear[. = “2002”]’ --- OR --- ‘/students/student[startYear = “2002”]/startYear’ has more details on & examples of path expressions
Example: Multiple Predicates What would be the path expression to select student nodes where the startYear = 2002 and the studyTypeIdD= U? '/students/student[startYear=2003][studyTypeID = "U"]' has more details on & examples of path expressions
XPath & simpleXML Example The aim of the example used in the following slides is to list data in a XHTML table for all students who started at University in 2002 e.g. Fiona Murray M … … Ann Devon M Name Student Code
XPath & simpleXML – PHP Code Steps involved in this example: 1.Create an instance of a simpleXML class by loading the XML file 2.Construct the query expression 3.Call the XPath method to execute the query 4.Loop through the result set
Steps 1 to 3: simpleXML & XPath Objects // Create a new simplexml instance loading xml file $studentsXML = simplexml_load_file('student.xml'); // Construct an XPath expression, // including a predicate in this instance. $qry = '/students/student[startYear = "2002"] '; // call the simplexml xpath method $students = $studentsXML->xpath($qry);
Step 4: Loop Through Query Result Set // iterate through the students returned by the xpath query foreach ($students as $student) { } echo " {$student->studentCode} \n"; echo " {$student->forename} "; echo "{$student->surname} \n"; echo " \n"; echo " {$student->studentCode} \n"; echo " {$student->forename} "; echo "{$student->surname} \n"; echo " \n"; echo " Student Code Name \n"; echo " \n";
Summary XPath is a w3c standard for –Navigating through an XML document –Filtering & finding information Path expressions navigate to a particular node or node-set and they may include predicates
Recommended Reading - Xpath tutorial - XPath in 5 paragraphs! - w3schools XPath tutorial & reference *