xml - XSLT 转换检索元素的子元素及其子元素
问题描述
我正在尝试使用 xslt 转换简单的 xml,但我陷入了非常简单的情况,尽管我找不到任何如何正确解决它的示例。这是我的xml结构:
<TrackList>
<Track no="1">
<Title>Tin Man</Title>
</Track >
<Track no="2">
<Title>Good Ol Days</Title>
</Track >
<Track no="3">
<Title>Thing That Break</Title>
</Track >
</TrackList>
我想从 TrackList 中检索所有曲目,这样我就可以拥有:
<TrackList>
<Track title=""/>
<Track title=""/>
<Track title=""/>
</TrackList>
我尝试了以下 xslt 模板:
<xsl:element name="TrackList">
<xsl:apply-templates select="TrackList"/>
</xsl:element>
<xsl:template match="//TrackList">
<xsl:element name="Track">
<xsl:attribute name="title">
<xsl:value-of select="Track/Title"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
虽然我只正确提取了第一个元素,但其余的被忽略了,有人可以解释并建议如何正确检索它。
解决方案
如果要转换Track
元素,请编写模板
<xsl:template match="Track">
<Track title="{Title}"/>
</xsl:template>
对他们来说,通过恒等转换模板处理其余部分:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Track">
<Track title="{Title}"/>
</xsl:template>
</xsl:stylesheet>
推荐阅读
- selenium - 是否可以使用 52 之后的 Firefox 运行 selenium 3.x 测试,将“木偶”功能设置为 false(不使用 GeckoDriver)?
- ms-access - 如何在 MS Access 2016 中按日期搜索联合查询?
- java - GenericType 不适用于 Java 中的模板
- vb.net - 在 VB.net 中使用 winsock 无法接收整个文本
- javascript - d3 v4垂直条形图问题,条形文字
- typo3 - TYPO3 - 如何在页面的某个位置使用打字稿呈现 felogin?
- ssl - Kubernetes tls 证书 issier 未颁发
- jquery - .replace() 仅对多个文本实例有效
- c# - SQL 字符串或二进制数据将被截断,列名
- c++ - 使用 jqplots 引用 XSLT 代码时,C++ 代码抛出异常