您好我目前在我的XML文件中有以下命名空间
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="products.xsl"?>
<products xmlns="http://localhost"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://localhost products.xsd">
<product>
<productname>Product 1</productname>
<productname>Product 2</productname>
<productname>Product 3</productname>
<productdetails>Details go here</productdetails>
.... other elements that I don't use....
</product>
</products>
当我尝试运行我的XSL文件时,我没有获得任何产品名称,我可以获取产品名称,我删除了产品根元素中的名称空间。所以我的命名空间mys是错误的。有人能告诉我哪里出了问题吗? 我的xsl文件是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="5.0" omit-xml-declaration="yes" indent="yes"
doctype-system="about:legacy-compat"/>
<xsl:template match="/">
<!-- HTML page starts here -->
<html>
<head>
<title>Products Page</title>
</head>
<body>
<h2>Products</h2>
<ul>
<xsl:for-each select="products/product/productname">
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</body>
</html>
<!-- HTML page ends here -->
</xsl:template>
</xsl:stylesheet>
我正在寻找的结果是
...(the other XHTML tags)...
<ul>
<li>Product 1</li>
<li>Product 2</li>
<li>Product 3</li>
</ul>
...(rest of XHTML tags)..
但是我根本没有得到这个,我得到的只是:
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Products Page</title>
</head>
<body>
<h2>Products</h2>
<ul></ul>
</body>
</html>
正如您所看到的,没有产品展示?
答案 0 :(得分:1)
我无法重现此问题,当我使用http://home.arcor.de/martin.honnen/xslt/test2014031601.xml和http://home.arcor.de/martin.honnen/xslt/test2014031601.xsl或http://home.arcor.de/martin.honnen/xslt/test2014031602.xml和http://home.arcor.de/martin.honnen/xslt/test2014031601.xsl时,Firefox和IE会显示产品名称。
答案 1 :(得分:1)
请记住,XPath(以及XSLT)是名称空间感知的,但(至少在这些标准的1.0版本中)没有默认名称空间(xmlns =)赋值的概念。如果要选择命名空间节点,则XPath 必须使用绑定到正确名称空间的显式前缀。