`
txf2004
  • 浏览: 7132659 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

asp与XML(三)

阅读更多

IE 5.0如何支援XML呢?
IE 5.0支援XML,包括IE 5.0 XML Data Islands和Databinding,以及XSL(eXtensible Stylesheet Language)Stylesheets。

Databinding

將XML資料透過DSO(Data Source Object),可以將資料Databinding到html標記碼上。方法如下:

²     datasrc:定義資料來源。

²     datafld:定義欄位。

使用<xml src="booksorder.xml">方法以載入一個XML檔案booksorder.xml,如下:

<xml src="booksorder.xml" id="xmldso1" JavaDSOCompatible="true"></xml>

接著於<table>中由datasrc定義資料來源為剛才定義之DSO,如下:

<table …datasrc="#xmldso1"> 

每一個<span>中由datafld定義欄位為TITLE、AUTHOR、PUBLISHER、PRICE、QUANTITY,如下:

<table id="table" border="1" datasrc="#xmldso1"> 



<td valign="top"><span datafld="TITLE" dataformatas="HTML"></span></td> 

<td valign="top"><span datafld="AUTHOR" dataformatas="HTML"></span></td>



譬如HTML程式碼如下:

<table id="table" border="1" datasrc="#xmldso1"> 

<thead align="left"> 

   <th>Title</th> 

   <th>Author</th> 

   <th>Publisher</th> 

   <th>Price</th> 

   <th>Qty</th> 

</thead> 

<tr> 

 <td valign="top"><span datafld="TITLE"></span></td> 

 <td valign="top"><span datafld="AUTHOR"></span></td> 

 <td valign="top"><span datafld="PUBLISHER"></span></td> 

 <td valign="top" align="right"><span datafld="PRICE"></span></td> 

 <td valign="top" align="right"><span datafld="QUANTITY"></td> 

</tr> 

 

</table> 

 

<A Href="booksorder.xml" Target="_blank">XML Data 

 

<xml src="booksorder.xml" id="xmldso1" JavaDSOCompatible="true"></xml> 

其中所載入的booksorder.xml檔案內容如下:

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<booksorder>

 <book genre="網站設計">

  <TITLE>ASP網站熱門應用技術</TITLE>

  <AUTHOR>周世雄</AUTHOR>

  <QUANTITY>12</QUANTITY>

  <PRICE>580</PRICE>

  <PUBLISHER>華彩</PUBLISHER>

 </book>

 <book genre="網站設計">

  <TITLE>微軟熱門Web技術速成班</TITLE>

  <AUTHOR>周世雄</AUTHOR>

  <QUANTITY>10</QUANTITY>

  <PRICE>450</PRICE>

  <PUBLISHER>松崗</PUBLISHER>

 </book>



</booksorder>

又譬如HTML程式碼,如下:

<html>

<table id="table" datasrc="#xmldso1"> 

<tr><td valign="top"><div datafld="TITLE" dataformatas="HTML"></div></td></tr> 

<tr><td valign="top"><div datafld="AUTHOR" dataformatas="HTML"></div></td></tr> 

<tr><td valign="top"><div datafld="PUBLISHER" dataformatas="HTML"></div></td></tr> 

<tr><td valign="top"><div datafld="PRICE"></div></td></tr> 

<tr><td valign="top"><div datafld="QUANTITY"></div></td></tr> 

<tr><td ><hr/></td></tr> 

</table> 

 

<A Href="booksorder.xml" Target="_blank">XML Data 

 

<xml src="booksorder.xml" id="xmldso1" JavaDSOCompatible="true"></xml>

</html> 

每一個<DIV>中由datafld定義欄位為TITLE、AUTHOR、PUBLISHER、PRICE、QUANTITY。

階層式XML 

IE 5.0也支援階層式XML,譬如XML檔案內容如下:

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<ALLORDERID>

<ORDER>

<ORDERID>010314</ORDERID>

<ITEM>

  <ProductName>ASP網站熱門應用技術 </ProductName>

  <Quantity>6</Quantity>

  <UnitPrice>580</UnitPrice> 

</ITEM>

<ITEM>

  <ProductName>微軟熱門Web技術速成班</ProductName>

  <Quantity>6</Quantity>

  <UnitPrice>450</UnitPrice> 

</ITEM>

</ORDER>

<ORDER>

<ORDERID>010529</ORDERID>

<ITEM>

  <ProductName>動態網頁設計 99 招 PART 2</ProductName>

  <Quantity>6</Quantity>

  <UnitPrice>430</UnitPrice> 

</ITEM>

</ORDER>

<ORDER>

<ORDERID>010212</ORDERID>

<ITEM>

  <ProductName>微軟熱門Web技術速成班</ProductName>

  <Quantity>2</Quantity>

  <UnitPrice>450</UnitPrice> 

</ITEM>

<ITEM>

  <ProductName>ASP網站熱門應用技術 </ProductName>

  <Quantity>9</Quantity>

  <UnitPrice>580</UnitPrice> 

</ITEM>

</ORDER>



</ALLORDERID>

讓我們看一個例子,譬如HTML程式碼如下:

<html>

 

<table datasrc="#xmldso"> 

<tr> 

<td>ORDERID: <span datafld="ORDERID"></span></td> 

</tr> 

<tr><td>

 

<table class="order" border="1" datasrc="#xmldso" datafld="ITEM"> 

<thead><th>產品</th><th>價格</th><th>數量</th></thead> 

<tr><td><span datafld="ProductName"></span></td> 

<td><span datafld="UnitPrice"></span></td> 

<td><span datafld="Quantity"></span></td> 

</tr> 

</table> 

 

</td></tr>

</table>

 

<xmp id="error"></xmp> 

<A Href="booksorder3.xml" Target="_blank">XML Data 

 

<xml src="booksorder3.xml" id="xmldso" JavaDSOCompatible="true"></xml>

 

</html>

使用<xml src="booksorder3.xml">方法以載入一個XML檔案booksorder3.xml,接著於<table>中由datasrc定義資料來源為剛才定義之DSO,<span>中由datafld定義欄位為ORDERID;再於所包括的<table>中由datasrc定義資料來源為剛才定義之DSO,每一個<span>中由datafld定義欄位為ProductName、UnitPrice、Quantity。

Recordset

將XML資料透過DSO(Data Source Object),可以將資料Databinding到html標記碼上,Data Source Object可使用Recordset方法如下:

&sup2;     rs.MoveNext():移到下一筆資料。

&sup2;     rs.MovePrevious():移到上一筆資料。

&sup2;     rs.MoveFirst():移到第一筆資料。

&sup2;     rs.MoveLast():移到第末筆資料。

&sup2;     rs.(“欄位名稱”):欄位值。

&sup2;     rs.AddNew():新增。

&sup2;     rs.Update():修改。

&sup2;     rs.Delete():刪除。

HTML程式碼如下:

<html>

<table id="table" border="1" datasrc="#xmldso1"> 

<thead align="left"> 

   <th>Title</th> 

   <th>Author</th> 

   <th>Publisher</th> 

   <th>Price</th> 

   <th>Qty</th> 

</thead> 

<tr> 

 <td valign="top"><span datafld="TITLE" dataformatas="HTML"></span></td> 

 <td valign="top"><span datafld="AUTHOR" dataformatas="HTML"></span></td> 

 <td valign="top"><span datafld="PUBLISHER" dataformatas="HTML"></span></td> 

 <td valign="top" align="right"><span datafld="PRICE"></span></td> 

 <td valign="top" align="right"><input type="text" size="10" datafld="QUANTITY" dataformatas="HTML" onblur="DoCalc();"/></td> 

 

</tr> 

<tfoot> 

   <th></th> 

   <th></th> 

   <th></th> 

   <th align="right">Total</th> 

   <th><span id="total"></span></th> 

</tfoot> 

</table> 

 

<xmp id="error"></xmp> 

 

<A Href="booksorder.xml" Target="_blank">XML Data 

 

<xml src="booksorder.xml" id="xmldso1" JavaDSOCompatible="true"></xml> 

 

<script> 

function DoCalc() 

{ 

  doc = xmldso1.XMLDocument; 

  if(doc.documentElement == null) 

    error.innerText = doc.parseError.reason; 

  else 

{ 

  var rs = xmldso1.recordset; 

  rs.MoveFirst(); 

  var t= 0; 

  while(! rs.eof) 

  { 

    t+= rs("QUANTITY")* rs("PRICE"); 

    rs.MoveNext(); 

  } 

  t = parseInt(t*100)/100; 

  tspan = document.all("total"); 

  if(tspan) 

  { 

    tspan.innerText = t; 

  } 

  return t; 

} 

} 

 

</script>  

</html>

當於Qty欄位輸入後離開時將執行DoCalc()函數,使用rs.MoveFirst()方法移到第一筆資料和rs.MoveNext()方法移到下一筆資料,由rs("QUANTITY")* rs("PRICE")以計算總和。

<object…>

除了如上例直接由<xml src=…>載入一個XML檔案的方法外,也可以使用DSO(Data Source Object)ActiveX Control和使用doc.load("booksorder.xml")方法以載入一個XML檔案。

使用DSO(Data Source Object)ActiveX Control方法以載入一個XML檔案,如下:

<object width="0" height="0" classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" id="xmldso1" ></object>

<script for="window" event="onload">

  xmldso1.JavaDSOCompatible = true;

  var doc = xmldso1.XMLDocument;

  doc.load("booksorder.xml");

  if(doc.parseError.errorCode != 0)

    error.innerText = doc.parseError.reason;

</script>

讓我們再看一個例子,譬如HTML程式碼如下:

<html>

<body>

<object width="0" height="0" classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" id="xmldso1" >

</object>

 

<script for="window" event="onload">

  xmldso1.JavaDSOCompatible = true;

  var doc = xmldso1.XMLDocument;

  doc.load("booksorder.xml");

  if(doc.parseError.errorCode != 0)

    error.innerText = doc.parseError.reason;

</script>

 

<table>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="TITLE"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="AUTHOR"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="PUBLISHER"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="PRICE"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="QUANTITY"></div></td></tr>

<tr><td ><hr/></td></tr>

</table>

 

<xmp id="error"></xmp>

<button onclick="xmldso1.recordset.moveprevious();">上一筆</button>

<button onclick="xmldso1.recordset.movenext();">下一筆</button>

<A Href="booksorder.xml" Target="_blank">XML Data

</body>

</html>

按下「下一筆」按鈕時,顯示下一筆資料。

說明如下,首先使用一個XML之DSO(Data Source Object)ActiveX Control,如下:

<object width="0" height="0" classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" id="xmldso1" >

</object>

var doc = xmldso1.XMLDocument定義doc為剛才DSO之XML文件,以使用XML Parser,再使用doc.load("booksorder.xml")方法以載入一個XML檔案booksorder.xml,由parseError.errorCode可以得知是否載入錯誤,若有錯誤,由parseError.errorCode得知錯誤碼,若不等於0表示有錯誤,parseError.reason得知錯誤原因。

接著於每一個<div>中由datasrc定義資料來源為剛才定義之DSO,由datafld定義欄位為TITLE、AUTHOR、PUBLISHER、PRICE、QUANTITY,如下:

<table>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="TITLE"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="AUTHOR"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="PUBLISHER"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="PRICE"></div></td></tr>

<tr><td valign="top"><div datasrc="#xmldso1" datafld="QUANTITY"></div></td></tr>

<tr><td ><hr/></td></tr>

</table>

即可顯示一筆XML資料。

按下「下一筆」按鈕時,使用recordset.movenext()方法,顯示下一筆資料;按下「上一筆」按鈕時,使用recordset.moveprevious()方法,顯示上一筆資料,如下:

<button onclick="xmldso1.recordset.moveprevious();">上一筆</button>

<button onclick="xmldso1.recordset.movenext();">下一筆</button>

新增修改刪除

讓我們再看一個新增修改刪除的例子,譬如HTML程式碼如下:

<html>

<table border="2" cellpadding="3" align="left" bordercolordark="#000000" bordercolorlight="#C0C0C0"> 

<tr><td width="100">TITLE</td> 

<td><input type="text" size="50" datasrc="#xmldso" datafld="TITLE"/></td> 

</tr><tr><td width="100">AUTHOR</td> 

<td><input type="text" size="50" datasrc="#xmldso" datafld="AUTHOR"/></td> 

</tr><tr><td width="100">PUBLISHER</td> 

<td><input type="text" size="50" datasrc="#xmldso" datafld="PUBLISHER"/></td> 

</tr><tr><td width="100">PRICE</td> 

<td><input type="text" size="50" datasrc="#xmldso" datafld="PRICE" /></td> 

</tr><tr><td width="100">QUANTITY</td> 

<td><input type="text" size="50" datasrc="#xmldso" datafld="QUANTITY" /></td> 

</tr> 

</table> 

 

<br clear="all"/> 

 

<button onclick="xmldso.recordset.movefirst();">第一筆</button> 

<button onclick="xmldso.recordset.moveprevious();">上一筆</button> 

<button onclick="xmldso.recordset.movenext();">下一筆</button> 

<button onclick="xmldso.recordset.movelast();">最末筆</button> 

<button onclick="xmldso.recordset.AddNew();">新增</button> 

<button onclick="xmldso.recordset.Update();">修改</button> 

<button onclick="xmldso.recordset.Delete();">刪除</button>

 

<xmp id="error"></xmp> 

<A Href="booksorder.xml" Target="_blank">XML Data 

 

<xml src="booksorder.xml" id="xmldso" JavaDSOCompatible="true"></xml>

 

</html>

按下「第一筆」、「上一筆」、「下一筆」、「最末筆」、「新增」、「修改」、「刪除」按鈕時,使用movefirst()、moveprevious()、movenext()、movelast()、AddNew()、Update()、Delete()方法,如下:

<button onclick="xmldso.recordset.movefirst();">第一筆</button> 

<button onclick="xmldso.recordset.moveprevious();">上一筆</button> 

<button onclick="xmldso.recordset.movenext();">下一筆</button> 

<button onclick="xmldso.recordset.movelast();">最末筆</button> 

<button onclick="xmldso.recordset.AddNew();">新增</button> 

<button onclick="xmldso.recordset.Update();">修改</button> 

<button onclick="xmldso.recordset.Delete();">刪除</button>

Data Islands範例 

IE 5.0支援Data Islands,可於數個XML檔案中切換資料,譬如XML檔案內容如下:

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<bookstore>

 <book genre="網站設計">

  <title>ASP網站熱門應用技術</title>

  <author>

   <first-name>世雄</first-name>

   <last-name>周</last-name>

  </author>

  <price>580</price>

  <publisher>華彩</publisher>

 </book>

 <book genre="網站設計">

  <title>微軟熱門Web技術速成班</title>

  <author>

   <first-name>世雄</first-name>

   <last-name>周</last-name>

  </author>

  <price>450</price>

  <publisher>松崗</publisher>

 </book>

 <book genre="網頁設計">

  <title>動態網頁設計 99 招 PART 2</title>

  <title>動態網頁設計 99 招 PART 3</title>

  <author>

   <first-name>世雄</first-name>

   <last-name>周</last-name>

  </author>

  <price>430</price>

  <publisher>第三波</publisher>

 </book>

 

</bookstore>

XML檔案內容如下:

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<xml>

<book>

  <title>動態網頁設計 99 招 PART 2</title>

  <author>周世雄</author>

  <price>430</price>

  <publisher>第三波</publisher>

 </book>

<book>

  <title>動態網頁設計 99 招 PART 3</title>

  <author>周世雄</author>

  <price>430</price>

  <publisher>第三波</publisher>

 </book>

</xml>

學會了嗎?

WebFlow

筆者參予設計的WebFlow辦公室自動化流程系統軟體,也推出了Windows 2000版本,運用了Windows 2000的IIS 5.0、ADSI、COM+、Certificate Services等技術,有興趣的讀者可上網www.asp.com.tw下載試用。另外,探討IIS 5.0的新書「IIS 5.0超級網站速成班」也將出版。

分享到:
评论

相关推荐

    ASP与XML高级编程 pdf

    2. **XML语法与解析**:讲解XML的基本元素、属性、命名空间等概念,以及如何使用DOM(Document Object Model)、SAX(Simple API for XML)等解析器在ASP中解析XML文件。 3. **ASP与XML结合应用**:展示如何在ASP中...

    Asp与XML的关系

    【Asp与XML的关系】 XML(可扩展标记语言)是一种用于存储结构化数据的文本格式,它不涉及数据处理或表现形式,而是专注于数据的组织和传输。XML的设计宗旨是传输和存储数据,而非显示数据,因此它并不执行任何程序...

    ASP与XML高级编程(PDG)

    3. ASP与XML结合:探讨如何在ASP中创建和读取XML文件,以及如何使用ASP的XML对象模型处理XML数据。 4. 数据绑定和XML数据源:讲述如何将XML数据绑定到ASP控件,实现在网页上动态展示XML内容。 5. XSLT和XPath:介绍...

    《ASP与XML高级编程》源码

    《ASP与XML高级编程》源码 wrox出版社出版, 文件列表 Chapter 03 ..........\contacts.xml ..........\invalid_contacts.xml ..........\update_booklist.xml ..........\Verifire.asp Chapter 05 ............

    XML概述及与ASP

    XML与ASP的结合可以实现高效的数据交换和展示。通过将XML作为数据源,ASP可以轻松地解析这些数据并将其呈现到网页上。这种组合的优势在于可以实现数据和表现层的分离,从而提高了网站的可维护性和扩展性。 #### ASP...

    asp.net xml高级编程 c#编程篇

    在ASP.NET环境中,XML与C#的结合使得开发人员能够构建更强大、更灵活的应用程序。 1. **XML基础**: - XML语法:了解XML的基本结构,包括元素、属性、注释、处理指令和文档类型定义(DTD)或XML Schema(XSD)。 ...

    Asp xmldom解析XML

    在ASP(Active Server Pages)开发中,XMLDOM(XML Document Object Model)对象是处理XML文档的强大工具。XMLDOM提供了一种标准的方式来解析、修改和操作XML数据,它遵循W3C DOM规范。在这个示例中,我们将深入探讨...

    asp添加删除xml信息

    本篇文章将深入探讨如何在ASP中添加和删除XML信息,以及与之相关的知识点。 **1. ASP与XML的基础知识** - **ASP基础**: ASP文件是包含服务器端脚本的HTML页面,这些脚本在服务器上执行,然后将结果发送到客户端...

    ASP.NET_XML深入编程技术

    与传统的DOM和XPath相比,LINQ to XML提供了一种更直观、类型安全的方式来创建、查询和修改XML文档。 4. **XPath和XSLT**:XPath是用于在XML文档中查找信息的语言,而XSLT则用于转换XML文档。ASP.NET提供了...

    flash+asp+xml留言本教程 flash+asp+xml留言本教程

    Flash以其出色的动画效果和交互性,ASP作为后台处理程序,XML则负责数据的存储和交换,三者结合可以实现一个高效、易于维护的解决方案。 首先,让我们了解Flash在其中的作用。Flash是一种强大的多媒体创作工具,...

    利用asp连接xml添加修改删除

    总结一下,ASP与XML的结合使得开发者能够轻松地在服务器端处理和管理结构化的数据。通过学习和实践这些操作,你不仅可以提升Web开发技能,还能为构建更高效、灵活的Web应用程序打下坚实的基础。

    asp与xml开发案例

    当ASP与XML结合时,可以构建出强大的Web应用程序,因为XML提供了数据的组织和传输,而ASP则负责处理这些数据并生成动态内容。 在“asp与xml开发案例”中,我们将会深入学习如何利用XML作为数据存储和传输的载体,...

    ASP读XML的最简单方法

    在ASP中,处理XML文件是常见的数据交互方式之一。XML(eXtensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本文将详细介绍如何在ASP中以最简单的方式读取XML文件。 首先,我们需要了解ASP...

    asp.net和xml教程

    在.NET环境中,ASP.NET经常与XML一起使用,实现数据的存储、读取和传输。XML可以作为数据源,供ASP.NET页面进行数据绑定,展示在网页上。ASP.NET也提供了许多内置的类和方法,如XmlDocument、XDocument(LINQ to XML...

    ASP+XML+CSS

    在"精通ASP+XML+CSS网络混合开发教程源码"中,你将学习如何结合这三种技术来创建高效、交互性强的Web应用。ASP负责处理服务器端逻辑,XML可以用来存储和传递数据,而CSS则用于美化和布局。通过这样的混合开发,你...

    XML与ASP网站实作大全(非常好)

    《XML与ASP网站实作大全》是一本深入探讨XML(Extensible Markup Language)在ASP(Active Server Pages)环境中应用的全面教程。XML是一种用于标记数据的语言,它具有自定义标记和结构化的特性,使得数据传输和处理...

    ASP.NET XML with C# 源代码

    ASP.NET XML with C# 是一个重要的开发主题,它涉及到如何在ASP.NET环境中使用C#语言处理XML数据。XML(eXtensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据,尤其是在Web服务和应用程序之间...

    ASP与XML 高级编程

    ASP(Active Server Pages)与XML(eXtensible Markup Language)是两种在Web开发中广泛使用的技术。ASP是一种服务器端脚本环境,用于创建动态、交互式的网页,而XML则是一种数据交换和存储的标准,强调数据的结构化...

    Asp.net操作XML源码

    "from.gif"可能是与教程相关的图片,而"最新Asp.Net源码下载.url"则可能指向更多Asp.net资源的链接。 总之,Asp.net提供了丰富的API来处理XML,无论是简单的读取、写入,还是复杂的查询和操作,都能轻松应对。通过...

    ASP.NET 2.0 XML高级编程

    4. **ADO.NET Data Services和XML数据绑定**:书中会探讨如何使用ADO.NET与XML数据源交互,以及如何在ASP.NET控件中实现XML数据的绑定,以构建动态的Web应用。 5. **Web服务和SOAP**:XML是Web服务的主要通信协议,...

Global site tag (gtag.js) - Google Analytics