⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 detecting and handling xsl errors.htm

📁 这是一本关于XML的学习的书
💻 HTM
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<TITLE>侦测和处理Xsl错误</TITLE>
<style type="text/css">
<!--
.normal10 {  font-size: 11pt}
.normal9 {  font-size: 9pt}
a{ text-decoration: none }
a:hover{ color:Red;text-decoration:underline }
a {
font-size:11pt;   
COLOR: cornflowerblue;
FONT-FAMILY: "新细明体", "宋体";
FONT-WEIGHT: bold
 }
.normal105 {  font-size: 11pt}
.p {  font-size: 11pt}

-->
</style>
<link rel="stylesheet" href="../../Global.css" tppabs="http://www.xml.org.cn:8188/Global.css"></HEAD>
<BODY>
<p ALIGN="CENTER" class="normal105">[<a href="../../default.asp.htm" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>][<font face="宋体" lang="ZH-CN"><a href="../application.htm" tppabs="http://www.xml.org.cn:8188/application/application.htm" target="_parent">返回应用</a></font>]</p>
<table width="85%" border="0" align="center">
  <tr> 
    <td width="22%" height="59">&nbsp;</td>
    <td width="53%" height="59"> 
      <h2 align="center">侦测和处理Xsl错误</h2>
      </td>
    <td width="25%" height="59"><a name="top"></a></td>
  </tr>
  <tr> 
    <td colspan="3" height="2900"> 
      <p> <span class="normal10"><span class="normal105">上一篇:<a href="Getting the Results of an XSL Transformation as a New DOM Document.htm" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Getting%20the%20Results%20of%20an%20XSL%20Transformation%20as%20a%20New%20DOM%20Document.htm" class="normal105">使用一个新的DOM文档得到XSL转换的结果</a> 
        <br>
        下一篇:<a href="Parameterizing a Style Sheet.htm" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Parameterizing%20a%20Style%20Sheet.htm" class="normal105">参数化一个样式表</a><br>
        返 回: <a href="Using the XSL Processor.htm" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Using%20the%20XSL%20Processor.htm"> <span class="normal105">使用XSL处理程序 
        </span></a></span></span></p>
      <p><span class="normal105"><span class="normal10"><br>
        </span><font face="宋体">一个Xsl样式表能生成两种类型的错误:解析错误和运行是错误.有方法能够检察报出这些错误.</font></span></p>
      <p><span class="normal105"><font face="宋体">下面是一个使用数据到来加载Xml文档和Xsl样式表以及能显示结果的简单HTML网页.</font></span></p>
      <pre class=clsCode><span class="normal105"><font face="Arial" class="normal105">&lt;HTML&gt;
  &lt;XML id="source" src="simple.xml"&gt;&lt;/XML&gt;
  &lt;XML id="style" src="simple.xsl"&gt;&lt;/XML&gt;
  &lt;SCRIPT event="onload" for="window"&gt;
    showResult.innerHTML = source.transformNode(style.XMLDocument);
  &lt;/SCRIPT&gt;
  &lt;BODY&gt;
    &lt;DIV id="showResult"&gt;&lt;/DIV&gt;
  &lt;/BODY&gt;
&lt;/HTML&gt;</font></span></pre>
      <p><span class="normal105"><font face="Arial"><b>transformNode</b></font>的调用触发了Xsl处理器,作为结果的HTML被插入到网页中去.但是为什么什么都没有发生呢?是因为一个错误在某处发生了,因此你必须检查是何处发生了错误.</span></p>
      <p> <span class="normal105"><b><font face="Arial">parseError</font></b><font face="Arial"> 
        </font>对象将被首先检查来确定是否在Xml文档和样式表里有解析错误.在数据岛上的解析错误不会在浏览器中生成生成错误消息.如果一个错误发生了,你可以找出原因并且设法恢复,<font color="#FF3366"><font color="#000000">或者在网页中抛出一个错误消息以便你能知道什么时候出错了.在下面的例子中,解析错误被检查出来</font></font><font color="#000000">;如果他们发生,一个函数将被调用来把错误信息格式化为适合于插入HTML文档的形式</font>.</span></p>
      <pre class=clsCode><span class="normal105"><font face="Arial" class="normal105">&lt;HTML&gt;
  &lt;HEAD&gt;
    &lt;TITLE&gt;Simple Error Message Demo&lt;/TITLE&gt;
  &lt;/HEAD&gt;
  
  &lt;XML id="source" src="review.xml"&gt;&lt;/XML&gt;
  &lt;XML id="style" src="review.xsl"&gt;&lt;/XML&gt;
  
  &lt;SCRIPT src="reportErrors.js"&gt;&lt;/SCRIPT&gt;
  &lt;SCRIPT event="onload" for="window"&gt;
    if (source.parseError.errorCode != 0)
      result = reportParseError(source.parseError);
    else
    {
      if (style.parseError.errorCode != 0)
        result = reportParseError(style.parseError);
      else
      {
        try {
          result = source.transformNode(style.XMLDocument);
        }
        catch (exception) {
          result = reportRuntimeError(exception);
        }
      }
    }
    // insert the results into the page
    showResult.innerHTML = result;
  &lt;/SCRIPT&gt;

  &lt;BODY&gt;
    &lt;DIV id="showResult"&gt;&lt;/DIV&gt;
  &lt;/BODY&gt;
&lt;/HTML&gt;</font></span></pre>
      <p><span class="normal105">除了解析错误,上面的例子还侦测了Xsl运行是错误(那些发生<b><font face="Arial">transformNode 
        </font></b><font face="宋体">调用中的错误) 运行时错误通常将会通过标准的Microsoft Internet Explorer5的error对话框来报告给用户.然而,通常更为有用的是禁止对话框,自己操纵错误消息,JavaScript5.0(与ECMA(欧洲计算机制造商协会)的262语言规范相一致) 
        <b> <font face="Arial">try</font></b>和<b><font face="Arial">catch</font></b>函数允许错误被禁止以及同解析错误同样的对待. 
        </font></span></p>
      <p><span class="normal105">在上面例子中错误消息实际的格式化操作是由两个函数提供的:<font face="Arial"><b>reportParseError</b></font>和 
        <b><font face="Arial">reportRuntimeError </font></b>,他们被保存在一个分离的脚本文件reportErrors.js中.而<font color="#0000">主HTML网页则要参考这个脚本文件</font>.</span></p>
      <pre class=clsCode><span class="normal105"><font face="Arial" class="normal105">// Parse error formatting function
function reportParseError(error)
{
  var s = "";
  for (var i=1; i&lt;error.linepos; i++) {
    s += " ";
  }
  r = "&lt;font face=Verdana size=2&gt;&lt;font size=4&gt;XML Error loading '" + 
      error.url + "'&lt;/font&gt;" +
      "&lt;P&gt;&lt;B&gt;" + error.reason + 
      "&lt;/B&gt;&lt;/P&gt;&lt;/font&gt;";
  if (error.line &gt; 0)
    r += "&lt;font size=3&gt;&lt;XMP&gt;" +
    "at line " + error.line + ", character " + error.linepos +
    "\n" + error.srcText +
    "\n" + s + "^" +
    "&lt;/XMP&gt;&lt;/font&gt;";
  return r;
}

// Runtime error formatting function
function reportRuntimeError(exception)
{
  return "&lt;font face=Verdana size=2&gt;&lt;font size=4&gt;XSL Runtime Error&lt;/font&gt;" +
      "&lt;P&gt;&lt;B&gt;" + exception.description + "&lt;/B&gt;&lt;/P&gt;&lt;/font&gt;";
}</font></span></pre>
      <p><span class="normal105">这两个函数返回的HTML片断能被用于插入HTML网也来代替正确的转换结果,警告你有个错误发生了并且能帮助你改正它.</span></p>
      <p><span class="normal105"><b>尝试!</b> 下面的例子在不同的错误情况下示范了上面的代码: </span>
      <ul>
        <li><span class="normal105"><a href="../../../msdn.microsoft.com/xml/samples/review/error-src.htm" tppabs="http://msdn.microsoft.com/xml/samples/review/error-src.htm">Error 
          Message Demo (XML Source Parsing Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-style.htm" tppabs="http://msdn.microsoft.com/xml/samples/review/error-style.htm">Error Message 
          Demo (XSL Style Sheet Parsing Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-runtime.htm" tppabs="http://msdn.microsoft.com/xml/samples/review/error-runtime.htm">Error 
          Message Demo (XSL Run-time Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-script.htm" tppabs="http://msdn.microsoft.com/xml/samples/review/error-script.htm">Error Message 
          Demo (XSL Script Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-none.htm" tppabs="http://msdn.microsoft.com/xml/samples/review/error-none.htm">Error Message 
          Demo (No Errors)</a> </span></li>
      </ul>
      <p></p>
      <p><span class="normal105"><a href="../../../msdn.microsoft.com/xml/samples/review/review-errors.zip" tppabs="http://msdn.microsoft.com/xml/samples/review/review-errors.zip"> 
        Download these samples</a>. </span></p>
      <p><span class="normal105">使用这样的机制来报错在Asp中也很有用.这里就是一个在服务器端处理Xml文档的等价代码</span></p>
      <pre class=clsCode><span class="normal105"><font face="Arial"><span class="normal105"><span class="normal105">&lt;%@ LANGUAGE = JScript %&gt;
&lt;%
  // Parse error formatting function
  function reportParseError(error)
  {
    var s </span>= "";
    for (var i=1; i&lt;error.linepos; i++) {
      s += " ";
    }
    r = "&lt;font face=Verdana size=2&gt;&lt;font size=4&gt;XML Error loading '" + 
        error.url + "'&lt;/font&gt;" +
        "&lt;P&gt;&lt;B&gt;" + error.reason + 
        "&lt;/B&gt;&lt;/P&gt;&lt;/font&gt;";
    if (error.line &gt; 0)
      r += "&lt;font size=3&gt;&lt;XMP&gt;" +
      "at line " + error.line + ", character " + error.linepos +
      "\n" + error.srcText +
      "\n" + s + "^" +
      "&lt;/XMP&gt;&lt;/font&gt;";
    return r;
  }

  // Run-time error formatting function
  function reportRuntimeError(exception)
  {
    return "&lt;font face=Verdana size=2&gt;&lt;font size=4&gt;XSL Runtime Error&lt;/font&gt;" +
        "&lt;P&gt;&lt;B&gt;" + exception.description + "&lt;/B&gt;&lt;/P&gt;&lt;/font&gt;";
  }

  // Set the source and style sheet locations here
  var sourceFile = Server.MapPath("review.xml");
  var styleFile = Server.MapPath("review-simple.xsl");
  
  // Load the XML 
  var source = Server.CreateObject("Microsoft.XMLDOM");
  source.async = false;
  source.load(sourceFile);

  // Load the XSL
  var style = Server.CreateObject("Microsoft.XMLDOM");
  style.async = false;
  style.load(styleFile);

  if (source.parseError.errorCode != 0)
    result = reportParseError(source.parseError);
  else
  {
    if (style.parseError.errorCode != 0)
      result = reportParseError(style.parseError);
    else
    {
      try {
        result = source.transformNode(style);
      }
      catch (exception) {
        result = reportRuntimeError(exception);
      }
    }
  }

  Response.Write(result);
%&gt;</span></font></span></pre>
      <p><span class="normal105">这段代码本质上来说和客户端代码时一致的,使用了相同的错误格式化函数和处理过程Server.CreateObject 
        和Response.Write方法使用代替了客户端由数据岛和innerHTML方法提供的功能</span></p>
      <p><span class="normal105"><b>尝试!</b> 下面的例子在不同的错误情况下示范了上面的代码: </span>
      <ul>
        <li><span class="normal105"><a href="../../../msdn.microsoft.com/xml/samples/review/error-src.asp" tppabs="http://msdn.microsoft.com/xml/samples/review/error-src.asp">ASP 
          Error Message Demo (XML Source Parsing Error)</a> </span>
        <li><span class="normal105"><a href="../../../msdn.microsoft.com/xml/samples/review/error-style.asp" tppabs="http://msdn.microsoft.com/xml/samples/review/error-style.asp">ASP 
          Error Message Demo (XSL Style Sheet Parsing Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-runtime.asp" tppabs="http://msdn.microsoft.com/xml/samples/review/error-runtime.asp">ASP Error 
          Message Demo (XSL Run-time Error)</a> </span>
        <li><span class="normal105"><a 
  href="../../../msdn.microsoft.com/xml/samples/review/error-script.asp" tppabs="http://msdn.microsoft.com/xml/samples/review/error-script.asp">ASP Error 
          Message Demo (XSL Script Error)</a> </span>
        <li><span class="normal105"><a href="../../../msdn.microsoft.com/xml/samples/review/error-none.asp" tppabs="http://msdn.microsoft.com/xml/samples/review/error-none.asp">ASP 
          Error Message Demo (No Errors)</a> </span></li>
      </ul>
      <p></p>
      <p><span class="normal105"><a 
href="../../../msdn.microsoft.com/xml/samples/review/review-errors-asp.zip" tppabs="http://msdn.microsoft.com/xml/samples/review/review-errors-asp.zip"><img 
alt=Download border=0 height=20 
src="Detecting and Handling XSL Errors.files/icodownl.gif" tppabs="http://www.xml.org.cn:8188/application/XSL%20uguid/Detecting%20and%20Handling%20XSL%20Errors.files/icodownl.gif" width=16> Download 
        these samples</a>. </span></p>
</td>
  </tr>
  <tr> 
    <td colspan="3"><font face="宋体" lang="ZH-CN" size=3> </font> <rev></rev><font face="宋体" lang="ZH-CN" size=3></font> 
      <hr size="1">
      <p align="center"><font face="宋体" lang="ZH-CN">[<a href="#top">返回标题</a>][<a href="../application.htm" tppabs="http://www.xml.org.cn:8188/application/application.htm" target="_parent">返回应用</a>][<a href="../../default.asp.htm" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>][<a href="mailto:xmlteam@egroups.com">欢迎投稿</a>]</font></p>
      <p align="center">最后更新:1999年9月15日<br>
        <font color="#FF0033" size="-1">本站点所刊文章版权,均归本站点所有。署名作者拥有其著作权。<br>
        未经</font><font color="#FF0033"><a href="mailto:xmlteam@egroups.com"><font color="#6666FF" size="-1">允许</font></a></font><font color="#FF0033" size="-1">,不得随意转载,违者必究!!</font> 
      </p>
    </td>
  </tr>
</table>
<h2 ALIGN="CENTER">&nbsp;</h2>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
<P ALIGN="JUSTIFY">&nbsp;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></FONT> 
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -