再次是一件简单的事情。我有一个分析XML和XSL文件的样式表。基本上,它试图检测XML是否是样式表:检测XML文件是否包含特定命名空间
<xsl:if test="count(//xsl:template)!=0">
它确实检测样式表。但是,它具有XML文件的问题,它会生成“未定义的命名空间前缀 - 'xsl'”错误。 (在XmlSpy中,我正在处理的项目中出现类似错误。)
我做错了什么。有关如何改进此样式表的任何建议?
一些额外的信息:这是一个的意思分析其他的XML文件,无论它们包含内容的样式表。它应该能够自我改变,并且做得很好。转换其他(普通)样式表也没有问题。当我尝试转换常规的XML文件时,问题就到了。然而并非所有的XML文件...
事实证明,错误是别的。我试图转换的XML文件包含处理指令。这一个:<?xml-stylesheet href="..\MyStylesheet.xsl" type="text/xsl"?>
我现在的问题是,当我处理包含此PI的XML文件时,XSLT开始报告有关未定义名称空间前缀的错误。那么,我该如何告诉XSLT处理器忽略这个处理指令呢?
亚历克斯:这是一个奇怪的错误报告。如果查询没有XSLT名称空间的XML树,它应该导致一个空的节点集,而不是一个错误。 – 2010-10-01 12:11:07
好问题(+1)。查看我的答案以获得详细的分析和简短而全面的解决方案。 – 2010-10-01 13:05:30