您好我找不到解决此问题的方法。现在我有xml看起来像这样。
<text>
<token>string1</token>
<token>string2</token>
</text>
我需要将其转换为这种格式。我不知道如何从多个节点获取值并将它们移动到单个属性中。鉴于上述xml,这将是我想要的输出。
<text text="string1 string2"></text>
答案 0 :(得分:1)
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>
答案 1 :(得分:0)
使用XSLT中的<xsl:element>
和<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" />