vs.net-[xml格式化后转化为html]
2008-11-19 22:00
423 查看
由于项目的需要,最近学习了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)数据分析:
用户(User)数据分析:
用户地址(UserAddress)数据分析:
下面代码将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)。
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 |
数据名称 | 代码 | 类型 | 是否可以为空 | 描述 |
---|---|---|---|---|
电子邮箱 | text | 否 | null | |
密码 | Password | text | 否 | null |
消费总额 | TotalConsumption | int | 否 | null |
真实姓名 | Name | text | 是 | null |
公司 | Company | entity | 是 | null |
数据名称 | 代码 | 类型 | 是否可以为空 | 描述 |
---|---|---|---|---|
用户 | User | entity | 否 | null |
地址 | Address | text | 否 | null |
电话 | Phone | text | 否 | null |
是否是默认 | IsDefault | bool | 否 | null |
/// < 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)。
相关文章推荐
- asp.net中将HTML转化成xml文件
- VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代码片段支持》篇
- .NET XML Comments & HTML/CHM Help Documentation
- Android String.xml Html格式化方法
- 把HTML表单提交的数据转化成XML文件
- ASP.NET MVC 1.0 转化为ASP.NET MVC 2.0的方法 vs 2010
- 黑马程序员之ASP.NET学习笔记:XML和HTML的区别
- C#.net 格式化输出XML文档字符串
- VSCode前端编辑器 1.7(编辑功能媲美sublime text,HTML等代码格式化很是不错)
- Asp.Net MVC Html.TextBoxFor日期格式化
- asp.net中XML文档的写入和读取,以及转化数据集相关实例
- VS 2010Asp.net项目发布出错 TransformXml task failure
- Asp.Net MVC Html.TextBoxFor日期格式化出错“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式” 解决办法
- asp.net通过xsl把xml转化为xhtml
- AJAX vs FLEX:执行,传送,解析JSON,HTML,XML,AFM格式效率比较.
- ibatis.net:在VS中支持xml智能提示
- Java中使用XML标签<x:transform />转化XML为HTML
- editplus 格式化 js、html、xml、css
- 【CSS】CSS+HTML‘VS’CSS+XML
- ie下 利用JS操作XSL格式化XML,即用XSL来转换XML成为HTML格式并显示