【发布时间】:2015-02-10 08:54:36
【问题描述】:
我是 XSL/XSLT 的新手。我正在尝试向此 xml 的所有用户元素添加一个新元素(数据源):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<users>
<user id="1">
<repo>r1</repo>
<home>h1</home>
</user>
<user id="2">
<repo>r2</repo>
<home>h2</home>
</user>
<user id="3">
<repo>r3</repo>
<home>h3</home>
</user>
<user id="4">
<repo>r4</repo>
<home>h4</home>
</user>
<user id="5">
<repo>r5</repo>
<home>h5</home>
</user>
</users>
我正在使用这个 XSL 脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" cdata-section-elements="configXml"/>
<!-- Copy everything -->
<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="/users/user[*]">
<xsl:copy>
<xsl:apply-templates/>
<xsl:element name="datasources"></xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
问题是最终结果中所有用户的id都消失了:
<users>
<user>
<repo>r1</repo>
<home>h1</home>
<datasources/>
</user>
<user>
<repo>r2</repo>
<home>h2</home>
<datasources/>
</user>
<user>
<repo>r3</repo>
<home>h3</home>
<datasources/>
</user>
<user>
<repo>r4</repo>
<home>h4</home>
<datasources/>
</user>
<user>
<repo>r5</repo>
<home>h5</home>
<datasources/>
</user>
如何在输出中保留用户 ID?
【问题讨论】:
-
仅供参考
<xsl:element name="datasources"></xsl:element>与<datasources />相同。您无需使用<xsl:element>来创建具有固定名称的元素。
标签: xml xslt xslt-1.0 xslt-2.0