删除XSLT中引号内的空格

Mot*_*tie 3 xslt whitespace

我正在尝试从XML格式化表格.可以说我在XML中有这一行

<country>Dominican Republic</country>
Run Code Online (Sandbox Code Playgroud)

我想让我的桌子看起来像这样

<td class="country DominicanRepublic">Dominican Republic</td>
Run Code Online (Sandbox Code Playgroud)

我试过这个:

<td class="country {country}"><xsl:value-of select="country"/></td>
Run Code Online (Sandbox Code Playgroud)

这个:

<xsl:element name="td">
 <xsl:attribute name="class">
  <xsl:text>country </xsl:text>
  <xsl:value-of select="normalize-space(country)"/>
 </xsl:attribute>
<xsl:value-of select="country"/>
</xsl:element>
Run Code Online (Sandbox Code Playgroud)

normalize-space()不删除名字的两个部分之间的空间,我不能用<xsl:strip-space elements="country"/>,因为我需要空间,当我显示表格单元格中的名称.

如何从类中的值中删除空格,而不是单元格中的文本?

Mad*_*sen 11

使用translate()函数将空格''替换为'':

<xsl:element name="td">
    <xsl:attribute name="class">
        <xsl:text>country </xsl:text>
        <xsl:value-of select="translate(country,' ','')"/>
        </xsl:attribute>
    <xsl:value-of select="country"/>
</xsl:element>
Run Code Online (Sandbox Code Playgroud)

您可以使用normalize-space(),它将删除任何前导和尾随空格,并将字符之间的多个空格转换为单个空格.然后,发送结果translate()以替换任何剩余的空格:

<xsl:element name="td">
   <xsl:attribute name="class">
    <xsl:text>country </xsl:text>
    <xsl:value-of select="translate(normalize-space(country),' ','')"/>
    </xsl:attribute>
    <xsl:value-of select="normalize-space(country)"/>
</xsl:element>
Run Code Online (Sandbox Code Playgroud)