嗨,我无法找到解决此问题的方法。现在我有看起来像这样的xml。
<text>
<token>string1</token>
<token>string2</token>
</text>
我需要把它转换成这种格式。我不知道如何从多个节点获取值并将它们移动到单个属性中。鉴于上述 xml,这将是我想要的输出。
<text text="string1 string2"></text>
Ravi Thapliyal 的说法是正确的。您可以使用xsl:element
和xsl:attribute
。但是“解决方案”(使用 xslt-1.0)应该像下面这样锁定更多。
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="text">
<xsl:attribute name="text" >
<xsl:for-each select="text/token" >
<xsl:if test="position() > 1 " >
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
更新:使用 xsl:apply-templates 的解决方案。
<xsl:template match="token" >
<xsl:if test="position() > 1 " >
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="/">
<text>
<xsl:attribute name="text" >
<xsl:apply-templates select="text/token" />
</xsl:attribute>
</text>
</xsl:template>
在 XSLT 中使用<xsl:element>
and<xsl:attribute>
标记。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="text">
<xsl:attribute name="text" select="text/token" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
输出
<?xml version="1.0" encoding="UTF-8"?>
<text text="string1 string2" />