2017-04-08 3 views
0

Saxon XSLT 2.0を使用すると、必然的にXSLT 3.0を使用する可能性があります。XSLTを使用してjQueryツリーテーブル属性を持つテーブルを生成

主な問題は、IDと親のID(data-tt-iddata-tt-parent-id)を生成することです。これは、ライブラリが表示に使用するダッシュで区切られた数字のシーケンスです(順番に並べる必要があります)。効率的なアプローチに関するアドバイスはありますか?私は継続的に文字列変数を更新することを考えています。つまり、XSLTが正しい順序(深さ - 最初、順番に、マルチスレッドの影響を受けない)で移動する場合です。さもなければ、私は非常に非効率的であるように各価値のために祖先などを数えることで賢明にならなければならないかもしれません。私は、XSLTに多少新たなんだ、私はjQueryのドラッグ&ドロップで自分のコンプレックスツリーに似たツリーテーブルを生成しています

<table id="example-basic"> 
    <caption>Basic jQuery treetable Example</caption> 
    <thead> 
    <tr> 
     <th>Tree column</th> 
     <th>Additional data</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr data-tt-id="1"> 
     <td>Node 1: Click on the icon in front of me to expand this branch.</td> 
     <td>I live in the second column.</td> 
    </tr> 
    <tr data-tt-id="1.1" data-tt-parent-id="1"> 
     <td>Node 1.1: Look, I am a table row <em>and</em> I am part of a tree!</td> 
     <td>Interesting.</td> 
    </tr> 
    <tr data-tt-id="1.1.1" data-tt-parent-id="1.1"> 
     <td>Node 1.1.1: I am part of the tree too!</td> 
     <td>That's it!</td> 
    </tr> 
    <tr data-tt-id="2"> 
     <td>Node 2: I am another root node, but without children</td> 
     <td>Hurray!</td> 
    </tr> 
    </tbody> 
</table> 

これらの例とjQueryのツリーテーブルがhttp://ludo.cubicphuse.nl/jquery-treetable/#usage

でより詳細に記載されている):

<table id="example-advanced"> 
    <caption> 
    <a href="#" onclick="jQuery('#example-advanced').treetable('expandAll'); return false;">Expand all</a> 
    <a href="#" onclick="jQuery('#example-advanced').treetable('collapseAll'); return false;">Collapse all</a> 
    </caption> 
    <thead> 
    <tr> 
     <th>Name</th> 
     <th>Kind</th> 
     <th>Size</th> 
    </tr> 
    </thead> 
<tbody> 
<tr data-tt-id='1'><td><span class='file'>Acknowledgements.rtf</span></td><td>File</td><td>480.95 KB</td></tr> 
<tr data-tt-id='2'><td><span class='folder'>CHUD</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-1' data-tt-parent-id='2'><td><span class='folder'>amber</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-1-1' data-tt-parent-id='2-1'><td><span class='file'>AmberTraceFormats.pdf</span></td><td>File</td><td>124.46 KB</td></tr> 
<tr data-tt-id='2-2' data-tt-parent-id='2'><td><span class='folder'>BigTop</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-2-1' data-tt-parent-id='2-2'><td><span class='file'>BigTopUserGuide.pdf</span></td><td>File</td><td>1314.71 KB</td></tr> 
<tr data-tt-id='2-3' data-tt-parent-id='2'><td><span class='folder'>Saturn</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-3-1' data-tt-parent-id='2-3'><td><span class='file'>SaturnUserGuide.pdf</span></td><td>File</td><td>694.29 KB</td></tr> 
<tr data-tt-id='2-4' data-tt-parent-id='2'><td><span class='folder'>Shark</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-4-1' data-tt-parent-id='2-4'><td><span class='file'>SharkUserGuide.pdf</span></td><td>File</td><td>12902.51 KB</td></tr> 
<tr data-tt-id='2-5' data-tt-parent-id='2'><td><span class='folder'>simg4</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-6' data-tt-parent-id='2'><td><span class='folder'>simg4_plus</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='2-7' data-tt-parent-id='2'><td><span class='folder'>simg5</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3'><td><span class='folder'>DocSets</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1' data-tt-parent-id='3'><td><span class='folder'>com.apple.ADC_Reference_Library.CoreReference.docset</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1' data-tt-parent-id='3-1'><td><span class='folder'>Contents</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-1' data-tt-parent-id='3-1-1'><td><span class='file'>Info.plist</span></td><td>File</td><td>1.23 KB</td></tr> 
<tr data-tt-id='3-1-1-2' data-tt-parent-id='3-1-1'><td><span class='folder'>Resources</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-1' data-tt-parent-id='3-1-1-2'><td><span class='file'>docSet.dsidx</span></td><td>File</td><td>41504 KB</td></tr> 
<tr data-tt-id='3-1-1-2-2' data-tt-parent-id='3-1-1-2'><td><span class='file'>docSet.skidx</span></td><td>File</td><td>43072 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3' data-tt-parent-id='3-1-1-2'><td><span class='folder'>Documents</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1' data-tt-parent-id='3-1-1-2-3'><td><span class='folder'>documentation</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1' data-tt-parent-id='3-1-1-2-3-1'><td><span class='folder'>Accessibility</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1' data-tt-parent-id='3-1-1-2-3-1-1'><td><span class='folder'>Reference</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1' data-tt-parent-id='3-1-1-2-3-1-1-1'><td><span class='folder'>AccessibilityCarbonRef</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-1' data-tt-parent-id='3-1-1-2-3-1-1-1-1'><td><span class='folder'>CarbonAXRefRevisions</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-1-1' data-tt-parent-id='3-1-1-2-3-1-1-1-1-1'><td><span class='file'>CarbonAXRefRevisions.html</span></td><td>File</td><td>7.44 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-2' data-tt-parent-id='3-1-1-2-3-1-1-1-1'><td><span class='folder'>Index</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-2-1' data-tt-parent-id='3-1-1-2-3-1-1-1-1-2'><td><span class='file'>index_of_book.html</span></td><td>File</td><td>174.1 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-3' data-tt-parent-id='3-1-1-2-3-1-1-1-1'><td><span class='file'>index.html</span></td><td>File</td><td>1.1 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-4' data-tt-parent-id='3-1-1-2-3-1-1-1-1'><td><span class='folder'>Reference</span></td><td>Folder</td><td>--</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-4-1' data-tt-parent-id='3-1-1-2-3-1-1-1-1-4'><td><span class='file'>reference.html</span></td><td>File</td><td>196.28 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-1-5' data-tt-parent-id='3-1-1-2-3-1-1-1-1'><td><span class='file'>toc.html</span></td><td>File</td><td>15.92 KB</td></tr> 
<tr data-tt-id='3-1-1-2-3-1-1-1-2' data-tt-parent-id='3-1-1-2-3-1-1-1'><td><span class='folder'>AccessibilityLowlevel</span></td><td>Folder</td><td>--</td></tr> 
    . . . 

私のXMLソースは、以下の構造を有する:

<root xmlns="http://example.com"> 
    <content> 
     <folder> 
      <config> 
       <name>Root</name> 
       <updatedDate>2017-04-05T09:48:19.619-04:00</updatedDate> 
      </config> 
      <folder> 
       <config> 
        <name>Email</name> 
        <updatedDate>2017-04-05T09:47:58.669-04:00</updatedDate> 
       </config> 
       <folder> 
        <config> 
         <name>Documents</name> 
         <updatedDate>2017-04-05T09:47:58.669-04:00</updatedDate> 
        </config> 
        <file> 
         <config> 
          <name>Resume.doc</name> 
          <additionalElements>...</additionalElements> 
          <updatedDate>2017-04-05T09:40:03.022-04:00</updatedDate> 
         </config> 
         <permissions> 
          <read>yes</read> 
          <write>yes</write> 
          <additionalElements>...</additionalElements> 
         </permissions> 
        </file> 
        <file> 
         <occasionalFileOrFolderResultToIgnore/> 
         <config> 
          <name>Letter.doc</name> 
          <additionalElements>...</additionalElements> 
          <updatedDate>2017-04-05T09:47:58.669-04:00</updatedDate> 
         </config> 
         <permissions> 
          <read>yes</read> 
          <write>yes</write> 
          <additionalElements>...</additionalElements> 
         </permissions> 
        </file> 
        <permissions> 
         <read>yes</read> 
         <write>yes</write> 
        </permissions> 
       </folder> 
       <permissions> 
        <read>yes</read> 
        <write>yes</write> 
       </permissions> 
      </folder> 
      <permissions> 
       <read>yes</read> 
       <write>no</write> 
      </permissions> 
     </folder> 
    </root> 
</content> 

助けてください! :)

答えて

0

あなたの入力を出力に関連付けるのに少し問題がありますが、これはxsl:number level="multiple"で簡単に行うことができると思います。何かのように

<xsl:template match="folder"> 
    <td> 
    <xsl:attribute name="data-tt-id"> 
     <xsl:number level="multiple" count="folder" format="1-1"/> 
    </attribute> 
    <xsl:attribute name="data-tt-parent-id"> 
     <xsl:number select=".." level="multiple" count="folder" format="1-1"/> 
    </xsl:attribute> 
    ... 
    <xsl:apply-templates/> 
    </td> 
</xsl:template> 
関連する問題