Welcome to WebmasterWorld Guest from 54.147.134.218

Forum Moderators: httpwebwitch

Message Too Old, No Replies

XSL layout Help

XML to HTML Table via XSL

     
4:52 am on Aug 16, 2004 (gmt 0)

New User

10+ Year Member

joined:Aug 16, 2004
posts:3
votes: 0


I'm attempting to display the following XML code in an HTML table using an XSL stylesheet. but am having a few problems.

First off an extract from the XML which was generated using Crystal Reports


<FormattedSections>
<FormattedSection SectionNumber="0">
<FormattedReportObjects>
<FormattedReportObject xsi:type="CTFormattedField" Type="xsd:string" FieldName="{VhStock.REGNO}"><ObjectName>Field22</ObjectName>
<FormattedValue>RLF462</FormattedValue>
<Value>RLF462</Value>
</FormattedReportObject>
<FormattedReportObject xsi:type="CTFormattedField" Type="xsd:string" FieldName="{VhStock.BODY_TYPE}"><ObjectName>Field25</ObjectName>
<FormattedValue>SEDAN</FormattedValue>
<Value>SEDAN</Value>
</FormattedReportObject>
<FormattedReportObject xsi:type="CTFormattedField" Type="xsd:string" FieldName="{VhStock.TRANSMISSION}"><ObjectName>Field27</ObjectName>
<FormattedValue>5M</FormattedValue>
<Value>5M</Value>
</FormattedReportObject>
<FormattedReportObject xsi:type="CTFormattedField" Type="xsd:string" FieldName="{VhStock.PAINT}"><ObjectName>Field28</ObjectName>
<FormattedValue>GREEN</FormattedValue>
<Value>GREEN</Value>

**Note i am wanting to diplay the data between the<Value> </Value> tags in the above XML. How do i select Say just the "VhStock.REGNO" field to display in one <td> and "VhStock.Paint" in the next <td>.

Heres the stylesheet i've created to display the XML it grabs the data but doesnt put it in to a table or any sort of structure plese help:


<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v4.2 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>Used Vehicles</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="FormattedReportObjects">
<table border="0">
<xsl:apply-templates/>
</table>
</xsl:template>

<xsl:template match="FormattedReportObject">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>

<xsl:template match="ObjectNameŠFormattedValueŠValue">
<td>
<xsl:value-of select="text()"/>
</td>
</xsl:template>
</xsl:stylesheet>


when i view this in the browser it displays like this.
--------------------------------------------------------------------------
Used Vehicles
Field26DAEWOODAEWOOField22RLF462RLF462Field25SEDANSEDANField275M5MField28GREENGREENField2906/981998-06-01T00:00:00Field304/02/052005-02-04T00:00:00Field3187,13687136.00Field33BBField34269269.00Field1$7,9957995.00Field2110110.00Field5LAN OS SELANOS
--------------------------------------------------------------------------
So its not displaying it in a table at all.. i have tried following many tutorials but none have helped me so far.

I have checked both the XML and XSL file in an editor and are both well-formed.

I'm just really stuck on this at the moment, mainly because none of the tutorials really relate to an XML document structured like the one above.

Any help would be greatly appreciated.

9:25 pm on Aug 21, 2004 (gmt 0)

Preferred Member

10+ Year Member

joined:Feb 27, 2003
posts:637
votes: 0


poisontheused,
I have created a sample xsl, but it only works for the little snippet that you provided. If the xml file is huge, this xsl is going to be very, very slow.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<table>
<xsl:call-template name="processme"/>
</table>
</xsl:template>
<xsl:template name="processme">
<tr>
<xsl:for-each select="FormattedSections/FormattedSection/FormattedReportObjects/FormattedReportObject">
<xsl:if test="@FieldName = '{VhStock.REGNO}'">
<td><xsl:value-of select="@FieldName"/></td>
</xsl:if>
<xsl:if test="@FieldName = '{VhStock.PAINT}'">
<td><xsl:value-of select="@FieldName"/></td>
</xsl:if>
</xsl:for-each>
</tr>
<tr>
<xsl:for-each select="FormattedSections/FormattedSection/FormattedReportObjects/FormattedReportObject">
<xsl:if test="@FieldName = '{VhStock.REGNO}'">
<td><xsl:value-of select="Value"/></td>
</xsl:if>
<xsl:if test="@FieldName = '{VhStock.PAINT}'">
<td><xsl:value-of select="Value"/></td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>

Give it a shot, let me know what you think. I know that some people are going to flame this xsl, :) but oh well, it's been a while.

 

Join The Conversation

Moderators and Top Contributors

Hot Threads This Week

Featured Threads

Free SEO Tools

Hire Expert Members