【发布时间】:2026-01-18 11:30:01
【问题描述】:
我在使用 xslt 将 xhtml 文件转换为 csv 时遇到问题。 xhtml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Flight details</title>
</head>
<body>
<h1>Flight details</h1>
<ul>
<li id="nam">BLA145</li>
<li id="reg">YK-LOL</li>
<li id="hex">000100</li>
<li id="alt">34950</li>
<li id="spd">457</li>
<li id="hdg">117</li>
<li id="sqk">4774</li>
</ul>
</body>
</html>
样式表如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xhtml xsl">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates select="html/body/ul/*"/>
</xsl:template>
<xsl:template match="li[@id='nam']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='reg']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='hex']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='alt']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='spd']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='hdg']">
<xsl:value-of select="."/>,
</xsl:template>
<xsl:template match="li[@id='sqk']">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
这将导致没有输出。我观察到,如果我删除
xmlns="http://www.w3.org/1999/xhtml"
从<html > 标记,然后将正确生成csv。
这是命名空间问题吗?我该如何解决?
谢谢!
【问题讨论】: