利用AJAX+J2EE開發(fā)組織機(jī)構(gòu)管理系統(tǒng)(轉(zhuǎn)載)四
四、 XML 與XSL文件設(shè)計(jì)XML是種可擴(kuò)展的標(biāo)記語言,它具有開放的、可擴(kuò)展的、可自描述的語言結(jié)構(gòu),它已經(jīng)成為網(wǎng)上數(shù)據(jù)和文檔傳輸?shù)臉?biāo)準(zhǔn)。XSLT的目的是將信息內(nèi)容與 Web 顯示分離,HTML 通過按抽象概念(如段落、重點(diǎn)和編號(hào)列表)定義顯示來實(shí)現(xiàn)設(shè)備獨(dú)立性。XSLT用來具體顯示控件,設(shè)置控件風(fēng)格。
Ajax主要使用XML和XSLT進(jìn)行數(shù)據(jù)交換與處理。
1. 樹信息的XML文件(見root.xml文件)
XML是標(biāo)記語言,元素必須成對(duì)出現(xiàn)。樹結(jié)構(gòu)中以tree為根結(jié)點(diǎn),以item為結(jié)點(diǎn)體,屬性text指出結(jié)點(diǎn)所顯示的文本,id指出唯一的所標(biāo)識(shí)號(hào)。
<?xml version='1.0' encoding='gb2312'?> <tree id="0"> <item child="1" text="組織" id="1" > </item> </tree> |
這文件并不是必要的,只是為了系統(tǒng)能獨(dú)立運(yùn)行才加的。事實(shí)如果連接了后臺(tái)數(shù)據(jù)是不需要的。只要吧OrgTree.loadXML("root.xml?0")改為OrgTree.loadXML("Org.jsp")就可以了。
2. 人員信息XML文件(見peorson.xml文件)
說明![CDATA[]]可在任何顯示任何格式的文本,文本中可插入其它任何字符。這文件也不是必要的。
3. 人員信息展現(xiàn)的xsl文件(見addOrgPerson.xsl文件)
xsl文件同樣是XML格式文件。所以一律遵守XML標(biāo)準(zhǔn)。下面對(duì)主要的行講解:
<?xml version="1.0" encoding="gb2312"?> //這是定義xml文件的首行。用來指明版本及字符集 <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="JavaScript"> //這里定義了stylesheet 元素。并指出其國(guó)際命名的組織及語言。 <xsl:template match="/"> <xsl:apply-templates select="peorsones"/> </xsl:template> //上面是匹配的規(guī)則。"/"表示從根結(jié)開始去匹配。匹配到下面的peorsones標(biāo)記。這是正則表達(dá)式有關(guān)的學(xué)問。我們只要理解就可以。 <xsl:template match="peorsones"> //當(dāng)匹配上peorsones時(shí)所要做的事情。 <table id="tbList" border="1" width="100%"> //定義一個(gè)id為"tbList的表格。此表格是顯示在WEB上的 <xsl:for-each select="peorsone"> //循環(huán)匹配peorsone <tr> //定義tbList表格的一行,并在行上增加一個(gè)叫seqNo的屬性名,值為匹配到的seqNo(序號(hào)) <xsl:attribute name="seqNo"><xsl:value-of select="@seqNo"/></xsl:attribute> <td> //定義行上的一列,列又去匹配 <xsl:apply-templates select="."/> </td> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template match="peorsone"> <table border="1" width="100%"> <tr> //定義寬為5%的一列,在該列上插入一個(gè)checkbox控件 <td width="5%"> <input type="checkbox" value="on" size="10"></input> </td> //定義一個(gè)不顯示的列,在該列上插入一個(gè)text控件,text的值為匹配到的personId(人員Id) <td style="display:none"> <input type="text" size="25"> <xsl:attribute name="value"><xsl:value-of select="personId"/></xsl:attribute> </input> </td> <td width="30%"> <input type="text" size="20"> <xsl:attribute name="value"><xsl:value-of select="personCode"/></xsl:attribute> </input> </td> <td width="40%"> <input type="text" size="40"> <xsl:attributename="value"><xsl:value-of select="personName"/></xsl:attribute> </input> </td> //定義一個(gè)width為28%的列,在該列上插入一個(gè)下拉列表select 控件,select的值如果匹配到為0時(shí)則為"男",1時(shí)則為"女" <td width="28%"> <select size="1"> <o(jì)ption value="0"> <xsl:if test=".[sex=0]"> <xsl:attribute name="selected">true</xsl:attribute> </xsl:if> 男 </option> <o(jì)ption value="1"> <xsl:if test=".[sex=1]"> <xsl:attribute name="selected">true</xsl:attribute> </xsl:if> 女</option> </select> </td> //定義一列,在該列上插入一個(gè)button控件,onclick 事件為自定義的方法,該方法傳遞當(dāng)前單擊的按紐 <td width="*"> <button onclick="openPersonRolePage(this)" style="width: 36; height: 21">角色</button> </td> </tr> </table> </xsl:template> </xsl:stylesheet> |
posted on 2006-12-05 21:34 鴻雁 閱讀(161) 評(píng)論(0) 編輯 收藏