2010-08-05 57 views
3

一個角色,我有是一種把XML的XSLT來PLSQL如何逃避XSLT

我需要轉義字符:>(大於)

例如:

P_C710_INT_PROFILE_ID => 

我嘗試使用>並將字符放在xsl:文字中,沒有運氣

有沒有想法?

謝謝

+0

xsl:output'中屬性'method'的值是什麼?當您使用'>'時,您獲得的輸出是什麼? – 2010-08-05 14:38:07

+0

我使用 我得到的輸出是'>' – MoreCoffee 2010-08-05 14:42:38

+0

然後它應該工作。將XSLT的規則添加到您的問題中。 – 2010-08-05 15:21:26

回答

5

謝謝大家,但正確的答案是這樣的:

<xsl:text disable-output-escaping="yes">&gt;</xsl:text> 
+2

@ user412045:這是錯誤的。從http://www.w3.org/TR/xslt#section-Text-Output-Method *「文本輸出方法會忽略disable-output-escaping屬性,因爲它不會執行任何輸出轉義」* – 2010-08-06 00:07:00

+0

沒有什麼其他人對我有用,你有什麼建議嗎?謝謝 – MoreCoffee 2010-08-06 14:41:37

3

沒有問題。這個樣式表(空):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 
</xsl:stylesheet> 

輸入:

<text>P_C710_INT_PROFILE_ID =&gt;</text> 

輸出:

P_C710_INT_PROFILE_ID => 

編輯:因爲你的問題是不明確的,我加入的情況下,一個解決方案你想在xsl:output/@ method =「text」聲明下輸出字符實體。

這個樣式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:template match="text()" name="text"> 
     <xsl:param name="text" select="."/> 
     <xsl:if test="$text != ''"> 
      <xsl:variable name="first" select="substring($text,1,1)"/> 
      <xsl:choose> 
       <xsl:when test="$first = '&gt;'">&amp;gt;</xsl:when> 
       <xsl:otherwise> 
        <xsl:value-of select="$first"/> 
       </xsl:otherwise> 
      </xsl:choose> 
      <xsl:call-template name="text"> 
       <xsl:with-param name="text" select="substring($text,2,(string-length($text)-1) div 2 + 1)"/> 
      </xsl:call-template> 
      <xsl:call-template name="text"> 
       <xsl:with-param name="text" select="substring($text,(string-length($text)-1) div 2 + 3)"/> 
      </xsl:call-template> 
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

輸出:

P_C710_INT_PROFILE_ID =&gt; 

這涉及到Render escaped XML on browser

1

I W與此同時,即使在更改輸出方法並添加disable-output-escaping屬性之後,它仍然無法正常工作。

然後,我看着我的源代碼,我意識到我正在使用XmlTextWriter與轉換的結果和XmlTextWriter應用輸出轉義。一旦我切換到只使用StringWriter輸出是正確的。