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) > 0"> <xsl:call-template name="folder"/> </xsl:if> //loop through root files <xsl:if test="count($fileroot) > 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) > 0"> <xsl:for-each select="subfolders/folder"> <!--subfolder 2 --> <xsl:if test="count($folderroot/subfolders/folder/subfolders/folder) > 0"> <xsl:for-each select="$folderroot/subfolders/folder/subfolders/folder"> </xsl:for-each> </xsl:if> <xsl:if test="count($folderroot/subfolders/folder/files) > 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) > 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.
Comments
Post a Comment