我的XML如下所示:
<Description>
<LongDescription>a</LongDescription>
<LongDescription>b</LongDescription>
<LongDescription>c</LongDescription>
</Description>
所需的输出是:
<Description>
<LongDescription>a
b
c</LongDescription>
</Description>
我使用以下代码来获取输出:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="Description">
<xsl:copy>
<xsl:apply-templates select="*[not(self::LongDescription)]" />
<LongDescription>
<xsl:apply-templates select="LongDescription/text()" />
</LongDescription>
</xsl:copy>
</xsl:template>
<xsl:template match="LongDescription/text()">
<xsl:if test="position() > 1"></xsl:if>
<xsl:text>
</xsl:text>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
但是使用这个我得到的结果为:
<?xml version="1.0" encoding="UTF-8"?>
<Description>
<LongDescription>
a
b
c</LongDescription>
</Description>
除了LongDescription之外,我希望“a”不在下一行。
我尝试过使用strip和normalize选项,但它不起作用。
但这些选项无效。
任何人都可以尽快帮助我。
先谢谢, ANKIT
答案 0 :(得分:1)
我刚删除了LongDescription中的新行
<LongDescription><xsl:apply-templates select="LongDescription/text()" />
</LongDescription>
这个模板有点奇怪,应该是这样的:
<xsl:template match="LongDescription/text()">
<xsl:if test="position() > 1"><xsl:text>
</xsl:text></xsl:if>
<xsl:value-of select="."/>
</xsl:template>
答案 1 :(得分:0)
最简单的方法是 -
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="Description">
<xsl:copy>
<LongDescription>
<xsl:apply-templates select="LongDescription/text()" />
</LongDescription>
</xsl:copy>
</xsl:template>
<xsl:template match="LongDescription[1]/text()" priority="1">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="LongDescription/text()">
<xsl:text>
</xsl:text><xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
<强> OUTPUT - 强>
<?xml version="1.0" encoding="UTF-8"?>
<Description>
<LongDescription>a
b
c</LongDescription>
</Description>