萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> 腳本Html教程 >> xml格式化後轉化為html

xml格式化後轉化為html

由於項目的需要,最近學習了XLST和xml向html的轉變。
    XML文檔的終極目標就是做為一個信息的基本類型來存儲信息,載被轉化為不同的格式來用於各種應用。W3C提出了擴展樣式語言規范來實現上述的目的。XSLT(the eXtensible Stylesheet Language Transformation)既是用於XML文本的轉化和格式化的標准語言。現面用一個簡單的例子來說明XML文件是如何格式化後轉化為和HTML的。
    以下是XML文件的一部分。描述了數據庫中的實體:
< ?xml version="1.0" encoding="utf-8" ?
< Entities>
  < Entity title="公司客戶" name="Company" module="Users">
    < Item title="名稱" name="Name" type="text"/>
    < Item title="編號" name="Number" type="text" property="get"/>
    < Item title="經理" name="Manage" type="text"/>
    < Item title="電話" name="Phone" type="text"/>
    < Item title="聯系人" name="Linkman" type="text"/>
    < Item title="地址" name
="Address" type="text"/>
    < Item title="傳真" name="Fax" type="text" require="false"/>
  < /Entity>
  < Entity title="用戶" name="User" module="Users">
    < Item title="電子郵箱" name="Email" type="text"/>
    < Item title="密碼" name="Password" type="text"/>
    < Item title="消費總額" name="TotalConsumption" type="int"/>
    < Item title="真實姓名" name="Name" type="text" require="false"/>
    < Item title="公司" name="Company" type="entity" entityName="Company" require="false"/>
  < /Entity>
  < Entity title="用戶地址" name="UserAddress" module="Users">
    < Item title="用戶" name="User" type="entity" entityName="User" />
    < Item title="地址" name="Address" type="text" />
    < Item title="電話" name="Phone" type="text"/>
    < Item title="是否是默認" name="IsDefault" type="bool" />
  < /Entity>
< /Entities>
 我現在想做的就是將xml文件轉化為表格的形式,是實體及屬性能過比較直觀的表現出來。下面是對應這個XML文件的XLST:

< ?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:template match="/">
    < html>
      < body>
        < h2 align="center">
          短途餐飲物流平台實體數據分析< br />
        < /h2>
        < xsl:apply-templates select="Entities/Entity"/>//對Entity節點應用模板
      < /body>
    < /html>
  < /xsl:template>
//Entity節點所對應的模板
  < xsl:template match="Entity ">
    < b>
      < font color="bisgue">
        < xsl:value-of select="@title"/>(< xsl:value-of select="@name"/>)數據分析:
      < /font>
      < br />
    < /b>

    < table width="70%" bordercolor="black" border="1">
      < tr align="center"  style="background-color:White;">
        < th width="20%" >數據名稱< /th>
        < th width="20%">代碼< /th>
        < th width="20%">類型< /th>
        < th width="20%">是否可以為空< /th>
        < th>描述< /th>
      < /tr>
      < xsl:for-each select="Item">//對節點的批量處理,他與元素xsl:apply-templates是兩種不同的方法但輸出的結果是想通的。
    < tr align="center">
         < td>
            < xsl:value-of select="@title"/>
          < /td>
          < td>
            < xsl:value-of select="@name"/>
          < /td>
          < td>
            < xsl:value-of select="@type"/>
          < /td>
          < td>
            < xsl:apply-templates select="@require"/>
            < xsl:if test="not(@require)">//判斷是否存在某個節點,用函數not(欲判斷的節點)
              否
            < /xsl:if>
          < /td>
          < td>
            < xsl:value-of select="(@description)"/>
            < xsl:if test="not(@description)">
              null
            < /xsl:if>
          < /td>
        < /tr>
      < /xsl:for-each>
    < /table>
    < br />
  < /xsl:template>
  <

copyright © 萬盛學電腦網 all rights reserved