home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / MSXML / MSXML.MSI / XML_SDK.cab / xmlsdk4.chm.4576A2F1_959E_4BCA_94A9_596523761901 / htm / xpress.js < prev    next >
Encoding:
JavaScript  |  2003-04-18  |  5.0 KB  |  219 lines

  1. //
  2. // JScript File: XPress.js
  3. //   XPath Expression Demo to be used in each XPath Reference page.
  4. //   to help understand the meaning of an XPath expression.
  5. //
  6.   
  7. var getID, source, stylesheet, contextNode;
  8.  
  9.   ///////////////////////////////
  10.   function Init() {
  11.  
  12.     try {
  13.       getID = new ActiveXObject("Msxml2.DOMDocument.4.0");
  14.       source = new ActiveXObject("Msxml2.DOMDocument.4.0");
  15.       stylesheet = new ActiveXObject("Msxml2.DOMDocument.4.0");
  16.     }
  17.     catch (e) {
  18.       alert("Microsoft XML Core Service 4.0 is not installed.\n"+
  19.             "Please visit http://msdn.microsoft.com/xml\n" +
  20.             "to install MSXML 4.0 before continuing.");
  21.       return;
  22.     }
  23.       
  24.     try {
  25.       getID.async = false;
  26.       getID.load("makeID.xsl");
  27.    
  28.       source.async=false;
  29.  
  30.       stylesheet.async = false;
  31.       stylesheet.load("XPress.xsl");
  32.  
  33.     }
  34.     catch (e) {
  35.       alert("error occurred in init():\n"+e.description);
  36.     }
  37.   }
  38.   
  39.   //////////////////////////////
  40.   function LoadXML(path, target) {
  41.      if (target == null) 
  42.         return;
  43.      try {
  44.        if (source == null || getID == null) {
  45.           Init();
  46.        }
  47.        source.load(path);
  48.        result = source.transformNode(stylesheet);
  49.        target.all.item("divXmlSrc").innerHTML = result;
  50.      }
  51.      catch (e) {
  52.        alert(e.description+"\n"+e.url);
  53.        return;
  54.      }
  55.   }
  56.  
  57. //////////////////////////////
  58. function ShowContextNode(expr) {
  59.   var q;
  60.   if (source == null || getID == null) {
  61.      Init();
  62.   }
  63.   divXmlSrc.innerHTML = result;
  64.   try {
  65.     contextNode= source.selectSingleNode(expr);
  66.   }
  67.   catch(e) {
  68.  //   alert("Select Context Node:\n"+e.description);
  69.     return;
  70.   }
  71.  
  72.   try 
  73.   {
  74.     eID = contextNode.transformNode(getID); 
  75.     document.all.item(eID).style.backgroundColor = "cyan";
  76.   }
  77.   catch (exception) 
  78.   {
  79.     result = reportRuntimeError(exception);
  80.     alert(result);
  81.   }      
  82. }
  83.  
  84. //////////////////////////////
  85. function ShowXPath(expr) {
  86.   var q;
  87.   if (source == null || getID == null) {
  88.      Init();
  89.   }
  90.  
  91.   ShowContextNode( ctxNode.options[ctxNode.value].text );
  92.  
  93.   try {
  94.     q= contextNode.selectNodes(expr);
  95.   }
  96.   catch(e) {
  97.     alert("SelectNodes:\n"+e.description);
  98.   }
  99.  
  100.   for (var e = q.nextNode(); e != null; e = q.nextNode())
  101.   {
  102.     try 
  103.     {
  104.        eID = e.transformNode(getID); 
  105.        document.all.item(eID).style.backgroundColor = "yellow";
  106.     }
  107.     catch (exception) 
  108.     {
  109.        result = reportRuntimeError(exception);
  110.        alert(result);
  111.     }      
  112.   }
  113. }
  114.  
  115. //
  116. toggleSwitch = -1;
  117.  
  118. function SetXML(sender, target)
  119. {
  120.   if (sender.id != "divTIMenu" || target.id != "divTIMain")
  121.      return;
  122.  
  123.   switch(toggleSwitch) 
  124.   {
  125.     case -1:
  126.       toggleSwitch *= -1;
  127.       target.style.display = "block";
  128.       LoadXML('bookstore.xml', target);
  129.       sender.innerText = "Click here to close Try It!";
  130.       break;
  131.     case 1:
  132.       toggleSwitch *= -1;
  133.       target.style.display = "none";
  134.       sender.innerText = "Click here to start Try It!";
  135.       break;
  136.   }
  137. }
  138.  
  139. function SetContext(sender)
  140. {
  141.   if (sender.id != "ctxNode") 
  142.   {
  143.      return;
  144.   }
  145.   var ctxPath = sender.options[sender.value].text;
  146.   ShowContextNode(ctxPath);
  147.  
  148.   switch (ctxPath) 
  149.   {
  150.     case "/":
  151.       xpression.selectedIndex = 0;
  152.       xpression.options[1].text="bookstore/book";
  153.       xpression.options[2].text="bookstore/@specialty";
  154.       xpression.options[3].text="//author";
  155.       break;
  156.     case "/bookstore/book[1]":
  157.       xpression.selectedIndex = 0;
  158.       xpression.options[1].text="author";
  159.       xpression.options[2].text="author/*";
  160.       xpression.options[3].text="*";
  161.       break;
  162.     case "/bookstore/magazine[1]":
  163.       xpression.selectedIndex = 0;
  164.       xpression.options[1].text="@style";
  165.       xpression.options[2].text="@*";
  166.       xpression.options[3].text="price";
  167.       break;
  168.     default:
  169.       xpression.selectedIndex = 0;
  170.       xpression.options[1].text="";
  171.       xpression.options[2].text="";
  172.       xpression.options[3].text="";
  173.       break;
  174.   }
  175. }
  176.  
  177. function SetXPath(expr, context)
  178. {
  179.   if (expr.id != "xpression" || context.id != "ctxNode") 
  180.   {
  181.      return;
  182.   }
  183.  
  184.   ShowXPath(expr.options[expr.value].text);
  185. }
  186.  
  187.  
  188. // Parse error formatting function
  189. function reportParseError(error)
  190. {
  191.   var s = "";
  192.   for (var i=1; i<error.linepos; i++) {
  193.     s += " ";
  194.   }
  195.   r = "<font face=Verdana size=2><font size=4>XML Error loading '" + 
  196.       error.url + "'</font>" +
  197.       "<P><B>" + error.reason + 
  198.       "</B></P></font>";
  199.   if (error.line > 0)
  200.     r += "<font size=3><XMP>" +
  201.     "at line " + error.line + ", character " + error.linepos +
  202.     "\n" + error.srcText +
  203.     "\n" + s + "^" +
  204.     "</XMP></font>";
  205.   return r;
  206. }
  207.  
  208.  
  209. // Runtime error formatting function.
  210. function reportRuntimeError(exception)
  211. {
  212.   return "<font face=Verdana size=2>"+
  213.          "  <font size=4>XSL Runtime Error</font>" +
  214.          "  <P><B>"+exception.description+"</B></P>"+
  215.          "</font>" + 
  216.          "<P>"+exception+"</P>";
  217. }
  218.  
  219.