0

嗨,我无法找到解决此问题的方法。现在我有看起来像这样的xml。

<text>
    <token>string1</token>
    <token>string2</token>
</text>

我需要把它转换成这种格式。我不知道如何从多个节点获取值并将它们移动到单个属性中。鉴于上述 xml,这将是我想要的输出。

<text text="string1 string2"></text>
4

2 回答 2

1

Ravi Thapliyal 的说法是正确的。您可以使用xsl:elementxsl: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>
于 2013-05-28T19:04:45.907 回答
0

在 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" />
于 2013-05-28T18:42:16.737 回答