首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XSLT生成具有jQuery树表属性的表

使用XSLT生成具有jQuery树表属性的表
EN

Stack Overflow用户
提问于 2017-04-09 04:29:44
回答 1查看 89关注 0票数 0

使用Saxon XSLT 2.0,如果绝对必要的话,可以使用XSLT 3.0。

主要问题是生成<tr>属性id和父id (data-tt-iddata-tt-parent-id),它们是由短划线分隔的数字序列,库用于显示它们(它们必须按顺序)。有没有什么有效方法的建议?我正在考虑不断更新一个字符串变量,也就是说,如果XSLT以正确的顺序(深度优先,按顺序,不受任何多线程的影响)遍历。否则,我可能不得不聪明地计算每个值的祖先等,这似乎非常低效。我对XSLT有些陌生;)

代码语言:javascript
复制
<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上有更详细的描述

我正在生成一个jQuery树表,类似于他们的拖放复杂树:

代码语言:javascript
复制
<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源代码具有以下结构:

代码语言:javascript
复制
<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>

请帮帮忙!:)

EN

回答 1

Stack Overflow用户

发布于 2017-04-09 16:53:07

我在将您的输入与输出关联起来时遇到了一些小问题,但我认为使用xsl:number level="multiple"就可以做到这一点。就像这样

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43300041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档