xml - XSLT 用每个标签的计数在 XML 中转换一些标签
问题描述
如何转换具有以下内容的 XML:
<info>
.....
<name>aaa</name>
</info>
<info>
.....
<name>bbb</name>
</info>
<info>
.....
<name>ccc</name>
</info>
用 XSLT 变成这样的东西:
<info>
.....
<name1>aaa</name1>
</info>
<info>
.....
<name2>bbb</name2>
</info>
<info>
.....
<name3>ccc</name3>
</info>
有人有什么想法吗?谢谢!
解决方案
一种方法是count(...)
与preceding-sibling::
轴结合使用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<!-- Modify all 'name' elements -->
<xsl:template match="name">
<xsl:element name="{concat(name(),count(../preceding-sibling::info)+1)}">
<xsl:apply-templates select="node()|@*" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
输出如所愿。
推荐阅读
- php - 带有新身份验证方法的 Symfony 简单登录表单不起作用
- r - 如何使用 dplyr 获取交叉表(group_by)以包含 0?
- visual-studio-code - 在 VScode 中使用多个光标进行搜索
- python - Python:Kivy 模块不显示小部件
- ios - 移动数据开启时 iOS 无法连接到本地套接字
- image-processing - 使用 ImageMagick 跟踪鼠标路径?
- swift - 如何使用单例对模型控制器进行单元测试
- flutter - 将淡入淡出应用于图像或组件(模糊、渐变)
- coq - 如何一次应用于多个假设?
- excel - VBA/宏问题创建正确高度/宽度的表格并在没有电子表格最后一行的情况下创建该表格