Xây Dựng Giao Diện Người Sử Dụng Dựa Vào Xml.

Trích dữ liệu từ một tài liệu XML và sử dụng dữ liệu này để cập nhật hay xóa giá trị của các cột/thuộc tính tương ứng hoặc cả hai.

XSU sử dụng luật ánh xạ dựa trên kết quả, gọi là SQL-XML. Chuyển câu truy vấn SQL sau sang XSU:

SELECT Employee_ID, First_Name, Last_Name FROM Employee

ORDER BY Employee_ID Kết quả như sau: xsu_generated_xml1.xml


<?xml version="1.0"?>

<ROWSET>

<ROW num="1">

<EMPLOYEE_ID>1</EMPLOYEE_ID>

<FIRST_NAME>Sean</FIRST_NAME>

Có thể bạn quan tâm!

Xem toàn bộ 258 trang tài liệu này.

<LAST_NAME>Chai</LAST_NAME>

</ROW>

<ROW num="2">

<EMPLOYEE_ID>2</EMPLOYEE_ID>

<FIRST_NAME>Aaron</FIRST_NAME>

<LAST_NAME>Con</LAST_NAME>

</ROW>

<ROW num="3">

<EMPLOYEE_ID>3</EMPLOYEE_ID>

<FIRST_NAME>Andrew</FIRST_NAME>

<LAST_NAME>Dixon</LAST_NAME>

</ROW>

<ROW num="4">

<EMPLOYEE_ID>4</EMPLOYEE_ID>

<FIRST_NAME>Ted</FIRST_NAME>

<LAST_NAME>Bremer</LAST_NAME>

</ROW>

<ROW num="5">

<EMPLOYEE_ID>5</EMPLOYEE_ID>

<FIRST_NAME>Randall</FIRST_NAME>

<LAST_NAME>Boseman</LAST_NAME>

</ROW>

<ROW num="6">

<EMPLOYEE_ID>6</EMPLOYEE_ID>

<FIRST_NAME>Jane</FIRST_NAME>

<LAST_NAME>Clayton</LAST_NAME>

</ROW>

<ROW num="7">

<EMPLOYEE_ID>7</EMPLOYEE_ID>

<FIRST_NAME>Peter</FIRST_NAME>

<LAST_NAME>Connelly</LAST_NAME>

</ROW>

<ROW num="8">

<EMPLOYEE_ID>8</EMPLOYEE_ID>

<FIRST_NAME>Eva</FIRST_NAME>

<LAST_NAME>Cosets</LAST_NAME>

</ROW>

<ROW num="9">

<EMPLOYEE_ID>9</EMPLOYEE_ID>

<FIRST_NAME>Nate</FIRST_NAME>

<LAST_NAME>Sun</LAST_NAME>

</ROW>

</ROWSET>

Với ánh xạ mặc định, phần tử gốc là <ROWSET>, nó chứa nhiều phần tử con <ROW>, mỗi một phần tử sẽ chứa một dòng trong tập kết quả. <ROW> có một thuộc tính gọi là num và nó chỉ chỉ số dòng logic của các bản ghi.

Phát sinh các tài liệu XML

Để phát sinh các tài liệu XML từ các tập kết quả, chúng ta cần phải viết mã lệnh Java. Tất cả các chức năng liên quan đến việc phát sinh các tài liệu XML được cung cấp bởi lớp oracle.xml.sql.query.OracleXMLQuery. Các bước cần phải có để phát sinh một tài liệu XML là:

Kết nối cơ sở dữ liệu Oracle.

Tạo một thể hiện của lớp OracleXMLQuery và chuyển tham số là một câu lệnh SQL ở dạng chuỗi java.lang.String, một java.sql.ResultSet, hay một oracle.xml.sql.dataset.OracleXMLDataSet.

Thàn phần tùy chọn giống như một tập kết quả khác, tên dòng hay cả hai, định nghĩa định dạng ngày hay thậm chí là chỉ định một tiêu đề kiểu dáng.

Nhận tài liệu XML. Chúng ta có thể nhận một chuỗi hay một mô tả DOM của tài liệu XML này bằn cách gọi getDOM() hay getXML().

Giải phóng bằng cách gọi phương thức close().

Đoạn mã lệnh Java sau sẽ sử dụng XSU để phát sinh một tài liệu XML từ một truy vấn. xsu_select.java

import java.sql.*;

import oracle.jdbc.driver.*; import oracle.xml.sql.query.*;

/* class to test the String generation! */ public class XSU_Select

{

public static void main( String argv[] ) throws Exception

{

/* connect to Oracle */

DriverManager.registerDriver( new oracle.jdbc.driver.

OracleDriver() );

Connection conn = DriverManager.getConnection( "jdbc:oracle:oci8:@", "scott", "tiger" );

/* setup the SQL string */

String sqlStr = "SELECT Last_Name || ', ' || First_Name Employee_Name, Dept_Name" +

" FROM Employee, Dept" +

" WHERE Employee.Dept_No = Dept.Dept_No" + " ORDER BY Employee_ID";

/* initiate an OracleXMLQuery with our SQL string */ OracleXMLQuery qry = new OracleXMLQuery( conn, sqlStr );

/* get the generated XML string */ String xmlStr = qry.getXMLString();

/* output the XML string to the console */ System.out.println( xmlStr );

/* always remember to close the OracleXMLQuery object after use

*/

qry.close();

}

}

Kết quả như sau: xsu_select.xml

<?xml version="1.0"?>

<ROWSET>

<ROW num="1">

<EMPLOYEE_ID>1</EMPLOYEE_ID>

<EMPLOYEE_NAME>Chai, Sean</EMPLOYEE_NAME>

<DEPT_NAME>IT</DEPT_NAME>

</ROW>

<ROW num="2">

<EMPLOYEE_ID>2</EMPLOYEE_ID>

<EMPLOYEE_NAME>Con, Aaron</EMPLOYEE_NAME>

<DEPT_NAME>IT</DEPT_NAME>

</ROW>

<ROW num="3">

<EMPLOYEE_ID>3</EMPLOYEE_ID>

<EMPLOYEE_NAME>Dixon, Andrew</EMPLOYEE_NAME>

<DEPT_NAME>Marketing</DEPT_NAME>

</ROW>

<ROW num="4">

<EMPLOYEE_ID>4</EMPLOYEE_ID>

<EMPLOYEE_NAME>Bremer, Ted</EMPLOYEE_NAME>

<DEPT_NAME>HR</DEPT_NAME>

</ROW>

<ROW num="5">

<EMPLOYEE_ID>5</EMPLOYEE_ID>

<EMPLOYEE_NAME>Boseman, Randall</EMPLOYEE_NAME>

<DEPT_NAME>Accounting</DEPT_NAME>

</ROW>

<ROW num="6">

<EMPLOYEE_ID>6</EMPLOYEE_ID>

<EMPLOYEE_NAME>Clayton, Jane</EMPLOYEE_NAME>

<DEPT_NAME>IT</DEPT_NAME>

</ROW>

<ROW num="7">

<EMPLOYEE_ID>7</EMPLOYEE_ID>

<EMPLOYEE_NAME>Connelly, Peter</EMPLOYEE_NAME>

<DEPT_NAME>Marketing</DEPT_NAME>

</ROW>

<ROW num="8">

<EMPLOYEE_ID>8</EMPLOYEE_ID>

<EMPLOYEE_NAME>Corets, Eva</EMPLOYEE_NAME>

<DEPT_NAME>HR</DEPT_NAME>

</ROW>

<ROW num="9">

<EMPLOYEE_ID>9</EMPLOYEE_ID>

<EMPLOYEE_NAME>Sun, Nate</EMPLOYEE_NAME>

<DEPT_NAME>Operations</DEPT_NAME>

</ROW>

</ROWSET>

Lưu trữ dữ liệu XML

XSU cũng có thể được sử dụng để chèn dữ liệu XML vào các bảng, cập nhật các bảng hiện có với dữ liệu trích từ các tài liệu XML, và xóa các dòng từ bảng dựa trên giá trị phần tử lưu trữ trong tài liệu XML. Các phương thức được cung cấp trong lớp oracle.xml.sql.dml.OracleXMLSave. Để sử dụng, chúng ta theo các bước sau:

Tương tự như trên, chúng ta xét ví dụ sau để chèn dữ liệu XML vào một bảng: xsu_insert.java


import java.sql.*;

import oracle.jdbc.driver.*; import oracle.xml.sql.dml.*; public class XSU_Insert

{

public static void main( String argv[] ) throws Exception

{

/* connect to Oracle */

DriverManager.registerDriver( new oracle.jdbc.driver.

OracleDriver() );

Connection conn = DriverManager.getConnection( "jdbc: oracle:oci8:@", "scott", "tiger" );

/* instantiate the OracleXMLSave object and specify that we will be inserting into the Employee table */

OracleXMLSave sav = new OracleXMLSave( conn, "Employee" );

/* setup the XML string */

String xmlStr = "<?xml version="1.0"?>" + "<ROWSET>" +

" <ROW num="1">" +

" <EMPLOYEE_NO>10</EMPLOYEE_NO>" + " <FIRST_NAME>Joshua</FIRST_NAME>" + " <LAST_NAME>Lehman</LAST_NAME>" +

" <DEPT_NO>5</DEPT_NO>" + " </ROW>" +

"</ROWSET>";

/* insert the row */ sav.insertXML( xmlStr );

/* always remember to close the OracleXMLSave object after use */ sav.close();

}

}

II. Phát triển Web

XML tạo công việc xuất bản dễ dàng hơn trước đây khi mà các lập trình viên web chỉ đơn độc trên HTML. Để biết được làm thế nào để XML có thể giúp, chúng ta có thể xem xét một cách ngắn gọn về lịch sử xuất bản Web và xem sự ảm đạm trước khi XML xuất hiện.

Khi một trang Web bắt đầu khởi động, người thiết kế không có nhiều lựa chọn trong trong các ngôn ngữ thiết kế Web. Người thiết kế tạo các trang Web tĩnh sử dụng HTML. HTML có một số thành phần thật hấp dẫn. Nó bao gồm rich, plain text dễ dàng cho chuyển đổi, lưu trữ và hiển thị. Cộng với sự hiểu biết về kiểu dáng liên hoàn (Cascading Style Sheets -CSS) và vận dụng bảng, một trang web hoàn chỉnh có thể được xem giống như một tài liệu.

Tuy nhiên, HTML là trang web tĩnh. Sự bùng bổ về thương mại điện tử yêu cầu nội dung trang web phải động. Giá chứng khoán, giá sách, thông tin tồn kho yêu cầu hiển thị trực tiếp. Với những thay đổi bởi Common Gateway Interface (CGI), người phát triển có thể lập trình và tạo kịch bản, cài làm máy chủ và chạy chương một máy chủ web, để tạo ra các trang HTML động. Chương trình có thể xử lý dữ liệu, truy vấn cơ sở dữ liệu và xây dựng kết quả động.

CGI mở ra một con đường mới cho một kỹ thuật khác, chẳng hạn như Microsoft Active Server Pages (ASP), Allaire’s ColdFusion, và rất nhiều máy chạy script phía server khác. Những công nghệ này có nhiều cải tiến đáng kể cho với CGI như hoạt động, phân rãnh và chuyển qua lại thông qua đa tuyến trình để tạo một xử mới mỗi khi có sự yêu cầu CGI. Các kịch bản bây giờ có thể nhúng trực tiếp trong mã lệnh HTML. Những công cụ này cũng tạo các truy cập cơ sở dữ liệu dễ dàng hơn với người phát triển. Một điều bất ngờ là kho chứa dữ liệu có thể được truy vập và cập nhật trực tuyến.

XML hữu ích cho dẫn hướng tang web. Trong ví dụ sau, mỗi phần tử <navitem> chứa một desciption, một hoặc nhiều image, một hyperlink để liên kết đến một tài liệu khác, và một danh sách tùy chọn các phần tử con.

Navigation.xml: Một dẫn hướng (navigation) web đơn giản

<?xml version="1.0"?>

<navigation type="tree">

<description>XML (Extensible Markup Language)</description>

<openImage>/xmlbook/images/general/open.gif</openImage>

<closedImage>/xmlbook/images/general/closed.gif</closedImage>

<href target="detail">item2.htm</href>

<navitem>

<description>What's New</description>

<image>/xmlbook/images/general/item.gif</image>

<href target="detail">item2.htm</href>

</navitem>

<navitem>

<description>Copyright and Legal Information</description>

<image>/xmlbook/images/general/item.gif</image>

<href target="detail">item2.htm</href>

</navitem>

<navitem>

<description>XML Developer's Guide</description>

<openImage>/xmlbook/images/general/open.gif</openImage>

<closedImage>/xmlbook/images/general/closed.gif</closedImage>

<href target="detail">item1.html</href>

<children>

<navitem>

<description>Introduction to XML</description>

<openImage>/xmlbook/images/general/open.gif</openImage>

<closedImage>/xmlbook/images/general/closed.gif</closedImage>

<href target="detail">item1.htm</href>

<children>

<navitem>

<description>Advantages of the XML Format</description>

<image>/xmlbook/images/general/item.gif</image>

<href target="detail">item1.htm</href>

</navitem>

<navitem>

<description>Creating a Simple XML Document</description>

<image>/xmlbook/images/general/item.gif</image>

<href target="detail">item1.htm</href>

</navitem>

<navitem>

<description>Displaying the File in Internet xplorer

</description>

<image>/xmlbook/images/general/item.gif</image>

<href target="detail">item1.htm</href>

</navitem>

</children>

</navitem>

</children>

</navitem>

. . . .

</navigation>

Ngoài ra chúng ta có thể dùng các kiểu dáng liên hoàn xslt và css để thiết kế 1

Ngoài ra, chúng ta có thể dùng các kiểu dáng liên hoàn xslt và css để thiết kế giao diện cho trang Web cũng như có thể dùng schema để tiến hành ràng buộc dữ liệu cho các phần tử tài liệu XML.

III. Xây dựng giao diện người sử dụng dựa vào XML.

Các nhà phát triển phần mềm đã có những nỗ lực lớn để tạo các giao diện người dùng (UI) từ khi mới tính ra đời, những giao diện này luôn luôn được mở rộng, thậm chí khi một số tác vụ hoạt động cùng một lúc. Một ví dụ dễ thấy rằng chúng ta có thể xem xử lý của hệ điều hành của Microsoft. Từ MS-DOS đến Windows 3 rồi đến Windows XP, microsoft đã cải tiến rất nhiều tác vụ như cài đặt, quản lý va thực thi ứng dụng đê nó được thực hiện dễ dáng hơn.

Do vậy, các UI cho ứng dụng để bàn và kinh doan đã có sự thay đổi theo thời gian. Sự tiến bộ tính toán của những máy tính nhanh hơn và phần cứng đồ họa đã cho phép tạo các ứng dụng đồ họa lớn hơn. MCF (Microsoft Foundation Classes) là công cụ cho các nhà phát triển với một công cụ chuẩn, các thành phần UI mạnh. Bằng cách sử dụng các công cụ này, việc phát triển rất dễ dàng như kéo và thả, cắt và dán, đa phương tiện và các sự kiện.

Trong nội dung của phần này, chúng ta bàn về phương pháp là thế nào mà XML có thể trợ giúp được giao diện cho trang web.

Mộ hình một giao diện trong XML

Điều quan trọng của một giao diện hiệu quả là tính phù hợp bởi vì một ứng dụng với một kết hợp phù hợp sẽ dễ để học và sử dụng. Một UI phù hợp cũng phải trực quan.

Sau tính chắc chắn, nhìn và sờ (look and feel) của một UI của ứng dụng cũng là tính năng rất mạnh. Theo lẽ tự nhiên, người sử dụng có thể thấy hình ảnh hiển thị trước và đó là những hình vẽ thật ấn tượng. Nó có nghĩa là, người phát triển phần mềm phải phát triển một giao diện nhìn sắc và phù hợp trong sự trình diễn trực quan của nó.

XML có thể giúp để người phát triển có thể tạo được các yêu cầu trên. Sau đây là một số yêu cầu:

- Layout (Bố cục)

Một bố cục của giao diện ứng dụng phân phối vị trí của những nội dung. Thông tin phải được trình diễn sao cho dễ để tìm kiếm, dễ quản lý và phân tích. Dữ liệu phải được trình diễn ở nơi trống trải, dễ dọn dẹp.

- Navigation (Dẫn hướng)

Một dẫn hướng là một lược đồ mô tả sự tiếp dẫn của ứng dụng. Người sử dụng phải có thể tìm thấy các chức năng hoặc chọn một mục nhanh chóng và trực quan. Các chức năng tương tự phải được gộp thành một nhom để dễ dàng truy cập. Các phần tử dẫn hướng không được xây dựng lại chính nó.

- Các đối tượng nhập liệu và vùng nhập liệu (Widget)

Các vùng nhập liệu bao gồm vùng văn bản, hộp văn bản, hộp đánh dấu và bất kỳ đối tượng nào có thể dùng để nhập liệu từ người sử dụng. Một vài vùng nhập liệu có thể được thay thế cho nhau. Ví dụ, hộp đổ xuống và các nút ô chọn có thể sử dụng thay thế cho nhau để hỏi người dùng “chọn một trong những tùy chọn sau” . Một ứng dụng không được kết hợp các đối tượng một cách tùy tiện.

- Các hành động người dùng (User Actions )

Các hành động được ấn định qua nhiều con đường khác nhau để người sử dụng có thể thao tác dữ liệu trên màn hình. Các hành động có thể là các nút nhấn, thực đơn đổ xuống, thực đơn ngữ cảnh và các đối tượng khác. Một vài hành động là toàn cục, chẳng hạn như hành động “undo”. Các hành động khác là hành động ngữ cảnh.

- Bảo mật (Security)

Bảo mật trong một ứng dụng doanh nghiệp phải mềm dẻo thông qua các luật động để phản ánh các tương tác qua lại để đáp ứng công việc của nhiều lớp người sử dụng. Bảo mật của ứng dụng phải điều khiển điều hướng, hành động và dữ liệu xuất khẩu đến người sử dụng. Nó phải chống sự xâm nhập và giới hạn quyền hạn của người sử dụng để người sử dụng có thể thấy những gì và thực hiện những hành động nào.

- Có khả năng mở rộng (Extensibility)

Một giao diện web thiết kế tốt có thể tạo được việc thay đổi tài khoản và thay đổi khả năng hiển thị trong trình duyệt. Trình duyệt có thể sử dụng các gói phần mềm động. Các thành phần và sửa lỗi có thể đưuơc5 thêm vào.

- Có khả năng tùy biến (Customizability)

UI có khả năng mềm dẻo phải cho phép một vài cấp độ cho người dùng tùy biến, nhưng giao diện có khả năng tùy biến cao được tạo ra mà không cần sự phức tạp. Một ứng dụng phải có khả năng thay đổi mỗi nhãn, kiểu chữ hoặc màn hình. Về mặt ý tưởng, có thể có một vài tùy biến cho hiển thị, báo cáo, phối hợp màu, thay đổi nhìn và sờ để tạo nên sự thân thiện người dùng.

- Phối hợp màu (Color Scheme)

Màu có thể được sử dụng để cải tiến để tiện lợi và thẩm mỹ cho cho ứng dụng và mang lại lợi ích thiết thực nếu chúng ta phối màu tốt. Ví dụ, màu có thể được sử dụng để phân cách hay kết dích các nội dung khác nhau trong một UI. Tất cả các chương trình đồ họa trong hệ điều hành Windows thừa kế phối hợp màu sẵn có của môi trường hệ điều hành. Thêm nữa, một cửa sổ kích hoạt sẽ có một màu tiêu đề duy nhất để nhấn mạnh rằng nó là cửa sổ kích hoạt duy nhất.

Những lợi ích của XML

XML có thể được sử dụng trong tất cả bề mặt của một giao diện ứng dụng. Bằng cách ngăn cách nội dung từ trình diễn, XML có thể giúp bảo trì các ngăn cách tự nhiện giữa các luật của phát triển nội dung và thiết kế thẩm mỹ. Trong nội dung này, chúng ta sẽ xem xét một số phương cách mà XML có thể sử dụng trong thiết kế giao diện UI.

Về kỹ thuật thiết kế web, người thiết kế có thể sử dụng XML và XSLT để phân cách xử lý xây dựng và trình diễn.

Chúng ta có thể sử dụng asp để thực hiện các mẫu điều khiển tùy theo tham số được đưa vào “view”:

controller.asp: Một sự cài đặt mẫu điều khiển sử dụng asp


<%

// Get the view argument

view = Request.QueryString("view")

base = Request.ServerVariables("SERVER_NAME")+ Replace(Request.ServerVariables("URL"),"controller.asp","")

if Request.ServerVariables("HTTPS") = "ON" then base = "https://"+base

else

base = "http://"+base

end if

xmlurl = base+view+".asp?" arguments = ""

// Parse additional arguments

For Each item in Request.QueryString

if arguments <> "" then arguments = arguments+"&" itemvalue = Request.QueryString(item)

arguments = arguments+item+"="+itemvalue

Next

// Append the argument string to the xmlurl xmlurl = xmlurl+arguments

// Contstruct a URL to the appropriate skin

// This implementation uses only the Internet Explorer 5.0 skin

// Other skins could be used based on the browser type if Request.QueryString("skin") <> "" then

skin = Request.QueryString("skin")

else


end if


skin = "ie5"

xslurl = base+"xslt/"+skin+".xsl"

// Load the XML

// A production implementation should use the multi-threaded version of the DomDocument.

error = false

Set source = Server.CreateObject("MSXML2.DOMDocument") source.async = false

tmp = source.setProperty("ServerHTTPRequest", true) source.load(xmlurl)

Set e = source.parseError if e.errorCode <> 0 then

Response.write(e.reason) if e.line > 0 Then

Response.write(e.line) Response.write(" ") Response.write(e.linepos) Response.write(" ") Response.write(e.srcText)


end if

end if

error = true

// Load the XSLT

Set style = Server.CreateObject("MSXML2.DOMDocument") style.async = false

tmp = style.setProperty("ServerHTTPRequest", true) style.load(xslurl)

Set e = style.parseError if e.errorCode <> 0 Then

Response.write(e.reason) if e.line > 0 Then

Response.write(e.line) Response.write(" ") Response.write(e.linepos) Response.write(" ") Response.write(e.srcText)

end if

error = true

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 19/11/2023