You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT实现按作者重复显示书籍:解决姓名缺失问题

解决方案:按作者重复显示书籍信息

问题原因

  • 原XSLT中firstname和lastname的选择路径错误,这两个节点属于authors/author的子节点,并非book的直接子节点,因此无法获取到对应值。
  • 原代码仅遍历book节点,未遍历每个书籍下的author节点,无法实现“每个作者对应显示一次书籍信息”的需求。

修改后的XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <html>
 <head>
 <title>Books</title>
</head>
 <body>
     <xsl:for-each select="books/book">
         <!-- 遍历当前书籍下的每个作者 -->
         <xsl:for-each select="authors/author">
             <p>FirstName: <xsl:value-of select="firstname" /></p>
             <p>LastName: <xsl:value-of select="lastname" /></p> 
             <p>Book: <xsl:value-of select="../../name" /></p> 
             <p>Year: <xsl:value-of select="../../year" /></p>
             <!-- 添加分隔线区分不同作者的条目 -->
             <hr />
         </xsl:for-each>
     </xsl:for-each>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

代码说明

  1. 新增内层xsl:for-each select="authors/author",遍历当前书籍下的所有作者,确保每个作者对应一组书籍信息。
  2. 获取书籍名称和年份时,使用../../name和../../year:当前上下文是author节点,../回到authors节点,再../回到book节点,即可访问name和year。
  3. 可选添加<hr />分隔不同作者的条目,提升可读性。

效果

修改后,示例中的书籍会显示两次,分别对应两位作者的信息,完全符合“每本书按对应作者各显示一次”的需求。

内容的提问来源于stack exchange,提问作者eScape CS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:01:12