关于 xslt:xsl 与 xml 与根元素中的属性不起作用

xsl with xml with attribute in root element does not work

我使用一个 sw 生成一个 xml 文件,并且我想将该文件呈现在一个 html 文件中,所以我开始创建一个 xsl 文件来为我做这件事。
问题是由于属性,我不知道如何解决错误列表根元素。如果我从 xml 文件中删除属性,则 xsl 工作正常。

我的 xml 文件是:

1
2
3
4
5
6
7
8
9
<errorList xmlns="http://www.klocwork.com/inForce/report/1.0" version="9.1.0">
<problem>
 <problemID>1</problemID>
 <file>stdafx.h</file>
</problem>
<problem>
...
</problem>
</errorList>

到目前为止,我的 xsl 是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    Issues
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>ProblemID</th>
        <th>File</th>
      </tr>
       <tr>
    <td><xsl:value-of select="errorList/problem/problemID"/></td>
    <td><xsl:value-of select="errorList/problem/file"/></td>    
        </tr>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

问题是,如果属性存在于"errorList"标签中,则输出是一个没有行的表,但如果我删除属性它工作正常。


向 XSLT 添加命名空间声明:

1
2
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:k="http://www.klocwork.com/inForce/report/1.0">

然后使用它:

1
<xsl:value-of select="k:errorList/k:problem/k:problemID"/>


1
2
3
<xsl:stylesheet version="1.0"
    xmlns:k="http://www.klocwork.com/inForce/report/1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

然后将其引用为 k:errorList.