2013-04-26 5 views
0

XML-, как показано ниже:XSLT группы по Выдает ошибку,

<Words num="1"> 
    <Word> 
     <search>Apple</search> 
     <replace>Fruit</replace> 
    </Word> 
    <Word num="2"> 
     <search>Honda</search> 
     <replace>Car</replace> 
    </Word> 
    <Word num="3"> 
     <search>Banana</search> 
     <replace>Fruit</replace> 
    </Word> 
</Words> 

Я хочу, чтобы преобразовать его в таблицу в HTML вывода (не XML вывода) - с помощью группировки функциональных возможностей (группа по замене).

<table> 
    <tr><td>Replace: Fruit</td></tr> 
    <tr><td>Replace: Car</td></tr> 
</table> 

Код я написал это:

<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" /> 

    <xsl:template match="/"> 
     <html>    
     <body>     
      <table border="1"> 
       <xsl:for-each-group select="Words/Word" group-by="replace"> 
        <tr> 
        <td>Replace: <xsl:value-of select="current-grouping-key()"/></td> 
        </tr>    
       </xsl:for-each-group> 
      </table> 
     </body> 
     </html>  
    </xsl:template> 
</xsl:stylesheet>  

При открытии XML-файл (связанный с XSLT) в Firefox, она возвращает "Ошибка при преобразовании XSLT: преобразование XSLT не удалось."

Может ли кто-нибудь предоставить мне руководство?

Спасибо.

ответ

1

XSLT, поддерживаемый в браузерах, таких как Mozilla, IE, Opera, Chrome, ограничен XSLT версии 1.0, которая не поддерживает for-each-group. С XSLT 1.0 вы ограничены группировкой Muenchian http://www.jenitennison.com/xslt/grouping/muenchian.xml.

В качестве альтернативы вы можете рассмотреть возможность использования Saxon CE, предоставляющего XSLT 2.0 в браузере. См. http://www.saxonica.com/ce/index.xml.

+0

Хороший совет! Спасибо. – MGen

0

XSLT 2.0 не поддерживается в Firefox. Пожалуйста, обратитесь к следующей ссылке: https://developer.mozilla.org/en/docs/XSLT_2.0

Итак, я использовал приведенный ниже XSLT, используя группировку Muenchian.

<?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" /> 
<xsl:key name="Kreplace" match="Word" use="replace"/> 
    <xsl:template match="Words"> 
     <html>    
     <body>     
      <table border="1"> 
       <tr> 
        <xsl:for-each select="Word[generate-id(.)=generate-id(key('Kreplace',replace)[1])]"> 
        <td>Replace: <xsl:value-of select="replace"/></td> 
        </xsl:for-each> 
        </tr>    
      </table> 
     </body> 
     </html>  
    </xsl:template> 
</xsl:stylesheet> 

Теперь я смотрел тот же XML в Firefox, и я получил требуемую мощность и правильный вид

Смежные вопросы