2017-10-25 8 views
0

XSLTを使用して、XMLファイルからアルファベット順にユーザーを並べ替えようとしています。ここでXSLT - forループでアルファベット順に並べ替え

は、XMLサンプル

<ROOT> 
    <ROW> 
     <FULLNAME>Adam Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
      <DEPARTMENT>Test 2</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Julie Nelson</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
      <DEPARTMENT>Test 2</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Colin Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
    <ROW> 
     <FULLNAME>Bobby Low</FULLNAME> 
     <GROUPS> 
      <DEPARTMENT>Test 1</DEPARTMENT> 
     </GROUPS> 
    </ROW> 
</ROOT> 

そして、ここでは、私はXSLTは私がROOT内のすべてのROWと内のすべてのDEPARTMENTをループしてる要するに

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" /> 
    <xsl:template match="ROOT"> 
     <table> 
      <tbody> 
       <tr> 
        <td> 
         <strong>Users</strong> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <xsl:for-each select="ROW/GROUPS"> 
          <xsl:if test="DEPARTMENT = 'Test 1'"> 
           <xsl:sort select="../FULLNAME" /> 
           <xsl:value-of select="../FULLNAME" /> 
           <br /> 
          </xsl:if> 
         </xsl:for-each> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </xsl:template> 
</xsl:stylesheet> 

になりますどのように考えるかでありますGROUPSノードを細かい 'Test 1'にして、FULLNAMEノードの値をレベルアップして、それを<TD>に書き込みます。すべての値をアルファベット順に並べ替えたい<TD>に入れてください。現在私は<xsl:sort select="../FULLNAME" />が働いていないところです。あなたは述語

<xsl:for-each select="ROW/GROUPS[DEPARTMENT = 'Test 1']"> 
    <xsl:sort select="../FULLNAME" /> 

状態を表現することができ

+0

"動作していません"と言わないでください。失敗する方法を教えてください。 –

+0

@MichaelKay こんにちはマイケルは、執筆の時点で、プロセッサーが投げていたエラーメッセージを理解できませんでした。私は質問を掲示する前にそれらを研究しようとした、私はまた短い時間でした。上記のコードを生成し エラーがあった: 「SaxonCE.StandardErrorListener 11:29:25.549 SEVERE:スタイルシート/ XSL:/ XSLでエラーテンプレート/テーブル/ TBODY/TR [2]/TD/XSL:のために-each/xsl:if/xsl:sort in http://fiddle.frameless.io/ XTSE0010:xsl:if要素にxsl:sort要素を含めることはできません。 " 私は今メッセージを理解しています。当時、XSLの新機能ではありませんでした。 –

+0

これはよくある問題です。人々はエラーメッセージを理解していないので、誰もそれを理解しないと想像するので、投稿しません。エラーメッセージには、何が間違っているのかが書かれています.xsl:sortは間違っています。しかし、それはまた2つの異なるクライアントサイドのXSLTプロセッサー(Saxon-CEとFrameless)を指し、どちらも積極的に維持されていません。あなたは良い開発/テスト環境(oXygenやStylus Studio)を使用して、より良い診断を提供します。 –

答えて

0

おかげで、その後、xsl:sortは右の位置にあります。

+0

ちょうど私が後にしている!ありがとうございました! –

関連する問題