无法使用 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">
我是 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">