2012-07-03 23 views
3

上使用帶有標識轉換的禁用輸出轉義我正在嘗試使用java應用轉換(currentXSLT.transform(xmlFile, outputFile);)但我正在轉義文本。我需要從XML文本中掃描正在被掃描的字符。如何在xslt

到目前爲止,我已經嘗試了這一點:

 


    <?xml version="1.0" encoding="utf-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
     <xsl:output method="xml" indent="no" omit-xml-declaration="yes"/> 
     <xsl:strip-space elements="*"/> 

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

     <xsl:template match="text()"> 
     <xsl:copy> 
      <xsl:value-of select="." disable-output-escaping="yes"/> 
     </xsl:copy> 
     </xsl:template> 
    </xsl:stylesheet> 


 

但它似乎並沒有工作。

任何想法?

謝謝。

+2

你說的不行是什麼意思? d-o-e(這幾乎總是一個壞主意)只改變了<和&的輸出,所以你應該得到一個身份轉換,除非轉換良好形成的輸入 <不是沒有形成良好的結果<是_really_你想要什麼? –

+0

@DavidCarlisle嗨,我知道這是不是一個好主意,但也有需要轉義一些其他的字符,例如: '約翰遜&約翰遜'應該給'強生公司'這是會插入已經與強生進行比較的數據庫中。 – StrayChild01

+1

正如我說的doe _only_影響&和<(如果你在輸出utf8),但如果你只是想要一個字符串輸出不使用xml輸出方法,如果你想要xml輸出爲什麼強制' Johnson&Johnson'這是不是很好形成,所以只有在任何XML系統讀取時纔會出現致命錯誤?如果你的數據庫中有字符串「Johnson&Johnson」,那麼把這個字符串放在XML中,你需要Johnson & Johnson –

回答

0

最後,我不能用普通的xslt做到這一點,我不得不使用apache commons來避開文本。既然是業務的需要保持無效標誌,我必須找到一個解決辦法:

StringWriter stringWriter = new StringWriter(); 
transformer.transform(xmlFile, new StreamResult(stringWriter)); 
String xmlOutput = stringWriter.getBuffer().toString(); 
xmlOutput = StringEscapeUtils.escapeXml(xmlOutput);