<?xml version="1.0" encoding="utf-8"?> <table id="books" border="1"> <tr bgcolor="yellow"> <th>书号</th> <th>书名</th> <th>价格</th> </tr> <tr class="book"> <td>8475484848</td> <td>XML技术</td> <td>80</td> </tr> <tr class="book"> <td>35235348</td> <td>Python programming</td> <td>65</td> </tr> <tr class="book"> <td>67676348</td> <td>Java development</td> <td>76</td> </tr> <tr class="book"> <td>27974348</td> <td>NodeJS development</td> <td>90</td> </tr> </table>
测试用户期望功能描述如下:
测试用户期望功能用例图如图7.1所示。
数据流核心环节描述如下:
数据流核心环节建模如图7.2所示。
基于分层架构视角的文件包及文件设计如表3.1所述。
序号 | 包设计 | 文件设计 |
---|---|---|
1 | 设计表示层包(包名:UI),相当表示层文件容器。 |
|
2 | 设计数据层包(包名:data),相当数据层文件容器。 |
|
文件包建模如图7.3所示。
文件架构如图7.4所示。
文件功能说明见表7.2。
序号 | 文件名 | 作用 |
---|---|---|
1 | Books_new.xml | 创新格式XML文档源文件 |
2 | X.xslt | 格式化XML表格化输出对应XSLT文件 |
3 | XSLT.js | 自定义框架,可实现将XSL与XML绑定并输出格式化数据。 |
4 | main.html | 实现人机交互的用户界面主页 |
5 | jquery-1.11.1.js | 加载Jquery函数库,辅助主页前端处理。 |
UI | 界面处理逻辑文件所在文件夹 | |
data | 数据文件所在文件夹 |
<!DOCTYPE html> <html> <head> <style type="text/css"> .view_sp{ background-color:black; color:white; cursor:pointer } </style> </head> <body> <h2>XSL格式化创新XML文档测试</h2> <hr /> <span class="view_sp" onclick="view_doc('./data/books_new.xml')">查看XML文档</span> <span class="view_sp" onclick="view_doc('./UI/X.xslt')">查看XSL文档</span> <hr /> <input type="button" value="XSLT格式化XML输出" onclick="displayXML('./data/books_new.xml','./UI/X.xslt','result_div')" /> <hr /> <div id="result_div"> </div> </body> </html> <script type="text/javascript" src="./UI/XSLT.js"></script> <script type="text/javascript" src="./UI/jquery-1.11.1.js"></script> <script type="text/javascript"> //查看原始文档 function view_doc(file) { $.get(file, function (data) { alert(data); }, "text"); } </script>
文件X.xslt实现代码:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" > <xsl:output method="html" indent="yes"/> <xsl:template match="/table"> <table border="1"> <tr> <th> <xsl:value-of select="tr[1]/th[1]"/> </th> <th> <xsl:value-of select="tr[1]/th[2]"/> </th> <th> <xsl:value-of select="tr[1]/th[3]"/> </th> </tr> <xsl:for-each select="tr[position()>1]"> <tr> <td> <xsl:value-of select="td[1]"/> </td> <td> <xsl:value-of select="td[2]"/> </td> <td> <xsl:value-of select="td[3]"/> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
文件XSLT.js实现代码:
// JavaScript source code var xhttp; function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml3.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); xhttp.send(""); return xhttp.responseXML; } function displayXML(xmlFile, xsltFile, div_id) { xml = loadXMLDoc(xmlFile); xsl = loadXMLDoc(xsltFile); // code for IE if (window.ActiveXObject) { ex = xml.transformNode(xsl); document.getElementById(div_id).innerHTML = ""; document.getElementById(div_id).innerHTML = ex; } // code for Chrome, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml, document); document.getElementById(div_id).innerHTML = ""; document.getElementById(div_id).appendChild(resultDocument); } }
XSL格式化创新XML文档测试效果如图7.5所示。
问题提出:XSLT文件格式化创新格式XML数据输出的技术要点是什么?
问题思考:
<?xml version="1.0" encoding="utf-8"?> <table id=" trs"> <tr> <th>学号</th> <th>姓名</th> <th>年龄</th> </tr> <tr category="new_student"> <td>8475484848</td> <td>Max</td> <td>18</td> </tr> <tr> <td>35235348</td> <td>Jack</td> <td>20</td> </tr> <tr> <td>67676348</td> <td>Json</td> <td>21</td> </tr> <tr> <td>27974348</td> <td>Rose</td> <td>19</td> </tr> </table>