【发布时间】:2015-08-24 09:47:03
【问题描述】:
我有以下 xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
<first-name>John</first-name>
<last-name>Miller</last-name>
<address>Birmingham</address>
</row>
<row>
<first-name>Rose</first-name>
<last-name>Miller</last-name>
<address>New York</address>
</row>
</root>
我想使用 XSLT 修改 xml,这样我的输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
<Name>John-Miller</Name>
<address>Birmingham</address>
</row>
<row>
<Name>Rose-Miller</Name>
<address>New York</address>
</row>
</root>
总而言之,我想连接<first-name> 和<last-name> 以生成一个名为<Name> 的新节点,并保持<address> 标记不变(每个<row> 都应该发生同样的事情)。
我正在尝试使用以下 XSLT,但没有获得所需的输出:
<?xml version="1.0" encoding="UTF-8"?>
<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="row">
<row>
<Name>
<xsl:value-of select="concat(//first-name,'-',//last-name)" />
</Name>
</row>
</xsl:template>
</xsl:stylesheet>
当我针对我的输入 xml 运行上述 XSLT 时,我只得到第一行的 <first-name> 和 <last-name> 值。
能否提供解决方案?
【问题讨论】:
-
在您的预期输出中,为什么第二行元素包含 john-miller..不应该是 Rose-Miller 吗??
-
@Saurav 对不起..错字...你是对的..现在更新了问题..谢谢.. :)