我是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>
我无法弄清楚我的代码有什么问题。
答案 0 :(得分:1)
据我所知,你错过了两件事。
在你的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">