|
|
XML XLS转换 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
将XML文档通过XLS转化为浏览器便于表现的HTML,包含一些有趣的技巧。 如将未知数量的每两个<img>标签转换为<table>中的一个<tr>等。 摘选自所最近进行的项目。每组XML文档是对象型数据库中的一个实例,每个实例均不相同。通过XLS转换为HTML作为表现输出。美术效果已去除,通过更换XLS变更不同表现形式。
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="模板.xsl" ?> <报表 标题="航天科工集团706"> <基础信息> <病案编码>10</病案编码> <姓名>x</姓名> <性别>男</性别> <年龄>12</年龄> <自定义基础 内容="出生日期" 值="2001-1-1" /> <自定义基础 内容="父母" 值=":)" /> <镜检编码>10</镜检编码> <日期>2004-6-20 13:50:49</日期> <医师> </医师> <自定义镜检 内容="常规改" 值="xv" /> </基础信息> <镜检所见> <部位 名称="部位1"> <子部位 名称="子部位1" 所见="术语" 建议="ufhdfh" /> <子部位 名称="子部位2" 所见="部位1术语3
部位1术语1" 建议="" /> <子部位 名称="子部位3" 所见="" 建议="dhdf" /> </部位> <部位 名称="部位2"> <子部位 名称="子部位21" 所见="部位2术语2术语" 建议="" /> </部位> <图片 路径="图象1.bmp" /> <图片 路径="图象2.bmp" /> <图片 路径="图象1.bmp" /> <图片 路径="图象2.bmp" /> <插入图 路径="I:\MY\My Program\c#\706\bin\Debug\temp\插入图.BMP" /> </镜检所见> </报表> ------------------------------------XSL----------------------------------
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <!--文字部分--> <xsl:template match="/"> <table border="1" width="71%" bordercolorlight="#000000" bordercolordark="#000000" style="border-collapse: collapse" bgcolor="#FFFFCC" height="299"> <tr> <td height="23" colspan="4" valign="top" bgcolor="#FFCC00"> <p align="center"/> <xsl:value-of select="/报表/@标题"/> </td> </tr> <xsl:apply-templates select="/报表/镜检所见/图片"/> <tr> <td width="84" height="23" valign="top">姓名</td> <td colspan="3" valign="top"><xsl:value-of select="/报表/基础信息/姓名"/> </td> </tr> <tr> <td height="23" valign="top">性别</td> <td colspan="3" valign="top"><xsl:value-of select="/报表/基础信息/性别"/> </td> </tr> <tr> <td height="23" valign="top">年龄</td> <td colspan="3" valign="top"><xsl:value-of select="/报表/基础信息/年龄"/> </td> </tr> <xsl:for-each select="/报表/基础信息/自定义基础"> <tr> <td height="23" valign="top" bgcolor="#FFFF66"><xsl:value-of select="@内容"/></td> <td colspan="3" valign="top" bgcolor="#FFFF66"><xsl:value-of select="@值"/> </td> </tr> </xsl:for-each> <tr> <td height="23" valign="top" bgcolor="#FFFF99">日期</td> <td colspan="3" valign="top" bgcolor="#FFFF99"><xsl:value-of select="/报表/基础信息/日期"/> </td> </tr> <tr> <td height="23" valign="top" bgcolor="#FFFF99">医师</td> <td colspan="3" valign="top" bgcolor="#FFFF99"><xsl:value-of select="/报表/基础信息/医师"/> </td> </tr> <xsl:for-each select="/报表/基础信息/自定义镜检"> <tr> <td height="23" valign="top" bgcolor="#FFFF99"><xsl:value-of select="@内容"/></td> <td colspan="3" valign="top" bgcolor="#FFFF99"><xsl:value-of select="@值"/></td> </tr> </xsl:for-each> <xsl:for-each select="/报表/镜检所见/部位"> <tr> <td height="23" colspan="4"><xsl:value-of select="@名称"/></td> </tr> <xsl:for-each select="子部位"> <tr> <td valign="top" bgcolor="#CCFF99"><xsl:value-of select="@名称"/></td> <td colspan="3" valign="top" bgcolor="#CCFF99"><xsl:value-of select="@所见"/></td> </tr> </xsl:for-each> </xsl:for-each> <tr> <td colspan="4" height="25"> <p align="left"/>建议</td> </tr> <tr> <td height="23" colspan="4" bgcolor="#FFFFFF"> <xsl:for-each select="/报表/镜检所见/部位/子部位"> <xsl:value-of select="@建议"/><br/> </xsl:for-each> </td> </tr> <tr height="0"> <td ></td> <td></td> <td width="146"></td> <td></td> </tr> </table> </xsl:template> <!--图片部分--> <xsl:template match="/报表/镜检所见/图片"> <xsl:if test="position() mod 2!= 0"> <td height="23" colspan="3" valign="top"> <img border="0" width="352" height="288"> <xsl:attribute name="src"> <xsl:value-of select="@路径"/> </xsl:attribute> </img> </td> </xsl:if> <xsl:if test="position() mod 2= 0"> <td width="352"> <img border="0" width="352" height="288"> <xsl:attribute name="src"> <xsl:value-of select="@路径"/> </xsl:attribute> </img> </td> </xsl:if> <xsl:if test="position() mod 2= 0"> <tr/> </xsl:if> </xsl:template> </xsl:stylesheet> 
|
|
相关文章:相关软件: |
|