无法使用 XSLT 将 XML(包含命名空间)转换为 XHMTL

Unable to convert XML (containing namespaces) to XHMTL using XSLT

我是 XML 的新手。我的 XML 文件包含两个命名空间。如果没有定义名称空间,我可以使用 XSLT 轻松地将 XML 转换为 XHTML。当我尝试使用路径表达式在 XSLT 中使用名称空间时,它不起作用。这是我的代码。

data.xml

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="style.xsl" ?>
<a:personData xmlns:a="http://auc.com">
 <a:user id="1">
    <a:fname>Assad</a:fname>
    <a:lname>Ch</a:lname>
    <a:email>assad@example.com</a:email>
 </a:user>

 <a:user id="2">
    <a:fname>John</a:fname>
    <a:lname>Smith</a:lname>
    <a:email>John@example.com</a:email>
 </a:user>  
</a:personData>

style.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>
        <head>
            <title>Some Title</title>
        </head>
        <body>
            <p>
               <xsl:value-of select="a:personData/a:user/a:fname" />
            </p>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

我不知道我的代码有什么问题。

据我所知,您遗漏了两件事。 在您的 xml 中,personData 元素的结束标记缺少名称空间前缀,它应该是

</a:personData>

此外,在您的 xslt 中,您还应该包含命名空间,

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

应该变成

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://auc.com">