XSLT 正在为每一行创建单独的表.如何将它们分成 1 个表?



我对xml和xslt完全陌生,所以首先,如果这是一个非常简单的问题,或者已经在其他地方回答了,但我很不明白,因为我还没有掌握语法。

我正在尝试创建一个表,该表从SQL数据库中提取4所房屋的名称并将它们显示在表中。不幸的是,我的代码为每个房子创建了一个新表。如何将它们全部放入同一个表中?

我已经尝试了排序,但由于我是全新的,我不确定哪一行代码可能会有所帮助。我从其他几个例子中拼凑出来。

XSL:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<view>
<name> Junior School Houses</name>
<template type="xsl">
<xsl>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="row">
<STYLE>
H2 {font-family: calibri;}
P {font-family:calibri;}
table {border = 0;
width:100%;}
TD, TH {font-family: calibri;
width: 33%;
text-align: left;}
</STYLE>
<h2>Junior School Houses</h2>
<table border="1">
<tr bgcolor="#c8c8c8">
<th> &#160; Academic House &#160; </th>
</tr>
<tr>
<td> <xsl:value-of select="cell[@name='txtAcademicHouse']" /> 
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
</xsl>
</template>
</view>

.XML

<source name="Junior School Houses" friendlyName="Junior School - Houses">
<connectionString>database=iSams;server=#####;user 
id=#####;pwd=########;Max Pool Size=100;Connection 
Lifetime=0</connectionString>
<queryString>
<![CDATA[
--All House Points this week
SELECT txtAcademicHouse
FROM TblPupilManagementPupils
]]>
</queryString>
<readGroup>SPECIAL:EVERYBODY </readGroup>
<publishGroup>##########################</publishGroup>
</source>

它目前显示标题"小学宿舍",然后是 2 x 1 的表格,顶部是"学术之家",然后是下面的第一个房子。

相同的标题和 2by1 表组合重复 3 次,其他 3 个房屋列在相应表的底部单元格中。我需要它是一个标题,然后是一个 5 x 1 的表格,顶部是"学术之家",下面列出了 4 个房子。

谢谢。

您的 XSLT 有点令人困惑,因为xsl:stylesheet实际上应该是顶级元素,所以我假设您正在使用某种应用程序/框架来处理执行 SQL 并将结果作为 XML 传递给 XSLT。

但是假设从SQL生成的XML是这样的......

<data>
<row>
<cell name="txtAcademicHouse">House 1</cell>
</row>
<row>
<cell name="txtAcademicHouse">House 2</cell>
</row>
</data>

然后,XSLT 中发生的情况是,模板为每个row应用一次,并且由于存在多行,因此会生成多个单独的表。

您实际上应该有两个模板。一个模板匹配文档节点以生成单个表,然后另一个匹配row仅输出表行。像这样:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="/">
<STYLE>
H2 {font-family: calibri;}
P {font-family:calibri;}
table {border = 0;
width:100%;}
TD, TH {font-family: calibri;
width: 33%;
text-align: left;}
</STYLE>
<h2>Junior School Houses</h2>
<table border="1">
<tr bgcolor="#c8c8c8">
<th> &#160; Academic House &#160; </th>
</tr>
<xsl:apply-templates select="//row" />
</table>
</xsl:template>
<xsl:template match="row">
<tr>
<td>
<xsl:value-of select="cell[@name='txtAcademicHouse']" /> 
</td>
</tr>
</xsl:template>    
</xsl:stylesheet>

相关内容

  • 没有找到相关文章

最新更新