由于项目的需要,最近学习了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();
}
分享到:
相关推荐
Java Swing GUI桌面应用工具,集成...1、格式化:JSON、XML、HTML 2、Unix时间戳,获取最新时间,Unix时间戳转化为通用时间字符串格式 3、字符串长度计算 4、Url编码 解码 5、Base64 加密 解密 6、Unicode 编码 解码
要知道,Tamino产品是世界第一套以纯粹且标准的XML格式进行资料储存于抓取的信息服务器,一个能够将企业资料转换为Internet物件,提供资料交换和应用程序集成环境同时又支持WEB的完整资料管理系统。顺便说说,Tamino...
一个集成的预览窗口让你格式化你的 XML 文件,只要使用 CSS、XSL 语言即可。XMLwriter 有一个直观性、个性化的用户界面让使用者编辑,还具有书签功能,自动查找并替代。其他的功能还有 XML 在线帮助、插件管理、即时...
XMLwriter是来自国外的一款功能强大的适合于初学者的XML编辑工具,它可以在Windows的环境下支持 XML、XSL、DTD、CSS、HTML 及文本格式的文件,它还拥有一个集成的预览窗口,让你格式化你的XML文件,只要使用CSS、XSL...
XML格式 可以在的zip文件中以HTML格式下载整个法律。 版本以国会编号表示,编号越高表示版本越新。 例如,版本号“ 148c”表示“第148届议会”,字母“ a”表示这是该议会召集时有效的法律食典的版本。 它是在...
用记号标识非xml格式的数据 定义格式 <!NOTATION 记号名 SYSTEM "外部标识"> 3)DTD的缺陷,DTD中的类型比较少,有一些约束在DTD中是表达不了的,DTD不支持XML语法. &3.NameSpace(命名空间) namespace是...
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 ...
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不能显示页面,我们使用格式化技术,比如CSS或者XSL,才能显示XML标记创建的文档。 我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示,必须有辅助文件来帮助实现。(XML取消了...
一个整合性的预览视窗让你格式化你的 XML 文件,只要使用 CSS、XSL 语言即可。XMLwriter 有一个直觉性、个人化的使用者介面让使用者编辑又有书签功能,自动找寻并取代。额外的功能还包含 XML 线上求助,物件管理、...
此外,本章也会涉及到显示主线,因为它介绍了将XML文档转换为其他语言的思想,这是有助于向用户显示XML内容的。第10章(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。 XML 模式包含大量关于 XML 结构中允许使用哪些数据以及用户界面应该如何呈现的信息。 HTML5 支持许多与 XML 模式兼容的新输入类型和属性。 XSD2HTML2XML 使从 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标记,提取信息并将其换为HTML或其他格式的方法,存储和读取XML文档的策略,如何使用DOM和SAM操作XML文档,使用Ajax技术、RSS和SOAP提升XML通信性能的技巧,如何使用CSS为XML文档添加可视化效果。...
生成具有很多空格的格式化过的输出,这是为了尽可能让人看得明白。它们非常快,而且能够容忍XML文档中的格式错误。例如一个XML文档包含两个根元素和两个声明仍然能被打印出来。 C风格输入: 基于FILE* 用Parse()和...
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 ...
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 嵌入样式表 ...
先选择short,然后我们点击OK,就可以生成一份非常漂亮的根据这个REPORT转化的HTML文档,但是如果每个脚本都这样导出会显得十分麻烦,因此我们需要想办法把这一步骤进行自动化,方法有两种: 修改注册表....
Ajax&Json&XML常用基本操作 JSON数据和Java对象的相互转换 常见的解析器:Jsonlib... @JsonFormat:属性值得格式化 @JsonFormat(pattern = "yyyy-MM-dd") 3. 复杂java对象转换 List:数组 Map:对象格式一致