我正在尝试从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"/>
,因为当我在表格单元格中显示名称时我需要空格。
如何从类中的值中删除空格,而不是单元格中的文本?
答案 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