`
lovebirdegg
  • 浏览: 171654 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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();
        }

分享到:
评论

相关推荐

    字符串格式化工具JSON、XML、HTML,常用字符串格式转换工具与加密方式查看, Unix时间戳工具

    Java Swing GUI桌面应用工具,集成...1、格式化:JSON、XML、HTML 2、Unix时间戳,获取最新时间,Unix时间戳转化为通用时间字符串格式 3、字符串长度计算 4、Url编码 解码 5、Base64 加密 解密 6、Unicode 编码 解码

    XMLSPY 2010 企业版

    要知道,Tamino产品是世界第一套以纯粹且标准的XML格式进行资料储存于抓取的信息服务器,一个能够将企业资料转换为Internet物件,提供资料交换和应用程序集成环境同时又支持WEB的完整资料管理系统。顺便说说,Tamino...

    适合于初学者的 XML 编辑工具-XMLwriter

    一个集成的预览窗口让你格式化你的 XML 文件,只要使用 CSS、XSL 语言即可。XMLwriter 有一个直观性、个性化的用户界面让使用者编辑,还具有书签功能,自动查找并替代。其他的功能还有 XML 在线帮助、插件管理、即时...

    xml编辑器-xmlwriter_118150

    XMLwriter是来自国外的一款功能强大的适合于初学者的XML编辑工具,它可以在Windows的环境下支持 XML、XSL、DTD、CSS、HTML 及文本格式的文件,它还拥有一个集成的预览窗口,让你格式化你的XML文件,只要使用CSS、XSL...

    lagasafn-xml:用于将发布冰岛法律HTML转换为机器可读XML的工具

    XML格式 可以在的zip文件中以HTML格式下载整个法律。 版本以国会编号表示,编号越高表示版本越新。 例如,版本号“ 148c”表示“第148届议会”,字母“ a”表示这是该议会召集时有效的法律食典的版本。 它是在...

    xml入门教程/xml入门教程

    用记号标识非xml格式的数据 定义格式 &lt;!NOTATION 记号名 SYSTEM "外部标识"&gt; 3)DTD的缺陷,DTD中的类型比较少,有一些约束在DTD中是表达不了的,DTD不支持XML语法. &3.NameSpace(命名空间) namespace是...

    XML实用大全----xml详细参考书

    4.3 XML格式的优点... 71 4.4 编制样式单以便显示文档... 72 4.4.1 与样式单连接... 73 4.4.2 为根元素指定样式规则... 74 4.4.3 为标题指定样式规则... 75 4.4.4 为球员和统计元素指定样式规则... 79 4.4.5 ...

    XML高级编程pdf

    9.1 为什么转换 XML 9.1.1 在不同词汇表之间转换 9.1.2 动态转换 9.1.3 不同的浏览器 9.2 XSL 9.3 XSLT 样式表结构 9.3.1 创建模板 9.3.2 处理空白 9.3.3 输出格式 9.3.4 合并样式表 9.3.5 嵌入样式表 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    单独用XMl不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。 我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了...

    XMLwriter

    一个整合性的预览视窗让你格式化你的 XML 文件,只要使用 CSS、XSL 语言即可。XMLwriter 有一个直觉性、个人化的使用者介面让使用者编辑又有书签功能,自动找寻并取代。额外的功能还包含 XML 线上求助,物件管理、...

    XML高级编程

    此外,本章也会涉及到显示主线,因为它介绍了将XML文档转换为其他语言的思想,这是有助于向用户显示XML内容的。第10章(XML和数据库)全是关于数据的。关系型数据库和XML是获取数据用于计算的两种途径,但是它们所...

    XMl实用大全(资料全易学习)

    15.2.3 转换成格式化对象 518 15.2.4 使用FOP 520 15.3 页面布局 522 15.3.1 主控页面 522 15.3.2 页序列 525 15.4 内容 530 15.4.1 块级格式化对象 530 15.4.2 内联格式化对象 531 15.4.3 表格格式化对象 532 ...

    xalanjava源码-xsd2html2xml:从XML模式(XSD)生成纯HTML5表单。将填写好的表格转换为XML

    将填写好的表单转换为 XML。 XML 模式包含大量关于 XML 结构中允许使用哪些数据以及用户界面应该如何呈现的信息。 HTML5 支持许多与 XML 模式兼容的新输入类型和属性。 XSD2HTML2XML 使从 XML 模式生成表单并在用户...

    XML 高级编程(高清版)

    9.1 为什么转换 XML 9.1.1 在不同词汇表之间转换 9.1.2 动态转换 9.1.3 不同的浏览器 9.2 XSL 9.3 XSLT 样式表结构 9.3.1 创建模板 9.3.2 处理空白 9.3.3 输出格式 9.3.4 合并样式表 9.3.5 嵌入样式表 ...

    XML入门经典(第4版).part1.rar

    如何创建和使用XML标记,提取信息并将其换为HTML或其他格式的方法,存储和读取XML文档的策略,如何使用DOM和SAM操作XML文档,使用Ajax技术、RSS和SOAP提升XML通信性能的技巧,如何使用CSS为XML文档添加可视化效果。...

    Tinyxml 源代码(VC6 & VS2005)

    生成具有很多空格的格式化过的输出,这是为了尽可能让人看得明白。它们非常快,而且能够容忍XML文档中的格式错误。例如一个XML文档包含两个根元素和两个声明仍然能被打印出来。 C风格输入: 基于FILE* 用Parse()和...

    xml实用大全和轻松学习手册和无废话xml

    15.2.3 转换成格式化对象 518 15.2.4 使用FOP 520 15.3 页面布局 522 15.3.1 主控页面 522 15.3.2 页序列 525 15.4 内容 530 15.4.1 块级格式化对象 530 15.4.2 内联格式化对象 531 15.4.3 表格格式化对象 532 ...

    XML高级编程 (Extensible Markup Language)

    9.1 为什么转换 XML 9.1.1 在不同词汇表之间转换 9.1.2 动态转换 9.1.3 不同的浏览器 9.2 XSL 9.3 XSLT 样式表结构 9.3.1 创建模板 9.3.2 处理空白 9.3.3 输出格式 9.3.4 合并样式表 9.3.5 嵌入样式表 ...

    QTP:XML联合XSL输出html报表

    先选择short,然后我们点击OK,就可以生成一份非常漂亮的根据这个REPORT转化的HTML文档,但是如果每个脚本都这样导出会显得十分麻烦,因此我们需要想办法把这一步骤进行自动化,方法有两种: 修改注册表....

    Ajax&Json&XML.html

    Ajax&Json&XML常用基本操作 JSON数据和Java对象的相互转换 常见的解析器:Jsonlib... @JsonFormat:属性值得格式化 @JsonFormat(pattern = "yyyy-MM-dd") 3. 复杂java对象转换 List:数组 Map:对象格式一致

Global site tag (gtag.js) - Google Analytics