使用XSL转换XML失败求助:XPath评估无结果
解决XSL转换时的"XPath evaluation returned no result"错误
嘿,这个报错的原因很明确啦——你的XML和XSL文件都不完整,导致XSL处理器找不到可以匹配的节点。
问题拆解
- 你的XML文件只有XML声明
<?xml version="1.0" encoding="UTF-8"?>,没有任何实际的根元素和内容,XSL里的match="/"是要匹配XML文档的根节点,但你的文档根本没有可匹配的节点,自然会返回无结果的错误。 - 你的XSL文件也只写了模板的开头
<xsl:template match="/">,缺少闭合标签、XSLT命名空间声明和具体的转换逻辑,这也是问题之一。
修正后的示例
完整的XML文件(example.xml)
<?xml version="1.0" encoding="UTF-8"?> <root> <greeting>Hello, XSLT Transformation!</greeting> <content>这是测试用的XML内容</content> </root>
完整的XSL文件(transform.xsl)
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2><xsl:value-of select="root/greeting"/></h2> <p><xsl:value-of select="root/content"/></p> </body> </html> </xsl:template> </xsl:stylesheet>
关键说明
- XML必须有一个唯一的根元素(比如上面的
<root>),这是XML的基本语法要求,也是XSLT能够定位节点的基础。 - XSL文件必须包含完整的
<xsl:stylesheet>根元素,用来声明XSLT版本和官方命名空间;模板标签要正确闭合,同时添加具体的转换逻辑(比如用<xsl:value-of>提取节点内容)。
这样调整后,XSL处理器就能正常找到根节点并执行转换逻辑啦~
内容的提问来源于stack exchange,提问作者kaosantix12
相关产品推荐
相关产品推荐

