xsl с xml с атрибутом в корневом элементе не работает - PullRequest
4 голосов
/ 17 ноября 2011

Я использую SW, который генерирует XML-файл, и я хотел бы представить этот файл в HTML-файл, поэтому я начал создавать XSL-файл, чтобы сделать это для меня. Проблема в том, что я не знаю, как обратиться к корневому элементу списка ошибок из-за атрибутов. Если я удаляю атрибуты из XML-файла, xsl работает нормально.

Мой xml-файл:

<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 до сих пор:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Issues</h2>
    <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', выводом является таблица без строк, но если я удаляю атрибуты, она работает нормально.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Добавить объявление пространства имен в XSLT:

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

Тогда используйте это:

<xsl:value-of select="k:errorList/k:problem/k:problemID"/>
3 голосов
/ 17 ноября 2011
<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...