2016-12-27 27 views
0

我有這個輸入XML,其中我想用disable-output-escaping功能用"代替",而不是在輸出XML中。我一直在嘗試以下XSL上的各種各樣的東西,但沒有用 - 某些或另一個打破了所需的name標記。在DOE中需要XSL的幫助(禁用輸出escpaing)

輸入XML:

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <name>&quot;test&quot;</name> 
    <type>computer</type> 
</book> 

變換XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="book"> 
     <book> 
      <xsl:apply-templates /> 
     </book> 
    </xsl:template> 
    <xsl:template match="name"> 
     <name> 
      <xsl:text disable-output-escaping="yes"> 
       <![CDATA[&quot;test&quot;]]> 
      </xsl:text> 
     </name> 
    </xsl:template> 
    <xsl:template match="type"> 
     <genre> 
      <xsl:apply-templates /> 
     </genre> 
    </xsl:template> 
</xsl:stylesheet> 

所需的輸出XML:

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <name>"test"</name> 
    <genre>computer</genre> 
</book> 

輸出XML是我得到:

<?xml version="1.0" encoding="UTF-8"?><book> 
    <name> 
       &quot;test&quot; 
      </name> 
    <genre>computer</genre> 
</book> 

任何人都可以提供關於如何得到這個工作的一些見解?

我一直在尋找各種來源,但沒有固定這個使用!

+1

請注意,我沒有看到任何需要轉換該'name'元素的任何需要,複製它的任何轉換,如http://xsltransform.net/ncntCSx,應該導致在'「測試」「那裏沒有理由逃避元素內容的引用。 –

+0

很好,謝謝你的XSL樣品! –

回答

1

通過將文本放入CDATA中的樣式表中,可以強制它按字面進行處理。如果它不在CDATA中,它會以您想要的方式工作。沒有理由在樣式表中的CDATA部分中。

+0

沒有'CDATA'部分,我只是得到一個空白''標籤 –

+0

它適用於使用Oxygen/XML 14與Saxon 6.5.5和Saxon 9.4.0.6(XSLT 1.0)。只要文本不在CDATA部分,它也會產生所需的結果,帶或不帶禁用輸出轉義。 –

+0

在我應用了您的建議後發現了問題,我錯過了在''標籤下的'XSL'中添加''標記。 –