vs.net-[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)数据分析:
数据名称代码类型是否可以为空描述
名称Nametextnull
编号Numbertextnull
经理Managetextnull
电话Phonetextnull
联系人Linkmantextnull
地址Addresstextnull
传真Faxtextnull

用户(User)数据分析:
数据名称代码类型是否可以为空描述
电子邮箱Emailtextnull
密码Passwordtextnull
消费总额TotalConsumptionintnull
真实姓名Nametextnull
公司Companyentitynull
用户地址(UserAddress)数据分析:
数据名称代码类型是否可以为空描述
用户Userentitynull
地址Addresstextnull
电话Phonetextnull
是否是默认IsDefaultboolnull

下面代码将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文件。(编译环境 vs.net 2008)。

转载于:https://www.cnblogs.com/gjy_2008/archive/2008/11/19/1337041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值