如何生成XSL HTML表格?排查仅显表头无XML内容的问题
XSLT表格只显示表头?和XSD无关,重点看这些地方!
嘿,我来帮你捋捋这个问题~首先明确说:XSD不会直接导致你的XSLT无法渲染XML数据!XSD只是用来验证XML结构是否符合规范的,只要你的XML本身结构合法(哪怕没关联XSD),XSLT的处理逻辑才是影响数据显示的核心因素。
你遇到的“只有表头没数据”,大概率是下面这些原因:
- XPath路径写错了:这是最常见的坑!比如你在
<xsl:value-of>或者<xsl:for-each>里写的节点路径和XML的实际结构不匹配——比如XML有命名空间但XSL没声明对应前缀,或者节点层级搞错了(比如XML根节点是<data>,你却写了<xsl:for-each select="items/item">)。 - 没写遍历数据的逻辑:从你给出的XSL片段来看,可能只写了表头的HTML代码,但漏掉了遍历XML数据节点的关键部分(比如
<xsl:for-each select="你的数据节点路径">),自然不会渲染出数据行。 - XML和XSL的关联有问题:检查XML里的
<?xml-stylesheet?>声明,是不是href路径写错了,或者type属性不是text/xsl?路径不对的话浏览器根本找不到你的XSL文件。 - XML本身没数据:虽然可能性低,但可以先确认你的XML文件里确实存在对应的数据节点,不是空的。
给你举个简单的正确示例参考:
假设你的XML是这样的:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="your-sheet.xsl"?> <products> <product> <name>苹果</name> <price>5.99</price> </product> <product> <name>香蕉</name> <price>3.99</price> </product> </products>
对应的XSL需要包含遍历逻辑:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" doctype-system="about:legacy-compat"/> <xsl:template match="/"> <html> <body> <table border="1"> <!-- 表头 --> <tr> <th>商品名称</th> <th>价格</th> </tr> <!-- 遍历数据节点的关键代码 --> <xsl:for-each select="products/product"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="price"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
你可以对照自己的代码,重点检查XPath路径和遍历逻辑这两块,应该就能找到问题啦~
内容的提问来源于stack exchange,提问作者Manny0
相关产品推荐
相关产品推荐

