Using xsl to put xml data into a table
Here should go questions about transforming XML with XSLT and FOP.
-
- Posts: 1
- Joined: Fri Sep 28, 2012 6:32 am
Using xsl to put xml data into a table
hi guys, i'm new here, getting into the basics of xsl, and i was wondering if anyone could help me out. I trying to get the data from an xml file and display it in a table.
this is the xml data:
I'd like to get an idea, or template from anyone that can help out. If any more data is needed, like the DTD, let me know. Thank you 
this is the xml data:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE internetUsage SYSTEM "HomeInternetUsage2011Census.dtd">
<internetUsage src="Australian Bureau of Statistics 81460DO004_201011 Household Use of Information Technology, Australia, 2010-11">
<descriptions group="title">
<usage type='1'>Persons who accessed the internet at home</usage>
<usage type='2'>Accessing government services</usage>
<usage type='3'>Buying or selling goods or services</usage>
<usage type='4'>Creating online content</usage>
<usage type='5'>Downloading video or music</usage>
<usage type='6'>Educational purposes</usage>
<usage type='7'>Emailing</usage>
<usage type='8'>Listening to music or watching videos/movies online</usage>
<usage type='9'>Paying bills online or online banking</usage>
<usage type='10'>Research or news and general browsing</usage>
<usage type='11'>Social networking and online gaming</usage>
<usage type='12'>Voice or video calls over the internet</usage>
</descriptions>
<descriptions group="units">
<usage type='1'>1000s</usage>
<usage type='2'>%</usage>
<usage type='3'>%</usage>
<usage type='4'>%</usage>
<usage type='5'>%</usage>
<usage type='6'>%</usage>
<usage type='7'>%</usage>
<usage type='8'>%</usage>
<usage type='9'>%</usage>
<usage type='10'>%</usage>
<usage type='11'>%</usage>
<usage type='12'>%</usage>
</descriptions>
<ageGroup group="15-17">
<usage type='1'>778</usage>
<usage type='2'>23</usage>
<usage type='3'>24</usage>
<usage type='4'>54</usage>
<usage type='5'>65</usage>
<usage type='6'>78</usage>
<usage type='7'>79</usage>
<usage type='8'>83</usage>
<usage type='9'>15</usage>
<usage type='10'>85</usage>
<usage type='11'>88</usage>
<usage type='12'>22</usage>
</ageGroup>
<ageGroup group="18-24">
<usage type='1'>1910</usage>
<usage type='2'>44</usage>
<usage type='3'>46</usage>
<usage type='4'>57</usage>
<usage type='5'>60</usage>
<usage type='6'>61</usage>
<usage type='7'>93</usage>
<usage type='8'>81</usage>
<usage type='9'>66</usage>
<usage type='10'>89</usage>
<usage type='11'>86</usage>
<usage type='12'>27</usage>
</ageGroup>
<ageGroup group="25-34">
<usage type='1'>2820</usage>
<usage type='2'>53</usage>
<usage type='3'>55</usage>
<usage type='4'>50</usage>
<usage type='5'>50</usage>
<usage type='6'>50</usage>
<usage type='7'>93</usage>
<usage type='8'>68</usage>
<usage type='9'>78</usage>
<usage type='10'>87</usage>
<usage type='11'>75</usage>
<usage type='12'>33</usage>
</ageGroup>
<ageGroup group="35-44">
<usage type='1'>2691</usage>
<usage type='2'>53</usage>
<usage type='3'>51</usage>
<usage type='4'>38</usage>
<usage type='5'>36</usage>
<usage type='6'>51</usage>
<usage type='7'>91</usage>
<usage type='8'>51</usage>
<usage type='9'>71</usage>
<usage type='10'>89</usage>
<usage type='11'>53</usage>
<usage type='12'>29</usage>
</ageGroup>
<ageGroup group="45-54">
<usage type='1'>2411</usage>
<usage type='2'>48</usage>
<usage type='3'>44</usage>
<usage type='4'>31</usage>
<usage type='5'>23</usage>
<usage type='6'>44</usage>
<usage type='7'>90</usage>
<usage type='8'>39</usage>
<usage type='9'>64</usage>
<usage type='10'>88</usage>
<usage type='11'>37</usage>
<usage type='12'>26</usage>
</ageGroup>
<ageGroup group="55-64">
<usage type='1'>1717</usage>
<usage type='2'>46</usage>
<usage type='3'>38</usage>
<usage type='4'>28</usage>
<usage type='5'>16</usage>
<usage type='6'>37</usage>
<usage type='7'>89</usage>
<usage type='8'>27</usage>
<usage type='9'>60</usage>
<usage type='10'>86</usage>
<usage type='11'>28</usage>
<usage type='12'>25</usage>
</ageGroup>
<ageGroup group="65-">
<usage type='1'>1029</usage>
<usage type='2'>35</usage>
<usage type='3'>26</usage>
<usage type='4'>23</usage>
<usage type='5'>9</usage>
<usage type='6'>24</usage>
<usage type='7'>91</usage>
<usage type='8'>19</usage>
<usage type='9'>43</usage>
<usage type='10'>81</usage>
<usage type='11'>17</usage>
<usage type='12'>25</usage>
</ageGroup>
<gender group="male">
<usage type='1'>6663</usage>
<usage type='2'>47</usage>
<usage type='3'>47</usage>
<usage type='4'>37</usage>
<usage type='5'>40</usage>
<usage type='6'>47</usage>
<usage type='7'>89</usage>
<usage type='8'>56</usage>
<usage type='9'>63</usage>
<usage type='10'>88</usage>
<usage type='11'>51</usage>
<usage type='12'>29</usage>
</gender>
<gender group="female">
<usage type='1'>6693</usage>
<usage type='2'>47</usage>
<usage type='3'>43</usage>
<usage type='4'>44</usage>
<usage type='5'>34</usage>
<usage type='6'>51</usage>
<usage type='7'>93</usage>
<usage type='8'>50</usage>
<usage type='9'>65</usage>
<usage type='10'>87</usage>
<usage type='11'>59</usage>
<usage type='12'>27</usage>
</gender>
<employment group="employed">
<usage type='1'>9825</usage>
<usage type='2'>50</usage>
<usage type='3'>49</usage>
<usage type='4'>42</usage>
<usage type='5'>39</usage>
<usage type='6'>50</usage>
<usage type='7'>91</usage>
<usage type='8'>55</usage>
<usage type='9'>70</usage>
<usage type='10'>88</usage>
<usage type='11'>57</usage>
<usage type='12'>29</usage>
</employment>
<employment group="unemployed">
<usage type='1'>3531</usage>
<usage type='2'>39</usage>
<usage type='3'>33</usage>
<usage type='4'>37</usage>
<usage type='5'>31</usage>
<usage type='6'>44</usage>
<usage type='7'>90</usage>
<usage type='8'>48</usage>
<usage type='9'>46</usage>
<usage type='10'>85</usage>
<usage type='11'>51</usage>
<usage type='12'>26</usage>
</employment>
<location group="urban">
<usage type='1'>11969</usage>
<usage type='2'>47</usage>
<usage type='3'>45</usage>
<usage type='4'>41</usage>
<usage type='5'>38</usage>
<usage type='6'>49</usage>
<usage type='7'>91</usage>
<usage type='8'>54</usage>
<usage type='9'>64</usage>
<usage type='10'>87</usage>
<usage type='11'>56</usage>
<usage type='12'>29</usage>
</location>
<location group="rural">
<usage type='1'>1387</usage>
<usage type='2'>47</usage>
<usage type='3'>43</usage>
<usage type='4'>36</usage>
<usage type='5'>27</usage>
<usage type='6'>45</usage>
<usage type='7'>88</usage>
<usage type='8'>40</usage>
<usage type='9'>59</usage>
<usage type='10'>86</usage>
<usage type='11'>46</usage>
<usage type='12'>21</usage>
</location>
</internetUsage>

-
- Posts: 2879
- Joined: Tue May 17, 2005 4:01 pm
Re: Using xsl to put xml data into a table
Hi,
You didn't mention what kind of table, so I'm assuming HTML.
Here's a "quick and dirty" XSLT (based on one of the Oxygen samples, 'personal.xsl') that generates an HTML table for your XML:
It's "quick and dirty" because it doesn't handle each type of column in particular, it processes all of them in the same way with the help of an "xsl:for-each".
Regards,
Adrian
You didn't mention what kind of table, so I'm assuming HTML.
Here's a "quick and dirty" XSLT (based on one of the Oxygen samples, 'personal.xsl') that generates an HTML table for your XML:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<xsl:element name="table">
<xsl:attribute name="border">2</xsl:attribute>
<tr>
<xsl:attribute name="color">#FFFFFF</xsl:attribute>
<xsl:attribute name="bgcolor">#336666</xsl:attribute>
<xsl:attribute name="align">center</xsl:attribute>
<xsl:for-each select="//(descriptions|ageGroup|gender|employment|location)">
<td>
<font name="Arial" size="3">
<b>
<xsl:value-of select="@group"/>
</b>
</font>
</td>
</xsl:for-each>
</tr>
<xsl:apply-templates/>
</xsl:element>
</html>
</xsl:template>
<xsl:template match="descriptions[1]//usage">
<xsl:variable name="type" select="@type"/>
<xsl:element name="tr">
<xsl:attribute name="align">center</xsl:attribute>
<xsl:for-each select="//(descriptions|ageGroup|gender|employment|location)">
<xsl:element name="td">
<font name="verdana" size="3">
<xsl:attribute name="width">120</xsl:attribute>
<i>
<xsl:value-of select="usage[@type=$type]//text()"/>
</i>
</font>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
Regards,
Adrian
Adrian Buza
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service