2010-03-13 94 views
2

我試圖從XML格式化表格。比方說,我在XML此行刪除XSLT中引號內的空格

<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"/>,因爲我在表格單元格中顯示名稱時需要空格。

如何從類內的值中刪除空格,但不是單元格中的文本?

回答

9

使用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> 
+0

謝謝你的工作!我還在學習XSL,所以感謝幫助:) – Mottie 2010-03-13 01:11:01

+0

其實XML是來自其他站點的提要,並且文本前面有空白區域。翻譯功能並沒有消除這一點,任何解決方案呢?我不確定如何疊加功能,比如在翻譯後使用國家標準化。 – Mottie 2010-03-13 01:35:30

+1

如果您使用translate來移除空格,它應該爲所有空格執行此操作。你確定它不是標籤,回車或其他空白空間嗎?你可以使用'normalize-space()'並將結果發送到'translate()'。我會用一個例子來更新答案。 – 2010-03-13 02:15:27