0

xml は次のとおりです。

<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>     

Firefox で xml ファイル (xslt でリンク) を開くと、「XSLT 変換中にエラーが発生しました: XSLT 変換に失敗しました。」が返されます。

誰でも私にガイダンスを提供できますか?

ありがとう。

4

2 に答える 2

1

Mozilla、IE、Opera、Chrome などのブラウザでサポートされている XSLT は、サポートされていない XSLT バージョン 1.0 に限定されていますfor-each-group。XSLT 1.0 では、Muenchian グループ化http://www.jenitennison.com/xslt/grouping/muenchian.xmlに限定されます。

代わりに、ブラウザーで XSLT 2.0 を提供する Saxon CE の使用を検討することもできます。http://www.saxonica.com/ce/index.xmlを参照してください。

于 2013-04-26T09:39:06.763 に答える
0

XSLT 2.0 は、Firefox でネイティブにサポートされていません。以下のリンクを参照してください: https://developer.mozilla.org/en/docs/XSLT_2.0

そこで、Muenchian グループ化を使用して以下の XSLT を使用しました。

<?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> 

Firefox で同じ XML を表示したところ、必要な出力と正しいビューが得られました。

于 2013-04-26T10:05:19.100 に答える