<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    BloveSaga

    在希臘帕爾納斯山南坡上,有一個(gè)馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個(gè)大字: 認(rèn)識(shí)你自己!

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      34 隨筆 :: 12 文章 :: 122 評(píng)論 :: 0 Trackbacks

    2006年6月13日 #

    大家可以瀏覽我新的博客 dyin.cn

    posted @ 2007-05-11 16:57 藍(lán)色Saga 閱讀(166) | 評(píng)論 (0)編輯 收藏

    今天與大家分享的資源如下:
    ==================================================================================
    JSP動(dòng)態(tài)網(wǎng)頁(yè)制作
    PHP動(dòng)態(tài)網(wǎng)頁(yè)制作
    ASP動(dòng)態(tài)網(wǎng)頁(yè)制作
    Perl動(dòng)態(tài)網(wǎng)頁(yè)制作
    winxp優(yōu)化大全
    JSP程序設(shè)計(jì)
    以上皆是視頻教程
    如果你需要請(qǐng)你留下email我將會(huì)在晚上統(tǒng)一把種子發(fā)送到你的郵箱里,如果需要請(qǐng)抓緊,3天后將不再提供!

    ?

    posted @ 2006-06-21 12:23 藍(lán)色Saga 閱讀(334) | 評(píng)論 (5)編輯 收藏

    要考慮一個(gè)真正意義的全球資源,Web瀏覽器的內(nèi)容對(duì)每個(gè)接收到的用戶來(lái)說(shuō)都是易讀的,現(xiàn)在大多數(shù)的全球資源的網(wǎng)站都是英文的.當(dāng)然,現(xiàn)在也在發(fā)生變化,有的網(wǎng)站為一些特定的國(guó)家定制一些非英文版本,比如,說(shuō)英文的通過(guò)http://www.ibm.com/en/index.html來(lái)訪問(wèn),說(shuō)中文的通過(guò)http://www.imb.com/cn/index.html來(lái)訪問(wèn),這些很多都是靜態(tài)的文本.怎么構(gòu)件一個(gè)動(dòng)態(tài)生成的國(guó)際化內(nèi)容的網(wǎng)站就不是一個(gè)簡(jiǎn)單的問(wèn)題了.

    國(guó)際化又稱Il8N,因?yàn)橛⑽膰?guó)家的國(guó)家化是Internationalization,它以I開(kāi)始,以N結(jié)束,共18個(gè)字母.本地化又稱L18N,即是Localization.國(guó)際化的問(wèn)題主要包含以下的一些內(nèi)容:
    .日期,時(shí)間
    .數(shù)字
    .貨幣
    .其它的一些特殊字符
    也就是說(shuō)不同的Locale,顯示日期,時(shí)間格式是不一樣的.當(dāng)然,不同的語(yǔ)言有自己不同的字符集.

    HTML中的字符實(shí)體
    HTML中的字符實(shí)體和XML的語(yǔ)言保持一致.它定義了用特定的字符序列顯示單字符的功能,這種字符序列稱為字符實(shí)體,它以" &"開(kāi)頭,以";"結(jié)束.例如: &copy; 表示字符"?";
    看一例子顯示西班牙語(yǔ)的" Hello World":
    <%@page contentType="text/html;charset=ISO-8859-1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "

    <%
    ?? response.setHeader("Content-Language","es");
    ?? out.println("<html><head><title>En Espa&ntilde;ol</title></head>");
    ?? out.println("<body>");
    ?? out.println("<h3>En espa%ntilde;ol</h3>");
    ?? out.println("&iexcl;Hola Mundo!");
    ?? out.println("</body></html>");
    %>

    運(yùn)行結(jié)果:

    En espa%ntilde;ol

    ?Hola Mundo!

    在HTML字符實(shí)體表示中,&ntilde代表了" ? "字符,使用response.setHeader("Content-Language","es");來(lái)設(shè)置HTML顯示時(shí)要使用的語(yǔ)言.

    Unicode
    Unicode字符標(biāo)準(zhǔn)是一個(gè)字符編碼系統(tǒng),它支持互相轉(zhuǎn)換,處理和顯示現(xiàn)在世界上不同語(yǔ)言的文本.在Java語(yǔ)言中,字符,字符串和標(biāo)始符在內(nèi)部使用16位的Unicode 2.0字符集表示.Unicode使用 " \uxxxx" 來(lái)表示一個(gè)字符,前256個(gè)Unicode字符和ISO-8859-1標(biāo)準(zhǔn)(Latin-1)的前256個(gè)字符一致.在Unicode世界中, "? ?? " 用 " \u00f1 " 表示.看怎么用Unicode來(lái)編寫(xiě)西班牙語(yǔ)的Hello World:
    <
    %@page contentType="text/html;charset=ISO-8859-1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "

    <%
    ?? response.setHeader("Content-Language","es");
    ?? out.println("<html><head><title>En Espa\u00f1ol</title></head>");
    ?? out.println("<body>");
    ?? out.println("<h3>En espa\u00f1ol</h3>");
    ?? out.println("\u00f1Hola Mundo!");
    ?? out.println("</body></html>");
    %>

    支持多國(guó)語(yǔ)言的Hello World

    用語(yǔ)選擇語(yǔ)言的頁(yè)面:


    語(yǔ)言處理頁(yè)面代碼:
    <
    %@page contentType="text/plain;charset=UTF-8"
    import="java.io.*,java.text.*,java.util.*,javax.servlet.jsp.*" %>
    <html>
    ??? <head>
    ??????? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    ??????? <title>JSP Page</title>
    ??? </head>
    ??? <body>
    <%!
    ?? Locale locale;
    ?? DateFormat format;
    ?? JspWriter writer;
    %>
    <%!
    ?? //英語(yǔ)
    void processEnglish()throws Exception
    {
    ??? locale=new Locale("en","US");
    ??? format=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);
    ??? writer.println("in english");
    ??? writer.println("<br>");
    ??? writer.println("HelloWorld");
    ??? writer.println(format.format(new Date()));
    ??? writer.flush();
    }

    ?? //中文
    void processChinese()throws Exception
    {
    ??? locale=new Locale("zh","");
    ??? format=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);
    ??? writer.println("in Chinese");
    ??? writer.println("<br>");
    ??? writer.println("\u4f60\u597d\u4e16\u754c");
    ??? writer.println(format.format(new Date()));
    ??? writer.flush();
    }

    ?? //韓國(guó)語(yǔ)
    void processKorean()throws Exception
    {
    ??? locale=new Locale("ko","");
    ??? format=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);
    ??? writer.println("in Korean");
    ??? writer.println("<br>");
    ??? writer.println("\uc548\ud558\uc138\uacc4");
    ??? writer.println(format.format(new Date()));
    ??? writer.flush();
    }
    //.........................其他的語(yǔ)言省略
    %>
    <%
    ??? //獲得請(qǐng)求的語(yǔ)種
    ???? String language=(String)request.getParameter("language");
    ???? int lan=Integer.parseInt(language);??
    %>
    <%
    ?? writer=out;
    ?? switch(lan)
    ?? {
    ?????? case 1:processEnglish();break;
    ?????? case 2:processChinese();break;
    ?????? case 3:processKorean();break;
    ?????? //case 4:processRussian();break;
    ?????? //case 5:processSpanish();break;
    ????? // case 6:processJapanese();break;
    ?? }
    %>
    ??? </body>
    </html>
    處理的思路很簡(jiǎn)單,首先獲得請(qǐng)求的語(yǔ)種,然后根據(jù)不同的語(yǔ)言來(lái)做不同的處理.

    posted @ 2006-06-20 14:00 藍(lán)色Saga 閱讀(229) | 評(píng)論 (0)編輯 收藏

    在JSP開(kāi)發(fā)中我們常常會(huì)碰到以下的一些問(wèn)題,其實(shí)都很有代表性.

    在不同的頁(yè)面或者用戶之間共享數(shù)據(jù)

    在JSP中共享數(shù)據(jù),大體上可以分為兩種情況,第一種是在同一個(gè)用戶的不同也面之間共享數(shù)據(jù),另一種是在不同用戶之間共享數(shù)據(jù).
    對(duì)于同一個(gè)用戶的會(huì)話,要想在不同的頁(yè)面之間共享數(shù)據(jù),可以有以下幾種選擇:
    .把數(shù)據(jù)保存在Session中(最常見(jiàn)的方法)
    .通過(guò)Cookie
    .通過(guò)隱含表單提交到下一個(gè)頁(yè)面
    .通過(guò)ServletContext對(duì)象
    .通過(guò)Application對(duì)象
    .通過(guò)文件系統(tǒng)或者數(shù)據(jù)庫(kù)
    要在不同的用戶之間共享數(shù)據(jù),通常的方法是:
    .通過(guò)ServletContext對(duì)象
    .通過(guò)Application對(duì)象
    .通過(guò)文件系統(tǒng)或者數(shù)據(jù)庫(kù)
    可見(jiàn),對(duì)于不同用戶之間共享數(shù)據(jù)的實(shí)現(xiàn)方法在同一個(gè)用戶的不同也面之間也能實(shí)現(xiàn)數(shù)據(jù)共享.
    a.在同一個(gè)用戶的不同也面之間共享數(shù)據(jù)
    1.使用session共享數(shù)據(jù)
    用戶在瀏覽網(wǎng)頁(yè)時(shí),由于HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,往往在不同的頁(yè)面之間存在數(shù)據(jù)交換的問(wèn)題,這就需要在這些不同的頁(yè)面之間共享數(shù)據(jù).在編程實(shí)現(xiàn)中我們常看到的方法是把共享數(shù)據(jù)保存在session中.這些共享數(shù)據(jù)可以是字符串或者與Java的原始數(shù)據(jù)類型相關(guān)的對(duì)象,也可以是一個(gè)Java對(duì)象.
    exampl: 用戶登錄時(shí),如果驗(yàn)證成功,就把信息保存到一個(gè)userSession的類中,在其他的頁(yè)面可以讀取這個(gè)值.
    userSession.java
    package dory;
    import java.util.Date;
    /**
    ?*
    ?* @author Dory Doo
    ?*/
    public class userSession {
    ??? private boolean isLogin=false;
    ??? private String userId;
    ??? private Date lastLoginTime;
    ??? private int logCount;
    ??? /** Creates a new instance of userSession */
    ??? public userSession() {
    ??? }
    ??? public void setIsLogin(boolean l)
    ??? {
    ??????? this.isLogin=l;
    ??? }
    ??? public void setUserId(String userId)
    ??? {
    ??????? this.userId=userId;
    ??? }
    ??? public void setLastLoginTime(Date l)
    ??? {
    ??????? this.lastLoginTime=l;
    ??? }
    ??? public void setLogCount(int logCount)
    ??? {
    ??????? this.logCount=logCount;
    ??? }
    ??? public boolean isLogin()
    ??? {
    ??????? return this.isLogin;
    ??? }
    ??? public String getUserId()
    ??? {
    ??????? return this.userId;
    ??? }
    ??? public Date getLastLoginTime()
    ??? {
    ??????? return this.lastLoginTime;
    ??? }
    ??? public int getLogCount()
    ??? {
    ??????? return this.logCount;
    ??? }
    }
    當(dāng)然這個(gè)就比較簡(jiǎn)單的了,要的是整個(gè)思路.我們?cè)趺磥?lái)使用這個(gè)類,我們需要一個(gè)驗(yàn)證登陸的頁(yè)login.jsp
    <%@page contentType="text/html;charset=gb2312" language="java"
    ?import="java.sql.*,dory.*" errorPage=""%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "

    <html>
    ??? <head>
    ??????? <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    ??????? <title>JSP Page</title>
    ??? </head>
    ??? <body>

    ??? <h1>Login Checking Page</h1>
    <%
    ?? String name=request.getParameter("name");
    ?? String password=request.getParameter("password");
    ?? //Connection the Database,loading
    ?? //int logCount=resultSet.getInt("count");
    ?? //java.util.Date lastLoginTime=resultSet.getDate("LastLoginTime");
    ?? //這里簡(jiǎn)單設(shè)置logCount和lastLoginTime的值
    ?? UserSession user=new UserSeesion();
    ?? user.setUserId(name);
    ?? user.setIsLogin(true);
    ?? user.setLastLoginTime(new java.util.Date());
    ?? user.setLogCount(10);
    ?? session.setAttribute("userSession",user)
    ?? response.sendRedirect("welcome.jsp");
    %>
    ??? </body>
    </html>
    整個(gè)登陸頁(yè)面的過(guò)程是這樣的:
    (1)獲得用戶的登陸信息
    (2)連接數(shù)據(jù)庫(kù)進(jìn)行權(quán)限驗(yàn)證
    (3)如果通過(guò)驗(yàn)證,那么讀取用戶的注冊(cè)信息
    (4)把用戶的注冊(cè)信息保存到一個(gè)userSession對(duì)象中
    (5)把userSession對(duì)象保存到Session內(nèi)建對(duì)象中
    (6)把視圖派發(fā)到下一個(gè)顯示頁(yè)面
    注意:session.setAttribute("userSession",user)把userSession的一個(gè)對(duì)象設(shè)置到Session中,Session只能保存對(duì)象,不能保存原始的數(shù)據(jù)類型,比如:
    session.setAttribute("count",10)
    是非法的語(yǔ)句,如果要把值為10的整數(shù)保存到Session中,需要使用以下的方法:
    session.setAttribute("count",new Integer(10));
    然后在另一個(gè)頁(yè)面使用
    (Integer)session.getAttribute("count");
    把這個(gè)整數(shù)讀出來(lái).
    我們用如下方法在另一個(gè)頁(yè)面中把userSesseion對(duì)象讀取出來(lái):
    <
    %@page contentType="text/html;charset=gb2312" language="java"
    ?import="java.sql.*,dory.*" errorPage=""%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "<html>
    ??? <head>
    ??????? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    ??????? <title>JSP Page</title>
    ??? </head>
    ??? <body>??
    <%
    ?? UserSession user=(UserSession)session.getAttribute("userSession");
    ?? try
    ?? {
    ?????? if(user.isLogin())
    ?????? {
    ?????????? out.print("welcome,your login id is:"+user.getUserId());
    ?????????? out.print("your last login time is:"+user.getLastLoginTime());
    ?????????? out.print("now you are the:"+user.getLogCount()+"times logging this website");
    ?????? }
    ?????? else
    ?????? {
    ?????????? response.sendRedirect("login.html");
    ?????? }
    ?? }
    ?? catch(Exception e)
    ?? {
    ?????? response.sendRedirect("login.html");
    ?? }
    %>
    ??? </body>
    </html>
    可以看出,通過(guò)UserSession user=(UserSession)session.getAttribute("userSession");代碼來(lái)讀取在前一個(gè)頁(yè)面中設(shè)置的對(duì)象,然后再?gòu)倪@個(gè)對(duì)象讀取一些相關(guān)值.當(dāng)然我們也可以用JavaBean的形式來(lái)讀取.

    2.使用隱含菜單
    這種方式通過(guò)隱含菜單的形式把數(shù)據(jù)傳遞到下一個(gè)頁(yè)面,它有兩個(gè)局限性:
    .只能在相鄰的兩個(gè)頁(yè)面之間傳遞數(shù)據(jù)
    .客戶端可以使用查看網(wǎng)頁(yè)源代碼的方式獲得表單中的數(shù)據(jù),安全性不好
    它的實(shí)現(xiàn)很簡(jiǎn)單:
    <form action="target.jsp">
    <input type="hidden" name="test" value="abc">
    <input type="hidden" name="test2" value="def">
    </form>
    在另外一個(gè)頁(yè)面中,通過(guò)這樣來(lái)獲得數(shù)據(jù):
    String test=request.getParameter("test");
    String test2=request.getParameter("test2");

    3.使用Cookie
    和Session不同,Cookie是放在客戶端的,由于客戶考慮到安全應(yīng)素可能會(huì)禁用cookie,這樣在使用cookie就會(huì)遇到麻煩了.

    b.在不同的用戶之間共享數(shù)據(jù)
    在不同的在不同的用戶之間共享數(shù)據(jù)最常見(jiàn)的方法是使用ServletContext和application對(duì)象,通過(guò)在一個(gè)用戶那里設(shè)置屬性在另一個(gè)用戶那里獲得這個(gè)屬性.

    1.使用ServletContext
    在JSP頁(yè)面中可以通過(guò)getServletContext()方法獲得ServletContext對(duì)象.在這種情況下不同的用戶通過(guò)它來(lái)工享數(shù)據(jù),看下面的實(shí)現(xiàn)代碼:
    <
    %@page contentType="text/html;charset=gb2312" language="java"
    import="java.sql.*,javax.servlet.*,javax.servlet.http.*,dory.*" errorPage="" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "<%
    ?? request.setCharacterEncoding("gb2312");
    %>
    <html>
    ??? <head>
    ??????? <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    ??????? <title>JSP Page</title>
    ??? </head>
    ??? <body>
    ??? a simple chatting room
    ??? <br><hr><font color="red">
    <%
    ?? String content=(String)getServletContext().getAttribute(new String("chatTopic_1"));
    ?? out.print(content);
    ?? getServletContext().setAttribute("chatTopic_1",content+(String)request.getParameter("content")
    ?? +"<br>");
    %>
    ??? </font>
    ??? <hr>
    ??? <form accept="Servelt Context_chat.jsp">
    ??????? <input type="text" name="content">
    ??????? <input type="submit" value="speak">
    ??? </form>
    ??? </body>
    </html>

    2.application對(duì)象
    application對(duì)象對(duì)應(yīng)于每個(gè)web應(yīng)用來(lái)說(shuō)只有一個(gè),它使用和ServletContext差不多.如下:
    <
    %@page contentType="text/html;charset=gb2312" language="java"
    import="java.sql.*,javax.servlet.*,javax.servlet.http.*,dory.*" errorPage="" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    ?? "<%
    ?? request.setCharacterEncoding("gb2312");
    %>
    <html>
    ??? <head>
    ??????? <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    ??????? <title>JSP Page</title>
    ??? </head>
    ??? <body>
    ??? a simple chatting room
    ??? <br><hr><font color="red">
    <%
    ?? String content=(String)application.getAttribute(new String("chatTopic_1"));
    ?? out.print(content);
    ?? application.setAttribute("chatTopic_1",content+(String)request.getParameter("content")
    ?? +"<br>");
    %>
    ??? </font>
    ??? <hr>
    ??? <form accept="Servelt Context_chat.jsp">
    ??????? <input type="text" name="content">
    ??????? <input type="submit" value="speak">
    ??? </form>
    ??? </body>
    </html>
    可以得到ServletContext和application的實(shí)現(xiàn)機(jī)制基本上一致.

    posted @ 2006-06-20 13:05 藍(lán)色Saga 閱讀(291) | 評(píng)論 (0)編輯 收藏

    多學(xué)習(xí)別人才能進(jìn)步,多交流才能收獲,這里分享給大家一些網(wǎng)絡(luò)資源.

    =====================================================================================
    國(guó)內(nèi)外JSP/Java/Servlet技術(shù)著名網(wǎng)站

    http://www-900.ibm.com/developerWorks/cn
    http://java.sun.com
    http://www.jchq.net
    http://jquest.webjump.com/
    http://www.chinaasp.com/ (國(guó)內(nèi))
    http://www.cnjsp.com/? (國(guó)內(nèi))
    http://www.javaunion.org/ (國(guó)內(nèi))
    http://www.jspchina.com/ (國(guó)內(nèi))


    國(guó)內(nèi)外介紹JSP/Servlet應(yīng)用程序服務(wù)器的網(wǎng)站

    ?http://www.allaire.com/
    ?http://jakarta.apache.org/
    ?http://java.apache.org/
    ?http://www.atg.com/
    ?http://www.bea.com/
    ?http://www.beasys.com/
    ?
    http://www.bluestone.com/
    ?http://caucho.com/
    ?http://easythings.iwarp.com/
    ?http://www.fefionsoftware.com
    ?
    http://www.gemstone.com/
    ?http://www.software.ibm.com/
    ?
    http://www.inprise.com/
    ?http://sun.com/software/
    ?http://www.tagtraum.com/
    ?http://www.enhydra.com/
    ?http://www.mortbay.com/
    ?http://www.novocode.com/
    ?http://www.oracle.com/
    ?http://www.orionserver.com/
    ?http://www.paralogic.com/
    ?http://www.pramati.com/
    ?http://www.secant.com/
    ?http://www.servertec.com/
    ?http://www.silverstream.com/
    ?http://www.siteforum.com/
    ?http://www.unify.com/
    ?http://www.vqsoft.com/
    ?http://www.w3.org/

    國(guó)內(nèi)外介紹 JSP/Java/Servlet開(kāi)發(fā)工具的網(wǎng)站

    ?http://www.adobe.com/
    ?http://www.bea.com/
    ?http://www.software.ibm.com/
    ?http://www.inprise.com/
    ?http://www.macromedia.com/
    ?http://www.netbeans.org/
    ?http://www.netobjects.com/
    ?http://www.oracle.com/
    ?http://www.sun.com/
    ?
    http://www.eclipse.com/

    FAQ網(wǎng)站

    ?http://www.jguru.com/
    ?http://java.sun.com/products/jsp/faq.html
    ?http://www.esperanto.org.nz/
    ?
    http://www.jchq.net/

    繁體資源

    http://www.javaworld.com.tw/jute或http://www.jsptw.com/jute
    http://www.jsp.mlc.edu.tw
    posted @ 2006-06-19 14:49 藍(lán)色Saga 閱讀(299) | 評(píng)論 (0)編輯 收藏

    ?? 正則表達(dá)式

    ?.正則表達(dá)式及其作用
    ?.RegExp對(duì)象
    ?.String對(duì)象中與正則表達(dá)式有關(guān)的方法
    ?.正則表達(dá)式的語(yǔ)法參考
    ?.實(shí)用程序舉例

    ?什么是正則表達(dá)式?
    ?.文件路徑通配符
    ?"?"通配符匹配文件名中的單個(gè)字符,而"'"通配符匹配零個(gè)或多個(gè)字符。data?.dat就是一中文
    ?本模式,它能匹配data1.dat,data2.dat,datax.dat,dataN.dat等文件名。data*.dat是另一種文
    ?本模式,它匹配data.dat,data1.dat,data2.dat,data12.dat,datax.dat等文件名。

    ?

    ?.正則表達(dá)式
    ?是由英文詞語(yǔ)regular expression翻譯過(guò)來(lái)的,英文比中文更能實(shí)現(xiàn)其含義,就是符合某種規(guī)則
    ?的表達(dá)式。可以將正則表達(dá)式理解為一種對(duì)文件進(jìn)行模糊匹配的語(yǔ)言,它用一些特殊的符號(hào)(稱
    ?為元字符)來(lái)代表某種特征(例如,全都是數(shù)字)的一組字符以及指定匹配的次數(shù),含有元字符
    ?的文本不再表示某一具體的文本內(nèi)容,而是形成了一種文本模式,它可以匹配符合這種模式的所
    ?有文本串。
    ?
    ?元字符與子匹配
    ?.元字符
    ?如果一個(gè)圖書(shū)的編號(hào)格式是:要么是5個(gè)數(shù)字字符,例如,10101;要么是5個(gè)數(shù)字后加上一個(gè)連字號(hào)
    ?(-),再加上4個(gè)數(shù)字組成的10個(gè)字符,例如,11111-1234。那么,要在一個(gè)大的文本串中查找這
    ?兩種格式的圖書(shū)編號(hào)時(shí),就可以用\d{5}(-\d{4})?做為匹配模式。
    ?如果要讓abc?中的bc同時(shí)受到?的作用,必須使用圓括號(hào)將他們括起來(lái),使它們成為一個(gè)緊密結(jié)合
    ?的組合項(xiàng),這樣后面的?就表示圓括號(hào)中的內(nèi)容可有可無(wú),例如,a(bc)?能匹配a和abc。

    ?.字匹配
    ?圓口號(hào)所括起來(lái)的部分為一個(gè)子匹配(也叫子表達(dá)式),除了可以得到整個(gè)正則表達(dá)式的匹配
    ?結(jié)果外,還可以單獨(dú)得到每個(gè)子表達(dá)式部分所匹配的結(jié)果。
    ?多個(gè)子表達(dá)式所匹配的原始內(nèi)容按照它們正則表達(dá)式模式中從左到右出現(xiàn)的順序存儲(chǔ)在緩沖區(qū)中
    ?,這種過(guò)程稱為捕獲。圓括號(hào)中的子匹配所捕獲的內(nèi)容可在整個(gè)表達(dá)式中位于這個(gè)括號(hào)之后的
    ?地方被反引用,第一括號(hào)(即第一個(gè)子匹配)捕獲的內(nèi)容用\1表示,第二個(gè)圓括號(hào)(即第二個(gè)子
    ?匹配)捕獲的內(nèi)容\2表示,依次類推。例如,要匹配2個(gè)相同的連續(xù)字符的正則表達(dá)式為(\d)\1.
    ?要匹配連續(xù)5個(gè)相同的數(shù)字字符的正則表達(dá)式為(\d)\1{4}.要匹配1221.3553.6776等數(shù)字。可以
    ?使用正則表達(dá)式為(\d)(\d)\2\1。

    ? 正則表達(dá)式的作用
    ?.測(cè)試字符串是否匹配某個(gè)模式,從而實(shí)現(xiàn)數(shù)據(jù)格式的有效性驗(yàn)證。
    ?.將一段文本中滿足某一正則表達(dá)式模式的文本內(nèi)容替換為別的內(nèi)容或刪除(即替換為空字符串)
    ? 例如,將一大段文本中的所有的19xx年的內(nèi)容替換為20xx年,其中xx部分是兩個(gè)任意的數(shù)字,
    ? 不會(huì)被替換,但不能簡(jiǎn)單地用20替換19,否則1919就被替換為2020。
    ?.在一段文本中搜索具有某一類型特征的文本內(nèi)容。精確搜索和正則表達(dá)式的模式搜索最大的區(qū)
    ? 別就是:精確搜索是搜索一個(gè)具體的文本,而模式搜索是模式搜索具有某一類型特征的文本。

    ?
    ? RegExp對(duì)象
    ?JavaScript中提供了一個(gè)名為RegExp的對(duì)象來(lái)完成有關(guān)正則表達(dá)式的操作和功能,每一條正則
    ?表達(dá)式模式對(duì)應(yīng)一個(gè)RegExp對(duì)象實(shí)例。

    ?創(chuàng)建RegExp對(duì)象實(shí)例
    ?(1)使用RegExp對(duì)象的顯示構(gòu)造函數(shù),語(yǔ)法為:new RegExp("pattern"[,"flags"]);
    ?(2)使用RegExp對(duì)象的隱式構(gòu)造函數(shù),采用純粹的文本格式:/pattern/[flags]
    ?
    ?flags標(biāo)志字符:
    ???? -g 用做全局標(biāo)志
    ???? -i 用做忽略大小寫(xiě)標(biāo)志
    ???? -m 用做多行標(biāo)志
    ???? 如果沒(méi)有設(shè)置這個(gè)標(biāo)志,那么元字符"^"只與整個(gè)被搜索字符串的開(kāi)始位置相匹配,而元字符
    ???? "$"只與整個(gè)被搜索字符串的結(jié)束位置相匹配。如果設(shè)置了這個(gè)標(biāo)志,那么"^"還可以與被
    ???? 搜索字符串中的"\n"或"\r"之后的位置相匹配。
    ? 注意:
    ? 當(dāng)使用構(gòu)造函數(shù)的方式創(chuàng)建RegExp實(shí)例對(duì)象的時(shí)候,應(yīng)將原始的正則表達(dá)式模式文本中的每個(gè)
    ? "\"都使用"\\"來(lái)替換,例如,下面的語(yǔ)句等價(jià):
    ?? var re=new RegExp("\\d{5}");
    ?? var re=^d{5}/

    ?RegExp對(duì)象-屬性
    ?.所有RegExp對(duì)象實(shí)例共享靜態(tài)屬性
    ?.單個(gè)對(duì)象實(shí)例的屬性
    ?靜態(tài)屬性:
    ?.index
    ?.input
    ?.lastIndex
    ?.lastMatch
    ?.lastParen
    ?.lastContext
    ?.leftContext
    ?.rightContext
    ?.$1...$9

    ?對(duì)象實(shí)例屬性:
    ?.global
    ?.ignoreCase
    ?.multiline
    ?.source

    ?RegExp對(duì)象-方法
    ?.test方法
    ?語(yǔ)法格式為:test(str)。檢查一個(gè)字符串中是否存在創(chuàng)建RegExp對(duì)象實(shí)例所指定的正則表達(dá)式模式
    ?.exec方法
    ?語(yǔ)法格式為:exec(str)。使用創(chuàng)建RegExp對(duì)象實(shí)例時(shí)所指定的正則表達(dá)式模式對(duì)一個(gè)字符串執(zhí)行
    ?搜索,并返回一個(gè)包含搜索結(jié)果的數(shù)組。
    ?.compile方法
    ?語(yǔ)法格式為:compile("pattern"[,"flags"])。更換RegExp對(duì)象實(shí)例所使用的正則表達(dá)式模式,并
    ?將新的正則表達(dá)式模式編譯為內(nèi)部格式,從而使以后的匹配過(guò)程執(zhí)行更快。

    ?RegExp對(duì)象-綜合舉例
    ?code:
    <script language="javascript">
    ??? var strSrc="xxa1b01c001yya2b02c002zz";
    ??? var re="/a(\d)b(\d{2})c(\d{3})/gi";
    ??? var arr,count=0;
    ??? while((arr = re.exec(strSrc))!=null)
    ??? {
    ?????? displayResult();
    ??? }
    ??? function displayResult()
    ??? {
    ????? document.write(<p>這是用正則表達(dá)式/"+re.source+"/gi對(duì)字符串<br>\""
    ???????????????? +RegExp.input+ "\"進(jìn)行第" +(++count)+ "次搜索的結(jié)果:<br>");
    ????? document.write("RegExp.index為"+RegExp.index+"<br>");
    ????? document.write("RegExp.lastindex為"+RegExp.lastindex+"<br>");
    ????? document.write("RegExp.lastMatch為"+RegExp.lastMatch+"<br>");
    ????? document.write("RegExp.lastParen為"+RegExp.lastParen+"<br>");
    ????? document.write("RegExp.lastContext為"+RegExp.lastContext+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$1+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$2+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$3+"<br>");
    ????? document.write("RegExp.$1為"+RegExp.$4+"<br>");
    ????? document.write("arr.index為"+arr.index+"<br>");
    ????? document.write("arr.input為"+arr.input+"<br>");
    ????? document.write("arr.lastindex為"+arr.lastindex+"<br>");
    ????? document.write("返回的元素個(gè)數(shù)為"+arr.length+"<br>");
    ????? document.write("返回?cái)?shù)組的類容為[");
    ????? for(var i=0;i<arr.length;i++)
    ????? {
    ???????? if(arr.length-1)
    ??????????? document.write("\""+arr[i]+"\",");
    ???????? else
    ??????????? document.write("\""+arr[i]+"\"]</p>");
    ????? }
    ?????
    ??? }
    ?</script>
    ?


    ?String對(duì)象中與正則表達(dá)式有關(guān)的方法
    ?.match方法
    ?語(yǔ)法格式為:match(Exp)。與RegExp對(duì)象的exec方法類似,它使用正則表達(dá)式模式對(duì)字符串執(zhí)行
    ?搜索,并返回一個(gè)包含搜索結(jié)果的數(shù)組。
    ?<script language="javascript">
    ?? var strSrc="xxa1b01c001yya2b02c002zz";
    ?? var re=/a(\d)b(\d(2))c(\d{3})/gi;
    ?? var arr;
    ?? arr=strSrc.match(re);
    ?? for(var i=0;i<arr.length;i++)
    ?? {
    ????? if(i<arr.length-1)
    ???????? document.write("[\""+arr[i]+"\",");
    ????? else
    ???????? document.write("\""+arr[i]+"\"]");
    ?? }
    ?</script>
    ?
    ?.search方法
    ?語(yǔ)法格式為:serach(rgExp)。返回使用正則表達(dá)式搜索時(shí),第一個(gè)匹配的字符串在整個(gè)被搜索
    ?的字符串中的位置。
    ?.replace方法
    ?語(yǔ)法格式為: replace(rgExp,replaceText)。使用正則表達(dá)式模式對(duì)字符串執(zhí)行搜索,并對(duì)搜索
    ?到的內(nèi)容用指定的字符串替換,返回值包含替換后的內(nèi)容的字符串對(duì)象。

    posted @ 2006-06-15 18:06 藍(lán)色Saga 閱讀(215) | 評(píng)論 (0)編輯 收藏

    給大家分享一個(gè)視頻教程-軟件工程,CSF格式的,或許大家有和我一樣用得著的,如果你需要就抓緊時(shí)間下載吧,白天相對(duì)來(lái)說(shuō)速度快點(diǎn),晚上就比較慢了,也不一定.希望可以給你提供點(diǎn)幫助.現(xiàn)把目錄列舉如下:
    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
    課程名稱:軟件工程
    總學(xué)時(shí):32講
    主講老師:劉亞軍
    要下載抓緊時(shí)間,下載地址經(jīng)常變動(dòng)
    授課目錄:
    第1講 軟件過(guò)程背景、目的
    第2講 軟件質(zhì)量評(píng)價(jià)、軟件開(kāi)發(fā)方法和開(kāi)發(fā)工具 可行性研究與計(jì)劃
    第3講 成本效益分析
    第4講 需求分析基本理論、結(jié)構(gòu)化分析概述、數(shù)據(jù)流圖
    第5講 數(shù)據(jù)流圖基本充分、由外向里畫(huà)數(shù)據(jù)流圖
    第6講 分層數(shù)據(jù)流圖、由頂向下畫(huà)數(shù)據(jù)流圖、實(shí)例
    第7講 數(shù)據(jù)流圖的改進(jìn)、數(shù)據(jù)詞典
    第8講 小說(shuō)明、分析的步驟,SA方法小結(jié)、快速原型法
    第9講 基本概念、概要設(shè)計(jì)

    第10講 塊間聯(lián)系、塊內(nèi)聯(lián)系
    第11講 影響范圍、控制范圍、變換分析
    第12講 變換分析、事務(wù)分析
    第13講 詳細(xì)設(shè)計(jì)、JACSON方法
    第14講 編程方法、軟件測(cè)試基本概念
    第15講 白盒測(cè)試法
    第16講 白盒測(cè)試法舉例
    第17講? 黑盒測(cè)試法
    第18講? 黑盒測(cè)試法舉例
    第19講 維護(hù)方法
    第20講? 面向?qū)ο箝_(kāi)發(fā)方法(1)
    第21講? 面向?qū)ο箝_(kāi)發(fā)方法(2)
    第22講? 面向?qū)ο箝_(kāi)發(fā)方法(3)
    第23講? 面向?qū)ο箝_(kāi)發(fā)方法(4)
    第24講? 軟件工具和環(huán)境,案例分析(1)
    第25講? 案例分析(2)
    第26講? 案例分析(3)
    第27講? 案例分析(4)
    第28講? 課堂練習(xí) 模擬試卷一美
    第29講? 模擬試卷一
    第30講? 模擬試卷二
    第31講? 模擬試卷二
    第32講? 模擬試卷二 開(kāi)發(fā)方法比較

    下載地址:
    http://202.119.2.197/netcourses/評(píng)比課件/軟件工程/軟件工程01.csf
    ???????? ....................
    http://202.119.2.197/netcourses/評(píng)比課件/軟件工程/軟件工程32.csf

    If you need them! Be quick!

    posted @ 2006-06-14 16:46 藍(lán)色Saga 閱讀(1218) | 評(píng)論 (3)編輯 收藏

    XML文檔結(jié)構(gòu)包含下面三個(gè)部分:
    * 聲明部分,聲明該文檔是一個(gè)XML文檔.
    * 定義部分,定義XML數(shù)據(jù)的類型以及所使用的DTD(可選).
    * 內(nèi)容部分,用XML標(biāo)簽和注釋標(biāo)注過(guò)的文檔類容.

    聲明

    XML文檔以XML聲明開(kāi)頭,聲明本文檔是一個(gè)XML文檔.一般這樣書(shū)寫(xiě):
    <? xml version encoding standalone?>
    定義符<?和?>表示這是一條給XML解析器的處理指令.雖然聲明這條語(yǔ)句是可有可無(wú)的,但考慮到以后的兼容,建議讀者還是寫(xiě)上為好.隨著語(yǔ)言的進(jìn)一步發(fā)展,以后的瀏覽器如果知道文檔所用的XML版本的話,將是有好處的.這天語(yǔ)句必須全部用小寫(xiě).
    在上面的聲明中version表示的XML的標(biāo)準(zhǔn)版本號(hào).encoding表示的是文檔所用的編碼.standalone用來(lái)指定在XML文檔被解析之前,是否使用外部或內(nèi)部DTD,它的值只能是yes或no.如果為no,表示使用外部DTD;如果為yes表示使用內(nèi)部DTD;如果不使用DTD,則不使用這個(gè)屬性.
    看下面的實(shí)際例子:
    <?xml version="1.0" encoding="UTF-8" standalone="yes">
    在XML聲明之后,緊接著是類型定義部分,定義XML文檔中數(shù)據(jù)的類型.

    文檔定義類型(DTD)

    DTD是用來(lái)定義XML文檔內(nèi)容的結(jié)構(gòu)的,以便按統(tǒng)一的格式存儲(chǔ)信息.DTD規(guī)定了XML文檔中可以出現(xiàn)哪些元素;這些元素是必須的還是可選的;這些元素有什么屬性;以及它們之間的相互位置關(guān)系,等等.XML允許用戶為自己的應(yīng)用程序定義專用的DTD,這樣用戶就可以完全檢查文檔結(jié)構(gòu)和內(nèi)容的過(guò)程了.這一檢驗(yàn)過(guò)程稱為有效化,嚴(yán)格依從一個(gè)DTD的XML文檔被稱作有效文檔.
    創(chuàng)建DTD的過(guò)程與在數(shù)據(jù)庫(kù)里創(chuàng)建數(shù)據(jù)表是類似的.在DTD中,用戶定義用來(lái)表示數(shù)據(jù)的元素,然后規(guī)定數(shù)據(jù)的結(jié)構(gòu),并規(guī)定這個(gè)元素是可選的還是必須的,這就好比創(chuàng)建數(shù)據(jù)表的列;然后你把數(shù)據(jù)存入XML文檔,就好比添加數(shù)據(jù)表的記錄.
    XML文檔使用的元素可以在內(nèi)部DTD中定義,也可以在外部DTD中定義.

    內(nèi)部DTD
    DTD可以作為文檔的一部分直接放到文檔里面,這樣的DTD只能用于包含它的這個(gè)文檔,別的文檔就不能使用了.創(chuàng)建內(nèi)部DTD的語(yǔ)法如下:
    <!DOCTYPE rootelement
    [element and attribute declarations]
    >
    <!DOCTYPE標(biāo)識(shí)文檔類型定義的開(kāi)始,屬性rootelement指明跟元素名字.

    為部DTD
    外部DTD是一個(gè)單獨(dú)的文件,存放XML文檔中可以使用的全部元素及屬性的定義.你可以在多個(gè)文檔中同時(shí)使用同一個(gè)DTD,以便保持多個(gè)文檔之間數(shù)據(jù)結(jié)構(gòu)的一致性。
    在XML文檔中引用外部DTD的語(yǔ)法如下:
    <!DOCTYPE rootelement [PUBLIC|SYSTEM] "name-of-file">
    其中,DOCTYPE標(biāo)識(shí)這是文檔類型定義部分;rootelement代表根元素;PUBLIC表示這個(gè)DTD是存放在公用服務(wù)器上的;SYSTEM表示這個(gè)DTD是存放在本地計(jì)算機(jī)系統(tǒng)上的;Name-of-file是被引用的DTD文件的名稱.

    DTD字符
    下表是DTD中使用的部分專用字符及其含義.
    DTD字符含義舉例描述
    ,指定順序中的"與"Firstname ,LastnameFirstname與Lastname,以此順序
    |"或"Firstname | LastnameFirstname或Lastname
    ?"可選項(xiàng)',只能出現(xiàn)一次Lastname?可以不出現(xiàn)Lastname,但如果使用,則只能出現(xiàn)一次
    ()用于組成元素(Firstname | Lastname),Address一個(gè)Firstname或Lastname元素必須出現(xiàn)在Address元素之前
    *該元素可以不出現(xiàn)也可以出現(xiàn)多次(Firstname | Lastname)*可以以任何順序出現(xiàn)任意個(gè)數(shù)Firstname或Lastname元素
    ? 該元素至少出現(xiàn)一次也可以出現(xiàn)多次(Firstname +)可以出現(xiàn)多個(gè)Firstname元素

    在DTD中定義元素

    元素是XML文件的基本組成部分.每個(gè)元素都是用標(biāo)簽標(biāo)識(shí)的一小段數(shù)據(jù).標(biāo)簽包括了元素的名字和屬性.
    XML允許用于創(chuàng)建自己的元素集.因此,元素名應(yīng)該取得容易記憶,并且最好有一定的含義,讓人一看到它,便對(duì)里面的數(shù)據(jù)有個(gè)大概的了解.XML是大小寫(xiě)敏感的,所以要么你全用大寫(xiě),要么就一律用小寫(xiě).
    定義元素的語(yǔ)法如下:
    <!ELEMENT elementname content>
    在DTD中,你通過(guò)創(chuàng)建一個(gè)元素內(nèi)容模型(element content model)來(lái)精確的規(guī)定一個(gè)元素中是否喊有其它元素,可以出現(xiàn)多少次以及按什么順序出現(xiàn).如果元素中只包含別的元素,而不包含字符數(shù)據(jù),我們就說(shuō)它只含有元素內(nèi)容.

    XML中命名元素的規(guī)則
    * 元素名至少要含有一個(gè)字母(a-z或A-Z中的一個(gè))
    * 元素名可以用下劃線(_)或冒號(hào)( : )開(kāi)頭.
    * 第一個(gè)字符后面可以是一個(gè)或多個(gè)字母,數(shù)字,連字符,下劃線或句號(hào),但不能是空格和定位符(tab),至于標(biāo)點(diǎn)符號(hào)只能使用連字符(-)和句號(hào)(.).

    對(duì)于完整的命名規(guī)則,請(qǐng)參看http://www.w3.org/XML/上的在線XML介紹

    元素類型
    元素有空元素,自由元素和容器元素三種(如下表:)
    元素類型語(yǔ)法 
    空元素(Empty)<!ELEMENT empty.element EMPTY><!ELEMENT empty.element EMPTY>
    自由元素(Unrestricted)<!ELEMENT any.element ANY><!ELEMENT any.element ANY>
    容器元素(Container)<!ELEMENT TITLE(#PCDATA)><!ELEMENT TITLE(#PCDATA)>
    PCDATA 表示 parsable character data,既可解析的字符數(shù)據(jù).為了避免將這一關(guān)鍵字與普通的元素名混淆起來(lái),在此關(guān)鍵字前加前綴字符#.

    分析下面的標(biāo)簽結(jié)構(gòu):
    <student>
    <firstname> Blove </firstname>
    <lastname> Saga </lastname>
    <rollno> 49 </rollno>
    <score> 70 </score>
    </student>
    要使上面的文檔生效,必須創(chuàng)建一個(gè)DTD,里面包含student,firstname,lastname,rollno,score等五個(gè)元素的定義.另外,還要規(guī)定這五個(gè)元素是必須的或可選的;以規(guī)定順序或任意排序;以及它們出現(xiàn)的次數(shù).用戶為這些規(guī)定編寫(xiě)元素定義,每個(gè)元素的定義可能不同.
    譬如,如果firstname和lastname都是必需的元素,并且firstname要在lastname后面,那么DTD可以這樣編寫(xiě):
    <!ELEMENT student ?(firstname,lastname)><!--元素內(nèi)容-->
    <!ELEMENT firstname (#PCDATA)><!--元素內(nèi)容-->
    <!ELEMENT?lastname? (#CDATA)><!--元素內(nèi)容-->
    注意:
    數(shù)據(jù)類型#CDATA表示元素包含字符型數(shù)據(jù),解析器不解析這些數(shù)據(jù),其中的標(biāo)簽是不作為標(biāo)記的.
    數(shù)據(jù)類型#PCDATA表示元素包含字的數(shù)據(jù)將由解析器解析,其中的標(biāo)簽是被作為標(biāo)記處理.
    posted @ 2006-06-13 16:42 藍(lán)色Saga 閱讀(504) | 評(píng)論 (0)編輯 收藏

    ? XML 文檔是一個(gè)含XML標(biāo)記的ASCII文本文件,它的擴(kuò)展名是.xml, 如: employee.xml在開(kāi)始編寫(xiě)XML文檔之前,你應(yīng)該了解組成XML文檔的各個(gè)部分.一個(gè)XML文檔的主要成分包括:

    ?* 元素
    ?*?內(nèi)容
    ?* 屬性
    ?* 注釋

    ?元素
    ?元素是XML文件的基本構(gòu)造塊,作為主要的標(biāo)注組件,用來(lái)描述文件的內(nèi)容.每一個(gè)元素用一個(gè)標(biāo)簽來(lái)表示一段文本信息.大部分標(biāo)簽是成對(duì)出現(xiàn)的,開(kāi)始標(biāo)簽在數(shù)據(jù)的開(kāi)始處,結(jié)束標(biāo)簽放在數(shù)據(jù)的末尾.開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽之間嵌有信心的元素稱為容器元素.例如:
    ??? <Title> My Title </Title>
    我們知道,上面語(yǔ)句中的Title是HTML里的元素,用來(lái)顯示瀏覽器窗口的標(biāo)題.在XML里,你可以創(chuàng)建自己的元素,如:
    ?? <empname> John Rambo </empname>
    在上面的語(yǔ)句中,empname是由開(kāi)始標(biāo)記(<>)和結(jié)素標(biāo)記(</>)定義的元素,嵌在這兩個(gè)標(biāo)簽中的信息就是這個(gè)元素的內(nèi)容.利用元素嵌套,你可以構(gòu)建一個(gè)分層的結(jié)構(gòu).
    也有一些標(biāo)簽不是成對(duì)出現(xiàn)的,被稱作空元素.空元素不能包含的元素或數(shù)據(jù),因?yàn)樗鼪](méi)有開(kāi)始和結(jié)束標(biāo)簽.最簡(jiǎn)單的空元素例子是用<BR>標(biāo)簽表示的斷行元素.
    在一個(gè)XML文件中,可以有一個(gè)或多個(gè)元素,但只能有一個(gè)根元素,根元素下面允許有多個(gè)子元素.

    內(nèi)容
    在XML中,由元素表示的信息,稱為內(nèi)容.請(qǐng)看下面的例子:
    ? <TITLE> LION KING </TITLE>
    上面這行語(yǔ)句中,LION KING就是TITLE元素所表示的內(nèi)容.

    屬性
    屬性提供元素的補(bǔ)充信息.每個(gè)屬性有一個(gè)屬性名和屬性值,屬性值可以是數(shù)字,單詞,或URL.

    在HTML中,我們經(jīng)常使用字體元素的顏色屬性,如:
    <Font color="red">Displayed in red</Font>
    其中,color是屬性名,其屬性值是red.
    在XML中,屬性值一律要加上引號(hào).例如:
    <empname doj="2006">John Rambo</empname>
    這里,"2006"是doj屬性(data of joining)的屬性值,用來(lái)描述元素empname.

    注釋
    注釋是用來(lái)給XML文檔加上注釋的,瀏覽器和XML處理器都忽略注釋,不加處理.使用注釋的好處是能使所有使用XML文檔的人都對(duì)文檔中各種元素的用法一目了然.

    要在XML文件中輸入注釋,可以依次輸入一個(gè)小于號(hào),一個(gè)感嘆號(hào)和兩個(gè)橫杠,再輸入注釋的文本內(nèi)容,并確保文本中沒(méi)有兩個(gè)橫杠.這一點(diǎn)W3C規(guī)定的,以保持XML與SGML的兼容.最后輸入兩個(gè)橫杠和一個(gè)大于號(hào)來(lái)結(jié)束注釋.例如:
    <!-- Writing comments in XML Documents-->
    這就是注釋.


    結(jié)構(gòu)良好的XML文檔
    一個(gè)結(jié)構(gòu)良好的XML文檔應(yīng)該遵守以下五個(gè)基本規(guī)則:

    * 標(biāo)簽不能隱含,必須顯式出現(xiàn).每一個(gè)起始標(biāo)簽必須有對(duì)應(yīng)的結(jié)束標(biāo)簽;每一個(gè)結(jié)束標(biāo)簽也必須有對(duì)應(yīng)的起始標(biāo)簽,對(duì)比一下HTML和XML的不同:

    在HTML中,可以用下面的這段代碼創(chuàng)建一個(gè)編號(hào)列表:
    <OL>
    <LI> Number list item one
    <LI> Number list item two
    <LI> Number list item three
    </OL>
    在上訴代碼中,用<OL>和</OL>來(lái)表示這是一個(gè)順序列表,用<LI>表示當(dāng)前列表項(xiàng)的開(kāi)始,而列表項(xiàng)的結(jié)束,則是靠后一列表項(xiàng)的開(kāi)始來(lái)暗示的.如果這段代碼出現(xiàn)在XML文檔中,瀏覽器是不會(huì)正確解析這個(gè)頁(yè)面的,
    因?yàn)樗⒉皇且粋€(gè)結(jié)構(gòu)良好的文檔.
    XML文檔中的標(biāo)簽必須顯式出現(xiàn),不能隱含.如果用XML實(shí)現(xiàn)上面的例子,必須這樣書(shū)寫(xiě):
    <OL>
    <LI> Number list item one</LI>
    <LI> Number list item two</LI>
    <LI> Number list item three</LI>
    </OL>
    從上面這個(gè)例子中,你能看到,第一個(gè)列表必須包含在開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽之間,以滿足結(jié)構(gòu)良好的XML文檔的第一個(gè)規(guī)則.

    * 空標(biāo)簽的結(jié)束字符'>'前必須使用'/'字符.
    所謂空標(biāo)簽,是指標(biāo)簽的所有信息都放在它的分界符里,沒(méi)有任何屬于它的文本信息.比如象HTML中的<BR>和<IMG>,都不需要結(jié)束標(biāo)簽,因?yàn)闃?biāo)簽里已經(jīng)包含了所有的信息.

    HTML中的標(biāo)簽全部是預(yù)定義的,瀏覽器能夠直接識(shí)別.但是必須記住,XML中沒(méi)有任何預(yù)定義的標(biāo)簽,用戶為自己的頁(yè)面定義自己的語(yǔ)言.正因?yàn)檫@樣,XML并不能知道<BR>,<IMG>是空標(biāo)簽,你必須在標(biāo)簽的結(jié)束處加上斜杠(/),來(lái)指明他們是空標(biāo)簽.就像這樣:
    <BR/>
    <IMG SRC="image.gif"/>

    * 所有的屬性值必須用雙引號(hào)括起來(lái).
    在HTML當(dāng)中,下面的語(yǔ)法是正確的:
    <TD WIDTH="25%">
    <TD WIDTH=25%>
    然而在XML當(dāng)中,由于屬性值必須用引號(hào)括起來(lái),所以只有前面一句和</TD>配合起來(lái)才是合法的.

    * 標(biāo)簽不能交疊使用
    比如說(shuō),下面這行語(yǔ)句就交疊起來(lái)了:
    <CITY>Chicago<STATE>Michigan</CITY></STATE>
    在XML中,必須從里到外地關(guān)閉標(biāo)簽,正確的順序是:
    <CITY>Chicago<STATE>Michigan</STATE></CITY>

    * 標(biāo)簽大小寫(xiě)敏感,每次都必須嚴(yán)格匹配
    在XML文檔中,必須區(qū)分大小寫(xiě),如果你寫(xiě)了如下的語(yǔ)句,將導(dǎo)致一個(gè)致命的錯(cuò)誤(fatal error):
    <P> Able was I, ere I saw Elba</p>
    標(biāo)簽<P>不能用來(lái)關(guān)閉標(biāo)簽</p>,因?yàn)閮烧叩拇笮?xiě)是不同的.所有的標(biāo)簽必須大小寫(xiě)嚴(yán)格匹配.

    一個(gè)結(jié)構(gòu)良好的XML文檔,就是一個(gè)嚴(yán)格遵循XML標(biāo)簽規(guī)則,但沒(méi)有文檔類型定義(DTD, Document Type Definition)的文檔.

    posted @ 2006-06-13 13:08 藍(lán)色Saga 閱讀(397) | 評(píng)論 (0)編輯 收藏

    理解XML
    ?
    ??? XML表示可擴(kuò)展標(biāo)記語(yǔ)言(eXtensible Markup Language).其中,"可擴(kuò)展"這個(gè)詞意味著開(kāi)發(fā)者能夠自由擴(kuò)展在描述文件方面的能力,可以為自己的應(yīng)用程序定義有實(shí)際意義的標(biāo)簽.XML是基于文本的,允許開(kāi)發(fā)者在各種應(yīng)用程序之間傳遞和交換結(jié)構(gòu)化數(shù)據(jù),同時(shí)大大便利了不同服務(wù)器之間的數(shù)據(jù)傳輸.用XML表注的數(shù)據(jù)能夠被所有的設(shè)備識(shí)別,從帶主機(jī)的大型機(jī)和微型機(jī),到掌上電腦和蜂窩電話.
    ??? 與諸如HTML,DHTML,CSS等其他網(wǎng)頁(yè)技術(shù)相比,XML更注重?cái)?shù)據(jù)的結(jié)構(gòu),而不是數(shù)據(jù)的表現(xiàn)形式.讓我們看看下面的這段代碼:
    ?<B>XML Bible</B>
    ?<P>
    Elliotte Rusty Harold <BR>
    IDG Books Worldwide <BR>
    $39.99
    ??? 稍微看一下,你可能已經(jīng)知道了,它將的是一本關(guān)于書(shū)的基本信息:作者,出版社,價(jià)格.但是,這里用作標(biāo)記的元素,比如<B>,<P>等,并沒(méi)有揭示出這是一本有關(guān)書(shū)的信息,它只是描述了這幾行信息是如何顯示的.比如,在第一行中用了<B>,就表示瀏覽器處理的時(shí)候,要以粗體字顯示這行文本.
    ??? 同樣對(duì)這些信息,我們用XML標(biāo)注如下:
    <BOOK>
    <NAME>XML Bible</NAME>
    <AUTHOR>Elliotte Rusty Harold</AUTHOR>
    <PUBLISHER>IDG Books Worldwide</PUBLISHER>
    <PRICE>$39.99</PRICE>
    </BOOK>
    ??? 上面的小例子揭示出,通過(guò)定義一些有含義的標(biāo)簽,XML擴(kuò)展了用戶描述文件的能力.你可以根據(jù)應(yīng)用程序的需要,定義任意多個(gè)標(biāo)簽.在上面的代碼段中,沒(méi)有任何關(guān)于如何顯示信息的描述.XML將數(shù)據(jù)的結(jié)果與顯示分離開(kāi)來(lái),這似乎不太合理,其實(shí)很有益處的.

    使用XML的優(yōu)越性

    ?
    ??? XML不僅對(duì)數(shù)據(jù)從服務(wù)器到客戶端的傳輸大有好處,對(duì)于應(yīng)用程序之間的數(shù)據(jù)傳輸,也是十分理想的.我們將它的優(yōu)越性列舉如下:
    * 可使用特定領(lǐng)域的詞匯
    *? 數(shù)據(jù)交換
    *? 智能化查詢
    *? 讓用戶選擇顯示的數(shù)據(jù)
    *? 局部更新

    可使用特定領(lǐng)域的詞匯
    ??? XML是沒(méi)有預(yù)定義標(biāo)簽的,你必須自己定義標(biāo)簽,用來(lái)標(biāo)注你的數(shù)據(jù).也就是說(shuō),你可以用XML創(chuàng)建自己的表注語(yǔ)言(稱為XML詞匯表).XML允許每個(gè)特定的行業(yè)根據(jù)需要定義自己的標(biāo)簽集合,這樣瀏覽器就不必處理成千上萬(wàn)的標(biāo)簽集了.利用XML,已經(jīng)創(chuàng)建了若干新的標(biāo)記語(yǔ)言,比如W3C特別推薦的MathML,一種用于顯示數(shù)學(xué)公式和科學(xué)數(shù)據(jù)的專用標(biāo)記語(yǔ)言,就是基于XML的.

    數(shù)據(jù)交換
    ??? 數(shù)據(jù)交換在進(jìn)行電子商務(wù)的交易時(shí)是極為重要.數(shù)據(jù)交換的關(guān)鍵在于企業(yè)之間或企業(yè)內(nèi)部部門(mén)之間的標(biāo)準(zhǔn)數(shù)據(jù)接口,使用存儲(chǔ)格式不同的數(shù)據(jù)能夠進(jìn)行交換.XML為以文本格式式存儲(chǔ)的數(shù)據(jù)提供了對(duì)于結(jié)構(gòu)的定義和管理,可以作為數(shù)據(jù)交換的標(biāo)準(zhǔn)格式或協(xié)議,是數(shù)據(jù)交換雙方的系統(tǒng)差異變得無(wú)關(guān)緊要,并且產(chǎn)生清晰易讀的文件.XML避免了同類產(chǎn)品的一些常見(jiàn)弊病,如擴(kuò)展性差,缺乏國(guó)際化和本地化的支持,平臺(tái)相關(guān)等.作為一種非常健壯的數(shù)據(jù)交換格式,XML將繼續(xù)發(fā)展,不斷完善.

    智能化查詢
    ??? 由于XML的出現(xiàn),只能搜索引擎將成為現(xiàn)實(shí),可將XML文檔中的數(shù)據(jù)進(jìn)行智能化搜索,得到更精確的查詢結(jié)果.為了更好的理解XML實(shí)現(xiàn)內(nèi)容定義的意義,我們來(lái)比較一下下面的兩個(gè)例子:
    例1: The best pricture award in 1998 went to the film <I>Titanic</I>.
    例2: The best pricture award in 1998 went to the film? <FILM>Titanic<FILM>.
    在第一例子中,搜索引擎并不能確定所涉及的一艘輪船,一場(chǎng)表演,一部電影,抑或是一個(gè)形容詞.這樣的搜索精度比較低.而在第二個(gè)例子中,你能知道"Titanic"是一部電影的名字.如果現(xiàn)在搜索引擎要搜索的是電影 "Titanic",那么在這個(gè)文檔中就能找到一個(gè)精確的匹配項(xiàng).

    ?讓用戶選擇顯示的數(shù)據(jù)
    ????? XML支持用戶端的數(shù)據(jù)處理.用戶可以選擇一個(gè),若干或全部數(shù)據(jù)記錄,也可以按照不同的屬性進(jìn)行排序,或者切換到圖形化查看方式,而且不需要服務(wù)器針對(duì)每一次操作發(fā)送數(shù)據(jù).相同的數(shù)據(jù)可以用不同的方式來(lái)顯示,也可以僅僅顯示數(shù)據(jù)的一個(gè)子集,這些都取決于用戶與這些數(shù)據(jù)的相對(duì)關(guān)系.比如,會(huì)計(jì)部門(mén)是可以訪問(wèn)財(cái)務(wù)信息的,而購(gòu)買(mǎi)東西的顧客卻不能反問(wèn)這部分信息.

    ?局部更新
    ????? 當(dāng)需要更新XML文檔中的數(shù)據(jù)時(shí),并不需要更新整個(gè)頁(yè)面,而只要重新下載那些變化了的數(shù)據(jù),這顯然加快了更新的速度.例如:股票交易中的數(shù)據(jù)是動(dòng)態(tài)的,如果每次都更新整個(gè)頁(yè)面的話,都需要很多時(shí)間.而使用XML,將只改變變化了的數(shù)據(jù).

    XML的設(shè)計(jì)目標(biāo)
    ?????
    XML是針對(duì)大規(guī)模的電子出版物的挑戰(zhàn)來(lái)設(shè)計(jì)的,同時(shí)在Web數(shù)據(jù)的交換中也充當(dāng)著越來(lái)越重要的角色.
    根據(jù)W3C的有關(guān)文件,XML將在如下幾個(gè)方面發(fā)揮重要作用:
    * 實(shí)現(xiàn)國(guó)際化,獨(dú)立于媒體的電子出版.
    * 允許個(gè)產(chǎn)業(yè)部門(mén)制訂與平臺(tái)無(wú)關(guān)的數(shù)據(jù)交換協(xié)議,尤其針對(duì)電子商務(wù)數(shù)據(jù)交換的協(xié)議.
    * 使用允許自動(dòng)處理的格式,將信息傳遞給用戶代理商
    * 讓人們用低價(jià)軟件就可以實(shí)現(xiàn)數(shù)據(jù)處理
    * 允許人們按照自己的方式顯示信息
    * 提供一種有關(guān)信息的數(shù)據(jù)(寫(xiě)作 metadata),以幫助人們尋找和發(fā)現(xiàn)信息,實(shí)現(xiàn)信息的生產(chǎn)者和消費(fèi)者之間的雙向?qū)ふ?

    ? 任何形式電子商務(wù)的成功,都有賴于一個(gè)公共詞匯表的廣泛使用.部分XML詞匯表列舉如下:

    ? 頻道定義格式(CDF, Channel Definition Format)-一種基于XML的,用于創(chuàng)建web頻道的數(shù)據(jù)格式.所謂web頻道,是一種實(shí)現(xiàn)web服務(wù)器到客戶端的數(shù)據(jù)自動(dòng)發(fā)送的技術(shù).
    ?
    ? 開(kāi)放軟件描述(OSD, Open Software Description)-用于網(wǎng)上自動(dòng)安裝軟件,而不需要任何人工干預(yù).

    ? 開(kāi)放式金融交易(OFX, Open financial Exchange)-被個(gè)人金融應(yīng)用程序用來(lái)作為個(gè)人和金融組織之間進(jìn)行網(wǎng)上交流的工具.

    ? Meta內(nèi)容框架(MCF, Meta Content Framework)-用來(lái)定義關(guān)于信息的數(shù)據(jù),以實(shí)現(xiàn)對(duì)信息的編目和搜索.

    ? 資源描述框架(RDF, Resource Description Framework)-用于描述各種類型的資源,以實(shí)現(xiàn)對(duì)資源的編目,搜索和引用.

    ? 無(wú)線標(biāo)記語(yǔ)言(WML, Wireless Markup Language)-用于在無(wú)線網(wǎng)絡(luò)上的數(shù)據(jù)奮發(fā),采用無(wú)線訪問(wèn)協(xié)議.

    ? 化學(xué)標(biāo)記語(yǔ)言(CML, Chemical Markup Language)-用來(lái)定義化學(xué)公式.
    ?
    ?? 數(shù)學(xué)標(biāo)記語(yǔ)言(MathML, Mathematical Markup Language)-用來(lái)定義復(fù)雜的數(shù)學(xué)公式.

    posted @ 2006-06-13 12:02 藍(lán)色Saga 閱讀(219) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲乱码中文字幕综合234| 午夜无遮挡羞羞漫画免费| 亚洲精品在线免费看| 成人免费一级毛片在线播放视频| 成熟女人特级毛片www免费| 国产一精品一aⅴ一免费| 亚洲日韩精品无码专区网址| 91亚洲国产成人精品下载| 在线观看日本亚洲一区| 一级毛片a女人刺激视频免费| 男人的天堂网免费网站| 国产香蕉九九久久精品免费| 亚洲午夜成人精品电影在线观看| 亚洲av色影在线| 亚洲熟妇AV乱码在线观看| 国产亚洲精品免费视频播放| AV无码免费永久在线观看| 免费午夜爽爽爽WWW视频十八禁| 国产亚洲综合成人91精品| 亚洲国产日韩综合久久精品| 香蕉免费看一区二区三区| 国产大片免费网站不卡美女 | 91麻豆最新在线人成免费观看| 免费国产怡红院在线观看| 亚洲成AV人片一区二区密柚| 亚洲第一成年免费网站| 男人j进入女人j内部免费网站| 日韩一区二区三区免费体验| 亚洲伦理一区二区| 阿v免费在线观看| 18女人毛片水真多免费| 亚洲精品乱码久久久久久蜜桃| 亚洲精品福利网泷泽萝拉| 手机永久免费的AV在线电影网| 最近在线2018视频免费观看| 亚洲国产精品13p| 亚洲国产成a人v在线观看| 中国在线观看免费的www| 国产无遮挡吃胸膜奶免费看| 亚洲v高清理论电影| 永久免费无码日韩视频|