删除XSLT中引号内的空格

时间:2010-03-13 00:10:39

标签: xslt whitespace

我正在尝试从XML格式化表格。假设我在XML中有这一行

<country>Dominican Republic</country>

我想让我的表看起来像这样

<td class="country DominicanRepublic">Dominican Republic</td>

我试过这个:

<td class="country {country}"><xsl:value-of select="country"/></td>

然后这个:

<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>

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

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

2 个答案:

答案 0 :(得分: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>

您可以使用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>

答案 1 :(得分:1)

您需要递归地用空格分割字符串,看一下这个主题: Does XSLT have a Split() function?

或者你可以试试这个替换功能实现:http://geekswithblogs.net/Erik/archive/2008/04/01/120915.aspx