spacer
Yehuda Shiran March 26, 2002
Using "*[@]" to Match DOMDocument Nodes by Attribute Names
Tips: March 2002

Yehuda Shiran, Ph.D.
Doc JavaScript

Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?

You can use attribute names to match DOMDocument's nodes. For example, The pattern *[@dvds_rented] matches all nodes having the attribute dvds_rented in mydvd7.xml. The context may change. The pattern /*[@dvds_rented] will match nodes only at the root. The pattern //*[@dvds_rented] will match nodes any level below the root (try it):

  var matchedNodes = xmlDoc.selectNodes('//*[@dvds_rented]');
  alert("Number of matched nodes: " + matchedNodes.length);
The pattern @dvds_rented will match nodes at the current level. If the context is the first week of January, we should get a single week node (try it):

  var matchedNodes = xmlDoc.childNodes[3].childNodes[1].childNodes[0].
    childNodes[1].selectNodes('@dvds_rented');
  alert("Number of matched nodes: " + matchedNodes.length);
Similar patterns are also possible. The pattern week/@dvds_rented will match 4 nodes when the context is the month of January (try it):

  var matchedNodes = xmlDoc.childNodes[3].childNodes[1].childNodes[0].
    selectNodes('week/@dvds_rented');
  alert("Number of matched nodes: " + matchedNodes.length);
Here is mydvd7.xml for your reference:

<?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>

People who read this tip also read these tips:

Look for similar tips by subject:

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business