February 27, 2002 - Switching between XSLT and XPath | WebReference

February 27, 2002 - Switching between XSLT and XPath

Yehuda Shiran February 27, 2002
Switching between XSLT and XPath
Tips: February 2002

Yehuda Shiran, Ph.D.
Doc JavaScript

There are two standard formats to specify patterns for searching nodes in the DOMDocument tree: XSLT Patterns and XPath. The XPath format is richer than the XSLT Patterns, and supports many XSLT Patterns. XSLT Patterns are the default. To change to XPath, you need to change the selectionLanguage. Here is a demo:

function applyPatterns() {
  var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
  xmlDoc.async = false;
  xmlDoc.load("mydvd7.xml");
  xmlDoc.setProperty("SelectionLanguage", "XPath");
  var matchedNodes = xmlDoc.selectNodes('/sales//month');
  alert("Number of matched nodes: " + matchedNodes.length);
}
Try it. You should get three nodes, for the three months reported in our mydvd7.xml file:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="mydvd7.xsl"?>
<!DOCTYPE sales SYSTEM "mydvd7.dtd">
  <sales>
    <summary>
      <heading>MyDVD Rental Store</heading>
      <subhead>Periodical Sales Report</subhead>
      <description>Sales Report for January, February, 
	    and &lt;&month;&gt; of 2001</description>
	  <author>author: &preparedby;</author>
	  <date>Jan 30, 2002</date>
    </summary>
	<data>
      <month>
        <name>January 2001</name>
        <week number="1" dvds_rented="12000" />
        <week number="2" dvds_rented="15000" />
        <week number="3" dvds_rented="18000" />
        <week number="4" dvds_rented="11800" />		  
      </month>
      <month>
        <name>February 2001</name>
        <week number="1" dvds_rented="11500" />
        <week number="2" dvds_rented="12390" />
        <week number="3" dvds_rented="19050" />
        <week number="4" dvds_rented="11200" />		  
      </month>
      <month>
        <name>March 2001</name>
        <week number="1" dvds_rented="15300" />
        <week number="2" dvds_rented="12390" />
        <week number="3" dvds_rented="10050" />
        <week number="4" dvds_rented="11230" />		  
      </month>
    </data>
  </sales>