240 likes | 393 Views
eEI-XML 教學. Some rule of XML. All XML elements must have a closing tag <to>Tove <to>Tove</to> XML tags are case sensitive <Message>This is incorrect</message> <Message>This is correct</Message> All XML elements must be properly nested <aaa><bbb>this is incorrect</aaa></bbb>
E N D
Some rule of XML • All XML elements must have a closing tag <to>Tove <to>Tove</to> • XML tags are case sensitive <Message>This is incorrect</message> <Message>This is correct</Message> • All XML elements must be properly nested <aaa><bbb>this is incorrect</aaa></bbb> <aaa><bbb>this is correct</bbb></aaa>
Some rule of XML • All XML documents must have a root element • With XML, white space is preserved <root> <child> <subchild>.....</subchild> </child></root>
Some rule of XML • XML elements must follow these naming rules: • Names can contain letters, numbers, and other characters • Names must not start with a number or punctuation character • Names must not start with the letters xml (or XML or Xml ..) • Names cannot contain spaces
程式設計工具 • Microsoft Visual Studio 2005 • Microsoft Access 2003 (Office之後的版本,須另存成mdb檔)
建立Access資料庫 點擊兩下空白資料庫,新增一個資料庫
資料庫設計(新增資料表) 點擊此按鈕建立新資料表 點擊右鍵出現選單,選擇「檢視設計」後會跳出資料表名稱視窗,輸入名稱後點擊「確定」
資料庫設計(定義資料表) 輸入欄位名稱,定義資料類型
資料庫設計(資料表關聯設計) 點擊「資料庫關聯圖」,設計資料庫關聯
系統流程 Start 使用者登入 選擇購買產品 確定購買 輸入購買細節 進入購物清單 End 訂單資訊 輸出XML 讀取XML
系統畫面(登入) 輸入使用者帳號密碼後,點擊「登入」 使用資料表Account
系統畫面(產品清單) 資料庫關聯:「產品種類」對應到資料表Catalog內的CataID欄位
系統畫面(加入購物車) 點擊連結,將產品加入購物車內 選擇好要加入購物車產品後,點擊「進入購物清單」
系統畫面(訂購畫面) 輸入購買數量及交貨日期後,點擊「Buy」購買
系統畫面(訂單明細) 點擊XML檢視,產出XML資料交換格式
系統畫面(XML資料格式) 整張訂單範圍 訂單編號 使用者帳號 使用者姓名 訂購日期、交貨日期 購買產品清單 產品1及產品2 訂單總金額 交貨地址 聯絡電話
系統程式(XML字串產生語法) private void AssembleXML(string orderid, string[] productid, string[] product, string[] unitprice, string[] quan, string totalprice, string postcode, string address, string tel, string ordertime, string shippingtime) { string xmlstring = string.Empty; xmlstring = "<?xml version=\"1.0\" encoding=\"Big5\"?><Order><OrderID>" + orderid + "</OrderID><CustomerAccount>" + Session["Account"].ToString() + "</CustomerAccount><CustomerName>" + Session["AccountName"].ToString() + "</CustomerName><OrderDate>" + ordertime + "</OrderDate><ShippingDate>" + shippingtime + "</ShippingDate><BuyingProductList>"; for (int i = 0; i < product.Length; i++) { xmlstring += "<Product><ProductID>" + productid[i] + "</ProductID><ProductName>" + product[i] + "</ProductName><UnitPrice>" + unitprice[i] + "</UnitPrice><Quantity>" + quan[i] + "</Quantity></Product>"; } xmlstring += "</BuyingProductList><TotalPrice>" + totalprice + "</TotalPrice><ShippingAddress>" + postcode + " " + address + "</ShippingAddress><ContactTel>" + tel + "</ContactTel></Order>"; }
系統程式(XML字串寫入檔案語法) string xmlname = Session["Account"].ToString()+ "_" + orderid; string strFilePath = HttpContext.Current.Server.MapPath("~/orderXML/" + xmlname + ".xml").ToString(); string strFile = xmlstring; using (System.IO.FileStream fs = new System.IO.FileStream(strFilePath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite)) { using (System.IO.StreamWriter fileWrite = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding(950))) { fileWrite.Write(strFile); fileWrite.Flush(); } }
讀取XML檔 串聯XSL與HTML之頁面 XslCompiledTransform transform = new XslCompiledTransform(); transform.Load(Server.MapPath("order.xsl")); transform.Transform(Server.MapPath("orderXML/Customer.xml"), Server.MapPath("a.html")); Response.WriteFile(Server.MapPath("a.html"));
XSLT example <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <trbgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-eachselect="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template></xsl:stylesheet> • XML • <?xml version="1.0" encoding="ISO-8859-1"?> • <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> • <catalog> • <cd> • <title>Empire Burlesque</title> • <artist>Bob Dylan</artist> • <country>USA</country> • <company>Columbia</company> • <price>10.90</price> • <year>1985</year> • </cd> • . • . • . • </catalog>
Homework • 以每組為單位 • 寫出一範例產出XML檔 • 解釋所產出的XML檔內容 • 使用XSL讀取所產出的XML檔並顯示 • 繳交日期:Income報告完