技术开发 频道

xml格式化后转化为html


【IT168技术文档】

  由于项目的需要,最近学习了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>
0
相关文章