是否有任何正式的XSLT验证程序,例如HTML和XHTML的http://validator.w3.org/?
我知道http://validator.w3.org/也可以用于验证XML和XSL文档。但它们已被验证为XML结构。
例如,在有效的XHTML中,<span><div>...</div></span>
无效,因为块元素不应出现在嵌入式元素中。
那么,有没有一种简便的方法可以直接验证XSL文档?
((我想我们可能会结合使用XML和XSL,输出XHTML,然后对其进行验证。但这不是直接的,也不方便。)
谢谢!
[我假设通过验证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是合理的。
在一般情况下,您不能采用任意的XSLT样式表并静态地证明它将生成有效的XHTML。但是,只要编写样式表以利用架构意识,您就可以检测到很多情况下不会这样做。为此,您需要进行静态检查的可感知架构的XSLT处理器(例如Saxon-EE),并且需要样式表来(a)使用xslt:import-schema导入架构,以及(b)在结果元素使用[xsl:] validation =“ strict”。这将在样式表输出中静态地(在编译样式表时)检测剩余的有效性错误,而其余部分则在运行时动态地检测出来。
这是一个可行的解决方案。1.您可以针对XSD在线验证XSLT。 https://easycodeforall.com/XMLValidation.jsp
[有许多XML编辑工具(也可能还有一些HTML编辑工具)对(X)HTML的结构足够了解,可以突出显示错误。例如,Visual Studio可以使用该架构(包括XHTML或XSL)验证任何XML文档-在XHTML架构中定义是否允许在范围内使用div。