2012-02-27 59 views
0
<xsl:value-of select="substring-before($temp1,';')" disable-output-escaping="yes"/> 


其中temp1="fassdf sdf; asdf &amp;dfsdfsdf;fsdfsf;"如何在XSLT

我使用拆分使用值以上代碼格式化值分配給其他變量「;」。問題是temp1有&amp;,所以它將這個值按轉義序列字符分割;。所以我得到錯誤的輸出。但是,如果我使用disable-output-escaping="yes",那麼"&amp;"將轉換爲&。

如何從字符串中獲取格式化值?所以如果我分割字符串,我不會得到任何問題。因爲我會得到字符串的&代替&amp;

+0

你想要輸出什麼?請提及所需的輸出,我們可以幫助你:) – 2012-02-27 12:31:39

+0

你期待從上面提到的代碼輸出什麼? – 2012-02-27 13:00:22

+1

如何定義temp1?如果它是在您的XSLT或手動編寫的XML文件中設置的,則必須注意XML語法。當你將其定義爲'value =「&」' - 由於標準的XML轉義,它只有'&'裏面。 – DRCB 2012-02-27 13:08:25

回答

2

讓我們假設你的/我們的方便示例XML ..

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <child>sharepoint; R&amp;D;Department;</child> 
</root> 

XSLT代碼輸出所需的一個:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="text" indent="no"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="node()"/> 
    </xsl:template> 

    <xsl:template match="child"> 
    <xsl:call-template name="SplitString"> 
     <xsl:with-param name="StringVal" select="concat(.,';')"/> 
    </xsl:call-template> 
    </xsl:template> 

    <xsl:template name="SplitString"> 
    <xsl:param name="StringVal"/> 
    <xsl:variable name="first" select="substring-before($StringVal, ';')" /> 
    <xsl:variable name="remaining" select="substring-after($StringVal, ';')" /> 

    <xsl:value-of select="normalize-space($first)" disable-output-escaping="yes" /> 

    <xsl:if test="$remaining"> 
     <xsl:value-of select="'&#10;'"/> 
     <xsl:call-template name="SplitString"> 
     <xsl:with-param name="StringVal" select="$remaining" /> 
     </xsl:call-template> 

    </xsl:if> 
    </xsl:template> 

</xsl:stylesheet> 

這是你得到的輸出:

sharepoint 
R&D 
Department 
+0

@ Ayyappan.Anbalagan,你想讓我解釋代碼?或者你用它好嗎? – 2012-02-27 14:19:41

+0

這段代碼是否工作,如果我們有更多的「&」在臨時 – TinTin 2012-02-27 14:42:58

+0

這段代碼不錯(+1)。唯一的事情是,能源部是沒有必要的,應該最好的刪除。 – 2012-02-27 15:25:56