2014-02-09 84 views
1

任何人都可以幫助我進行XSL文件驗證?我不想驗證它的開始/關閉標籤,但「內部屬性」。 檢查: 我的XSL文件包含行<td><xsl:value-of select="year"/></td> 我需要檢查這一個的語法錯誤,如<td><xsl:vae-of select="year"/></td>如何驗證XSL文件?

有什麼辦法如何用JavaScript或jQuery做到這一點?

+0

我認爲使用未在其名稱空間中定義的元素將被XML驗證捕獲。所以也許這是你的答案:https://stackoverflow.com/questions/6334119/check-for-xml-errors-using-javascript – minopret

+0

它可能是,但只是部分... 我會顯示消息什麼是錯的。在這種情況下,像錯誤的參數「vae-of」。我知道它存在,但我找不到它 – Martin

回答

1

XSLT處理器檢查樣式表代碼,因此在Mozilla瀏覽器中,您可以將樣式表代碼傳遞給importStylesheet對象的importStylesheet方法,例如,

var proc = new XSLTProcessor(); 
var sheet = new DOMParser().parseFromString([ 
    '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">', 
    '<xsl:template match="/"><xsl:vae-of select="year"/></xsl:template>', 
    '</xsl:stylesheet>' 
    ].join('\n'), 'application/xml'); 
try { 
    proc.importStylesheet(sheet); 
} 
catch(e) { 
    // handle error here e.g. 
    console.log(e.message); 
} 

outputs「Component returned failure code:0x80600001 [nsIXSLTProcessor.importStylesheet]」。

但請注意,XSLT 1.0處理器應該在forwards compatible模式下處理大於1.0版本的樣式表代碼,並且如果您想驗證用戶輸入代碼爲XSLT 1.0,則需要確保它具有version="1.0"可以捕獲XSLT語言版本1.0的任何錯誤。

當然,這個錯誤信息對於識別代碼中的錯誤並不是很有幫助。

+0

就是這樣!謝謝:) 我會盡力找到一些有關錯誤信息的信息,但這正是我期待的! – Martin