综合

img 00x0

XML XLS转换

发表于2004/10/16 0:54:00  2366人阅读

将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&#xD;&#xA;部位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> 
阅读全文
0 0

相关文章推荐

img
取 消
img