Xml 如何在xslt中从表中删除最后一行
我有一个家庭作业,要求我从xml中获取所有数据,并将其显示到一个表中,该表显示一个带有“td”Titulo、Autor、año的“th”。 这个“th”必须每5行重复一次,但是如果最后一行不包含xml中的任何数据,那么这个“th”不应该出现在最后一行 XML的代码:Xml 如何在xslt中从表中删除最后一行,xml,xslt,Xml,Xslt,我有一个家庭作业,要求我从xml中获取所有数据,并将其显示到一个表中,该表显示一个带有“td”Titulo、Autor、año的“th”。 这个“th”必须每5行重复一次,但是如果最后一行不包含xml中的任何数据,那么这个“th”不应该出现在最后一行 XML的代码: 拉维达·埃斯特恩·奥特拉·帕特酒店 米兰·昆德拉 潘塔莱翁酒店 马里奥·巴尔加斯·略萨 卡特拉尔对话会 马里奥·巴尔加斯·略萨 拉维达·埃斯特恩·奥特拉·帕特酒店 米兰·昆德拉 潘塔莱翁酒店 马里奥·巴尔加斯·略萨 卡特拉尔对话会
拉维达·埃斯特恩·奥特拉·帕特酒店
米兰·昆德拉
潘塔莱翁酒店
马里奥·巴尔加斯·略萨
卡特拉尔对话会
马里奥·巴尔加斯·略萨
拉维达·埃斯特恩·奥特拉·帕特酒店
米兰·昆德拉
潘塔莱翁酒店
马里奥·巴尔加斯·略萨
卡特拉尔对话会
马里奥·巴尔加斯·略萨
拉维达·埃斯特恩·奥特拉·帕特酒店
米兰·昆德拉
潘塔莱翁酒店
马里奥·巴尔加斯·略萨
卡特拉尔对话会
马里奥·巴尔加斯·略萨
卡特拉尔对话会
马里奥·巴尔加斯·略萨
这是我的xsl代码:
藏书馆
提特罗
自动
阿诺
提特罗
自动
阿诺
我想它需要一个xsl:if last()=“th”不会显示,但我搜索了几个小时却找不到解决方案,或者如果我找到了,我没有理解,因为它们太复杂了,没有理解代码(我正在学习)。您没有发布预期结果,所以我在这里有点猜测 如果要在每5行数据之后重复标题行,那么最简单的解决方案IMHO是将其置于5行组中第一行的每一行之前: XSLT1.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/biblioteca">
<html>
<body>
<h1>Biblioteca</h1>
<table border="1">
<xsl:variable name="header-row">
<tr>
<th>Titulo</th>
<th>Autor</th>
<th>Año</th>
</tr>
</xsl:variable>
<xsl:for-each select="libro[position() mod 5 = 1]">
<xsl:copy-of select="$header-row"/>
<xsl:for-each select=". | following-sibling::libro[position() < 5]">
<tr>
<td>
<xsl:value-of select="titulo"/>
</td>
<td>
<xsl:value-of select="autor"/>
</td>
<td>
<xsl:value-of select="fechaPublicacion/@año"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
藏书馆
提特罗
自动
阿诺
应用于XML示例,将产生:
谢谢迈克尔,这正是我想要的。我的问题首先是我不知道如何很好地使用xPath,因为我们用来学习xPath的那本书是无用的,没有解释任何关于它的内容,我的第二个问题是我不知道搜索什么来解决它,因为我在网上找到的所有信息对我的水平来说都太具体、太先进了。我非常感谢你
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="estilo.css"/>
</head>
<body>
<h1>Biblioteca</h1>
<hr style="text-align:left;"/>
<br/>
<table>
<tr id="s" bgcolor="#FFB6C1">
<th>Titulo</th>
<th>Autor</th>
<th>Año</th>
</tr>
<xsl:for-each select="biblioteca/libro">
<tr>
<td><xsl:value-of select="titulo"/></td>
<td><xsl:value-of select="autor"/></td>
<td><xsl:value-of select="fechaPublicacion/@año"/></td>
</tr>
<xsl:if test="position() mod 5 = 0">
<tr bgcolor="#FFB6C1">
<th>Titulo</th>
<th>Autor</th>
<th>Año</th>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/biblioteca">
<html>
<body>
<h1>Biblioteca</h1>
<table border="1">
<xsl:variable name="header-row">
<tr>
<th>Titulo</th>
<th>Autor</th>
<th>Año</th>
</tr>
</xsl:variable>
<xsl:for-each select="libro[position() mod 5 = 1]">
<xsl:copy-of select="$header-row"/>
<xsl:for-each select=". | following-sibling::libro[position() < 5]">
<tr>
<td>
<xsl:value-of select="titulo"/>
</td>
<td>
<xsl:value-of select="autor"/>
</td>
<td>
<xsl:value-of select="fechaPublicacion/@año"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>