2014-02-09 59 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