我有一个类似于以下内容的 XML 文件:
<doc>
<element>
<word>
<text>one word</text>
</word>
<word>
<text>two words</text>
</word>
</element>
<element>
<other>
<text>the sky</text>
</other>
<word>
<text>NN NN</text>
</word>
</element>
</doc>
而且我希望只有一个标签和行的内容,当有两个接一个时,就像这样:
<element>
<word>
<text>one word</text>
<text>two words</text>
</word>
</element>
问题是我正在生成一个<xsl:element>
以获取<word>
标签。这<xsl:element>
已经在一个<xsl:for-each>
循环中,<word>
以正确的顺序放置标签(过滤属性)。
我以前的 XML 文档是这样的:
<doc>
<element class="word">
<text>one word</text>
</element>
<element class="word">
<text>NN NN</text>
</element>
<element class="word">
<text>two words</text>
</element>
<element class="other">
<text>the sky</text>
</element>
</doc>
任何帮助都会很棒,谢谢:)
- 更多细节 -
这是我想要的结果:
<doc>
<element>
<word>
<text>one word</text>
<text>two words</text>
</word>
</element>
<element>
<other>
<text>the sky</text>
</other>
<word>
<text>NN NN</text>
</word>
</element>
</doc>
而且我无法指定标签词或其他,因为我没有封闭的标签列表。所以我使用xsl:variable:
<xsl:for-each select="element">
<xsl:variable name="name">
<xsl:value-of select="@class"/>
</xsl:variable>
<xsl:element name="{$name}">
<text>
<xsl:value-of select="."/>
</text>
</xsl:element>
</xsl:for-each>