官方XSLT验证器?

时间:2013-12-16 07:15:57

标签: xml xslt xhtml validation

是否有任何官方XSLT验证程序,例如适用于HTML&amp ;;的http://validator.w3.org/ XHTML?

我知道http://validator.w3.org/也可用于验证XML和XSL文档。但它们被验证为XML结构。

例如,在有效的XHTML中,<span><div>...</div></span>无效,因为块元素不应出现在内嵌元素中。

那么,是否有一种方便的方法来直接验证XSL文档?

(我想我们可以结合XML和XSL,输出XHTML,然后验证它。但这不是直接而且不方便。)

谢谢!

3 个答案:

答案 0 :(得分:11)

我假设通过验证XSLT样式表,您的意思是检查已经格式良好的XML文档(看起来是XSLT代码)中的元素,属性等是否符合XSLT W3C规范。

首先,请注意XML文档的格式良好和有效性之间存在差异。如果包含的元素被正确嵌套,如果存在单个根元素等,则格式良好(这由XML规范定义)。另请参阅:Is there a difference between 'valid xml' and 'well formed xml'?

XML文档的有效性只能与XML架构(或DTD或RelaxNG ...)一起验证。模式是一组规则,用于定义,例如,哪些元素和属性以什么顺序被允许。

现在,回答你的问题:W3C没有这样的服务,但是,有一个可用的模式,参见例如http://www.w3.org/2007/schema-for-xslt20.xsd表示包含“标准”XSLT 2.0的所有结构的模式。

您可以针对此架构验证XSLT代码。尽管如此,使用XSLT处理器运行代码并查找它产生的警告和错误仍然更具洞察力。


此外,请注意XSLT代码的有效性及其输出的XHTML的有效性是不一样的。即使您的XSLT在XSLT规范方面完全有效,也并不意味着生成的XHTML是合理的。

答案 1 :(得分:2)

在一般情况下,您不能采用任意XSLT样式表并静态证明它将生成有效的XHTML。但是,如果编写样式表以利用模式感知,则可以检测到不会出现的情况。为此,您需要一个执行静态检查的模式感知XSLT处理器(例如Saxon-EE),并且您需要样式表来(a)使用xslt:import-schema导入模式,以及(b)调用验证结果元素使用[xsl:] validation =“strict”。这将静态地检测样式表输出中的一些有效性错误(在编译样式表时),并动态地(在运行它时)检测其余部分。

答案 2 :(得分:0)

有许多XML编辑工具(也可能是一些HTML编辑工具)知道(X)HTML的结构足以突出显示错误。例如,Visual Studio可以使用模式验证任何XML文档,包括XHTML或XSL-在XHTML模式中是否定义了跨越内部的div。