使用 xslt 1.0 从 xml 中删除属性,并将其值设置为逗号分隔



这是我从临时表生成的xml

SELECT DISTINCT *     
FROM #tblCustomer Lines
ORDER BY CustomerNumber
FOR XML PATH('CustomerDetails') 

生成的 XML:

<CustomerDetails>
<CustomerNumber>1</CustomerNumber>
<Status>Active</Status>
<CustomerType>Individual</CustomerType>
<Title>Mr</Title>
</CustomerDetails>
<CustomerDetails>
<CustomerNumber>2</CustomerNumber>
<Status>Active</Status>
<CustomerType>Individual</CustomerType>
<Title>Miss</Title>
</CustomerDetails>

我想使用 xslt 删除所有元素并使其以逗号分隔。

预期产出:

<Lines>
<Line Number="1"  Data="1,Active,Individual,Mr" />
<LineNumData="2" Data="2,Active,Individual,Mr" />
</Lines>

任何帮助将不胜感激。蒂亚

此解决方案与您提到的输出略有不同,但我想您可以自己从这里继续,以使其符合您的确切需求。要实现以下输出,您可以使用这两个模板

<xsl:template match="/">
<Lines>
<xsl:apply-templates select="node()|@*" />
</Lines>
</xsl:template>
<xsl:template match="CustomerDetails">
<Line>
<xsl:attribute name="number"><xsl:number /></xsl:attribute>
<xsl:value-of select="concat(CustomerNumber,',',Status,',',CustomerType,',',Title)" />
</Line>
</xsl:template>

number属性通过<xsl:number />使用 XML 文件中CustomerDetails的索引。所以它与CustomerNumber不同.

输出:

<Lines>
<Line number="1">1,Active,Individual,Mr</Line>
<Line number="2">2,Active,Individual,Miss</Line>
</Lines>

相关内容

  • 没有找到相关文章

最新更新