Dynamic parsing of xml with xslt -


i parsing dynamic (folder.subfolders) xml xslt, tried few things i'm not there yet. here structure of xml have:

<folders>     <folder>       <folderid>2edfb864-5693-4e7f-8f98-4ef6e032d8a5</folderid>       <name>bla</name>       <foldersize>33kb</foldersize>       <lastmodified>2012-06-07 11:11:02</lastmodified>       <subfolders />       <files>         <file>           <fileid>1825</fileid>           <name>img_15052012_142711.png</name>           <size>33kb</size>           <extension>png</extension>           <lastmodified />         </file>       </files>     </folder>     <folder>       <folderid>c9c5e2b2-ee93-49a2-b8be-d86e41528071</folderid>       <name>testfolder</name>       <foldersize>0kb</foldersize>       <lastmodified>2012-06-05 00:00:00</lastmodified>       <subfolders>         <folder>           <folderid>3b43fe58-db85-43e6-b541-77ce250afc78</folderid>           <name>subfolder</name>           <foldersize>362kb</foldersize>           <lastmodified>2012-06-05 00:00:00</lastmodified>           <subfolders>             <folder>               <folderid>ac1d35d0-80fd-4d97-8101-4de408f24dbd</folderid>               <name>subsub</name>               <foldersize>0kb</foldersize>               <lastmodified>2012-06-05 00:00:00</lastmodified>               <subfolders />               <files />             </folder>             <folder>               <folderid>7cfdc199-9d0e-4f86-904d-eda3521f3e87</folderid>               <name>subsub1</name>               <foldersize>0kb</foldersize>               <lastmodified>2012-06-05 00:00:00</lastmodified>               <subfolders />               <files />             </folder>           </subfolders>           <files>             <file>               <fileid>1833</fileid>               <name>untitled.png</name>               <size>121kb</size>               <extension>png</extension>               <lastmodified />             </file>             <file>               <fileid>1834</fileid>               <name>untitled.png</name>               <size>121kb</size>               <extension>png</extension>               <lastmodified />             </file>             <file>               <fileid>1839</fileid>               <name>untitled.png</name>               <size>121kb</size>               <extension>png</extension>               <lastmodified />             </file>           </files>         </folder>       </subfolders>       <files />     </folder>     <folder>       <folderid>1ead58e2-a412-4318-9629-d5c70d8681bc</folderid>       <name>testfolder1</name>       <foldersize>241kb</foldersize>       <lastmodified>2012-06-05 00:00:00</lastmodified>       <subfolders />       <files>         <file>           <fileid>1832</fileid>           <name>untitled.png</name>           <size>121kb</size>           <extension>png</extension>           <lastmodified />         </file>         <file>           <fileid>1837</fileid>           <name>untitled.png</name>           <size>121kb</size>           <extension>png</extension>           <lastmodified />         </file>       </files>     </folder>   </folders>   <files>     <file>       <fileid>1836</fileid>       <name>untitled.png</name>       <size>121kb</size>       <extension>png</extension>       <lastmodified />     </file>     <file>       <fileid>1869</fileid>       <name>wallpaper.png</name>       <size>7.1mb</size>       <extension>png</extension>       <lastmodified />     </file>   </files> 

the thing don't know how deep folders/subfolders tree can be. did still static, needs dynamic also, select part if xslt condition.

what guys think best approach parse xml in case?

this structure have:

folders      subfolders                  subfolders                 subfolders                files           files      files  files   

and have now:

<xsl:variable name="folderroot" select="$xml/root/folders/folder" /> <xsl:variable name="fileroot" select="$xml/root/files/file" />  //loop through root folder <xsl:if test="count($folderroot) &gt; 0">   <xsl:call-template name="folder"/> </xsl:if>  //loop through root files     <xsl:if test="count($fileroot) &gt; 0">    <xsl:call-template name="files"/> </xsl:if>  //files template  <xsl:template name="files">     <xsl:for-each select="$fileroot">       <tr>         <td class="defaulticon {extension}">         </td>         <td>           <xsl:value-of select="name" />         </td>       </tr>     </xsl:for-each>   </xsl:template>  //folder template  <xsl:template name="folder">     <xsl:for-each select="$folderroot">       <tr>         <td>           <img src="/default/components/bestandsbeheer/images/folder.png" width="16" height="16" />         </td>         <td>           <xsl:value-of select="name"/>         </td>         <td> </td>         <td>map</td>         <td>           <xsl:value-of select="lastmodified" />         </td>       </tr>       <!--subfolder 1 -->       <xsl:if test="count(subfolders/folder) &gt; 0">         <xsl:for-each select="subfolders/folder">          <!--subfolder 2 -->           <xsl:if test="count($folderroot/subfolders/folder/subfolders/folder) &gt; 0">             <xsl:for-each select="$folderroot/subfolders/folder/subfolders/folder">             </xsl:for-each>           </xsl:if>           <xsl:if test="count($folderroot/subfolders/folder/files) &gt; 0">             <xsl:for-each select="$folderroot/subfolders/folder/files">             </xsl:for-each>           </xsl:if>         </xsl:for-each>       </xsl:if>        //files belong sub folder       <xsl:if test="count(files) &gt; 0">         <xsl:for-each select="files/file">          </xsl:for-each>       </xsl:if>      </xsl:for-each>   </xsl:template> 

let me know if not clear.

something this? it's skeleton structure idea.

http://www.xmlplayground.com/c848vl


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -