由于项目的需要,最近学习了XLST和xml向html的转变。 <?xml version="1.0" encoding="utf-8"?> ??? <table width="70%" bordercolor="black"
border="1">
???
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:
<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>
????? <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后输出的格式
数据名称
代码
类型
是否可以为空
描述
名称
Name
text
否
null
编号
Number
text
否
null
经理
Manage
text
否
null
电话
Phone
text
否
null
联系人
Linkman
text
否
null
地址
Address
text
否
null
传真
Fax
text
是
null
用户(User)数据分析:
用户地址(UserAddress)数据分析:
数据名称
代码
类型
是否可以为空
描述
电子邮箱
Email
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
下面代码将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();
??????? }
详细解决方案
xml 格式化后转化作html
热度:123 发布时间:2012-10-13 11:38:17.0
相关解决方案
- 访问Tomcat的url的时候如何自动调用index.html
- The requested resource (/webtest/servlet/hello.html) is not availabl 帮忙解决解决方法
- JSP 页面乱码 页面起首已设置 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
- html js不运行有关问题
- 办公自动化系统——议程管理(用jsp+servlet+js+html+jdbc)怎样实现
- <html:text>property的有关问题
- 关于<html:text>相关的有关问题
- Struts 1.2 html:form的action和form的action区别,还有如果2个都有执行哪个解决方案
- 简单计算器(html+js),该怎么解决
- HTML 小疑点,哪位高手解决 给哪位高手分
- 嵌入JSP中的CSS显示效果和在 HTML 中的不一样.为什么.该怎么解决
- struts1 中<html:checkbox>标签的value值怎么动态赋值
- 新人求问,J2EE方向,html,css,javascript,vml要学到什么程度?解决思路
- :前台和后台开发有啥区别?还有css、html、ajax、js、jquery都有什么区别
- struts <html:file> 怎么让前面的框消失,先谢过了
- =Html.TextAreaFor的文本区域大小如何设置
- 正则表达式 提取 html 标签的内容,该如何解决
- @Html.CkEditor,该怎么处理
- string msg = (string)html.ViewData["Message"];该如何处理
- html password editbox 编码有关问题
- @Html.TextBoxFor(a => a.Title 上边有红线,说异常
- 关于伪静态,怎么配置.html
- MVC中,Html.DropDownListFor怎么绑定数据
- 为何FCKeditor会在自动生成<html>标签呢
- MVC 中得 Html.ActionLink 怎么linkText显示图片标记
- <DOCTYPE html. 这个是有什么用?该如何处理
- asp.net C# 将网页变换为.html 格式
- @Html.ActionLink 基础解决办法
- 怎么引用一个 Html 控件对象
- HTML DOM setTimeout() 跟 setInterval() 的区别 ?———急——