Xml xsl:显示concat变量的结果,每个值之间带有逗号

Xml xsl:显示concat变量的结果,每个值之间带有逗号,xml,xslt,tei,Xml,Xslt,Tei,我有以下变量: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE stylesheet [ <!ENTITY menu SYSTEM "verb.xml"> ]> <xsl:variable name="per"> <xsl:value-of select="*//per/@value | *//gen/@value | *//number/@value"/> </

我有以下变量:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE stylesheet [
 <!ENTITY menu SYSTEM "verb.xml">   
]>

<xsl:variable name="per">
  <xsl:value-of select="*//per/@value | *//gen/@value | *//number/@value"/>
</xsl:variable>

<xsl:for-each select="concat($per, '')" >
  <xsl:value-of select="translate(., ' ', '')" separator="," />
</xsl:for-each>
当前输出为:2msg3fsg

但我想要:2msg,3fsg

我尝试了几种解决方案,例如,每个
元素都有一个变量,而不是所有
TEI
元素或
都有一个变量。但它不起作用


提前,谢谢你的忠告

使用一个变量,该变量是串接值或串接值的字符串序列:

<xsl:variable name="values" as="xs:string*" select="//gramGrp/string-join((per/@value, gen/@value, number/@value), '')"/>
<xsl:value-of select="$values" separator=", "/>


请参阅。

太好了!非常感谢。因为我之前有其他
元素
,所以我在
//gramGrp
之前添加了
*
。它工作得很好!我不习惯
xs:string
,因为我是
xsl
的新手。
<xsl:variable name="values" as="xs:string*" select="//gramGrp/string-join((per/@value, gen/@value, number/@value), '')"/>
<xsl:value-of select="$values" separator=", "/>