xsl for-each:每 n 行添加代码块?

2023-12-02

我正在尝试将一些代表图像库的 xml 转换为 html 表。 (必须使用 html 而不是 css 来完成)。如何添加换行符</tr><tr>每六列左右有 xsl 吗?

我有这个:

<xsl:for-each select="//email/gallery" >
<td>
    <img>
    <xsl:attribute name="src">
        <xsl:value-of select="gallery-image-location"/>
    </xsl:attribute>
    <xsl:attribute name="alt">
        <xsl:value-of select="gallery-image-alt"/>
    </xsl:attribute>
    </img>
</td>
<xsl:if test="????">
    </tr>
    <tr>
</xsl:if>
<xsl:for-each>

在 Javascript 中我会做类似的事情:

for (i=0; i<gallery.length; i++) {
    htm += '<td><img src="' +
    gallery[i].gallery-image-location +
    '" alt="'+ gallery[i].gallery-image-alt +'"></td>';

    if (i%6 == 5 && i != gallery.length-1) {
        htm += '</tr><tr>';
    }
}

如何添加换行符 每六列左右有 xsl 吗?

在 XSLT 中则不需要!

XSLT 流程nodes,而不是标签。

这是位置分组的XSLT方式:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="gallery[position() mod 6 = 1]">
  <tr>
   <xsl:apply-templates mode="proc"
        select=".|following-sibling::gallery[not(position() > 5)]"
   />
  </tr>
 </xsl:template>

 <xsl:template match="gallery" mode="proc">
  <td>
    <img src="{gallery-image-location}" alt="{gallery-image-alt}"/>
  </td>
 </xsl:template>

 <xsl:template match="gallery[not(position() mod 6 = 1)]"/>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<email>
    <gallery>
        <gallery-image-location>http://server/picts/1</gallery-image-location>
        <gallery-image-alt>Description 1</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/2</gallery-image-location>
        <gallery-image-alt>Description 2</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/3</gallery-image-location>
        <gallery-image-alt>Description 3</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/41</gallery-image-location>
        <gallery-image-alt>Description 4</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/5</gallery-image-location>
        <gallery-image-alt>Description 5</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/6</gallery-image-location>
        <gallery-image-alt>Description 6</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/7</gallery-image-location>
        <gallery-image-alt>Description 7</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/8</gallery-image-location>
        <gallery-image-alt>Description 8</gallery-image-alt>
    </gallery>
    <gallery>
        <gallery-image-location>http://server/picts/9</gallery-image-location>
        <gallery-image-alt>Description 9</gallery-image-alt>
    </gallery>
</email>

产生了想要的正确结果:

<tr>
    <td>
        <img src="http://server/picts/1" alt="Description 1"/>
    </td>
    <td>
        <img src="http://server/picts/2" alt="Description 2"/>
    </td>
    <td>
        <img src="http://server/picts/3" alt="Description 3"/>
    </td>
    <td>
        <img src="http://server/picts/41" alt="Description 4"/>
    </td>
    <td>
        <img src="http://server/picts/5" alt="Description 5"/>
    </td>
    <td>
        <img src="http://server/picts/6" alt="Description 6"/>
    </td>
</tr>
<tr>
    <td>
        <img src="http://server/picts/7" alt="Description 7"/>
    </td>
    <td>
        <img src="http://server/picts/8" alt="Description 8"/>
    </td>
    <td>
        <img src="http://server/picts/9" alt="Description 9"/>
    </td>
</tr>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xsl for-each:每 n 行添加代码块? 的相关文章

随机推荐

  • 在 Android adb shell 中运行 shell 脚本

    我正在尝试创建一个脚本来通过 adb shell 从 Android 模拟器中查找并删除我的应用程序 这就是我所拥有的 adb shell cd data app for app in com mycompany apk do echo a
  • 安装 Mac 版 RMySQL

    当我尝试安装 Mysql 包 MAC OS 时出现以下错误 install packages RMySQL package RMySQL is available as a source package but not as a binar
  • jquery 数据表插件似乎无法正确对带有链接的列进行排序

    我有一个纯文本列 排序工作正常 但当我将列数据更改为 HTML 常规链接时 排序看起来相当随机且损坏 我在网站上找不到有关此问题的任何其他文档 http www datatables net usage features 有什么建议么 使用
  • minikube 的 ingress 在 Mac 和 Ubuntu 上的工作方式不同。何时将 etc/hosts 设置为 127.0.0.1 与“minikube ip”?

    我有一个可以在多种环境下运行的简单入口文件 但要访问它 它的行为会有所不同 具体取决于我是在 Mac 还是 Ubuntu 机器上运行 minikube 集群 具体来说 对于我的 Mac 我必须添加以下条目 127 0 0 1 my kube
  • 如何插入长字符串oracle clob或blob

    如何插入很长的文本100000
  • 如何在 Pandas 中创建带有总计(利润)的数据透视表?

    例如 我有一个非常简单的数据框 values pd Series i for i in range 5 rows pd Series a b a a b columns pd date range 20130101 periods 5 df
  • 如何在 Flutter 中禁用 iOS 辅助功能设置设置的粗体文本?

    我知道我不应该禁用设备上设置的任何文本和粗体设置 但我这样做是有原因的 我通过在全局级别上将 textScaleFactor 设置为 1 来禁用文本大小 但这并不能避免用户设置粗体文本选项 该选项也会更改文本的大小 我如何覆盖该功能 以便即
  • 如何从txt中删除行?

    我的意思是 我想从 Android 上的文本中删除行 我怎样才能删除 我不想阅读一个文本并通过删除行创建另一个文本 我想从现有的 txt 中删除行 谢谢 这是一个非常棘手的问题 尽管它看起来微不足道 如果行长度可变 也许您唯一的选择是逐行读
  • 盖茨比 4 + Netlify

    由于以下错误 无法在 Netlify 上运行 gatsby 4 4 07 59 PM success run queries in workers 158 327s 621 621 3 92 s 4 16 57 PM error UNHAN
  • 如何在Android中从开火中检索聊天记录

    我有一个聊天应用程序 我想在其中检索两个用户之间的聊天历史记录 我有一个用于检索聊天消息的节 那就是
  • 无效的程序计数器值:0

    我目前正在 MIPS 处理器下使用汇编语言 我现在在 使用 MARS 模拟器 由于未知的原因 我每次运行后都会收到以下错误消息 Go 运行 try s 错误 无效的程序计数器值 0 Go 执行因错误而终止 我收到此错误消息 与我正在使用的代
  • 我的 VS CODE 扩展代码运行器无法正常工作

    您好 我的问题是 在我的 Visual Studio 代码中 我的代码运行器扩展不提供任何输出 我看过很多教程 并完成了所有工作 研究 下载 Node js 并将文件保存为 JavaScript 文件并验证路径 我输入了 console l
  • 我应该将 JavaScript 放在哪里 - 页面还是外部文件?

    在 VS 2008 中 我有一个 ASP NET 内容页面 其中有一个母版页 我想为此页面添加用于客户端验证等的 JavaScript 函数 我的问题是 我应该将这些脚本单独编写吗 js文件 或嵌入到 aspx file 这种选择会影响网站
  • GCM 消息被覆盖

    我正在使用 GCM 推送通知向用户传递一些通知 我的问题是 当我发送一条消息时 如果发送多条消息 则效果很好 然后最后一条消息会显示给所有通知 我哪里做错了 private static void generateNotification
  • MonoTouch:从 Obj-C 到 MonoTouch

    我正在尝试从现有的 Objective C 项目调用 MonoTouch 程序集 我找到了这篇文章 在那里它很好地描述了这些步骤 但是当我尝试在 XCode 中构建项目时 我收到以下错误 错误 没有指定名称或路径的 SDK Develope
  • 模型关联问题

    因此 我正在实施一个向上 向下投票机制 并为其生成一个模型 到目前为止 我了解到一个视频 将投票的内容 有一个 vote count 而 vote count 属于视频 但是 我还想在 vote count 数据库中跟踪对视频投票的用户 这
  • 为什么我的 LINQ INSERTS 没有在 SQL Server CE 3.5 中保留?

    我将 LINQ to SQL 与 Sql Server Compact Edition 3 5 和 VS2008 一起使用 我有一个非常简单的表 Tokens 其中包含唯一标识符主键 TokenID 和其他两个可为空的字段 UsedBy 和
  • RecyclerView 在新行中显示以前在 EditText 中输入的值

    我正在创建一个 Android 应用程序 我在其中使用recyclerView并且 recyclerView 的行有editText 这是我的ReadingAdapter class public class ReadingAdapter
  • 如何在jdbc postgresql准备好的语句中多次使用相同的值

    有没有办法在 jdbc postgresql 驱动程序的准备语句中多次使用相同的变量 例如 我想使用以下语句 但每个问号具有相同的值 PreparedStatement ps pg prepareCall SELECT FROM mytab
  • xsl for-each:每 n 行添加代码块?

    我正在尝试将一些代表图像库的 xml 转换为 html 表 必须使用 html 而不是 css 来完成 如何添加换行符 tr 每六列左右有 xsl 吗 我有这个 tr