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>
  < xsl:template match="@require">
    是
  < /xsl:template>
< /xsl:stylesheet>

以下是XML文件在应用到xlst后输出的格式
公司客户(Company)数据分析:

数据名称 代码 类型 是否可以为空 描述
名称 Name text null
编号 Number text null
经理 Manage text null
电话 Phone text null
联系人 Linkman text null
地址 Address text null
传真 Fax text null


用户(User)数据分析:

数据名称 代码 类型 是否可以为空 描述
电子邮箱 Email text null
密码 Password text null
消费总额 TotalConsumption int null
真实姓名 Name text null
公司 Company entity null

用户地址(UserAddress)数据分析:

数据名称 代码 类型 是否可以为空 描述
用户 User entity null
地址 Address text null
电话 Phone text null
是否是默认 IsDefault bool null


下面代码将XML文件转化为和HTML文件:
/// < summary>
        ///将xml转化为html
        /// < /summary>
        /// < param name="XmlPath">xml文件路径< /param>
        /// < param name="XslFilePath">xslt文件路径< /param>
        /// < param name="htmlFilePath">声称的html文件路径< /param>
        public static void XmlTransToHtml(string xmlPath, string xslFilePath, string htmlFilePath)
        {
            //生成Html文件路径
            string HtmlFilePath = htmlFilePath;
            XPathDocument myXPathDoc = new XPathDocument(xmlPath);
            XslCompiledTransform myXslTrans = new XslCompiledTransform();
            //加载XSL文件
            myXslTrans.Load(xslFilePath);
            XmlTextWriter myWriter = new XmlTextWriter(HtmlFilePath, System.Text.Encoding.Default);
            myXslTrans.Transform(myXPathDoc, null, myWriter);
            myWriter.Close();
        }
在测试类中调用这个方法,

运行测试就会得到我们需要的html文件。



相关阅读:
一些技巧性实用js代码小结
修改SQL Server 2005 sa用户密码的方法
Fedora 9下ADSL上网的方法
善用Oracle表空间设计提升数据库性能
动网论坛验证码改进:加法验证码(ASPJpeg版)
DIV+CSS常用的网页布局代码
深入了解MySQL系统日常管理
利用Linux打造安全的管理型网关
MySQL与Access之语法区别
php zip文件解压类代码
给Javascript数组插入一条记录的代码
预览:Dreamweaver CS5新功能更新列表
CSS min-height IE6、IE7、FF下DIV自适应高度
如何在SQL Server中恢复数据
快速导航

Copyright © 2016 phpStudy |