[xsl] Using XSL to create interactive web page from XML

Subject: [xsl] Using XSL to create interactive web page from XML
From: "Furst, Tom" <tom.furst@xxxxxxxx>
Date: Sat, 1 Dec 2007 07:58:56 -0500
I am relatively new to using XSLT. Following is an example of the xml I have
to start with.

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="symptom.xsl"?>
<fault-knowledge-base model-code='S92A'>

<symptoms>
<symptom ata-number="50-00-00" id="ATA50_S1">
<operator-fault-ref idref="IFS_24990"/>
<text>Lower bolt handle missing on lower cargo bulkhead.</text>
<corrective-action-ref idref="ATA50_CA1"/>
<corrective-action-ref idref="ATA50_CA2"/>
</symptom>

<symptom ata-number="50-00-00" id="ATA50_S2">
<operator-fault-ref idref="IFS_16199"/>
<text>Plastic panel is jamming cargo door.</text>
<corrective-action-ref idref="ATA50_CA3"/>
</symptom>

<symptom ata-number="50-10-02" id="ATA50_S3">
<operator-fault-ref idref="IFS_51528"/>
<text>Crack in cargo compartment roof.</text>
<corrective-action-ref idref="ATA50_CA4"/>
</symptom>

<symptom ata-number="50-10-04" id="ATA50_S4">
<operator-fault-ref idref="IFS_32803"/>
<text>Center lower cargo net bracket missing from upper shelf in cargo
compartment </text>
<corrective-action-ref idref="ATA50_CA5"/>
</symptom>

<symptom ata-number="50-10-04" id="ATA50_S5">
<operator-fault-ref idref="IFS_42757"/>
<text>Upper cargo shelf delaminated.</text>
<corrective-action-ref idref="ATA50_CA6"/>
</symptom>
</symptoms>

<corrective-actions>
<corrective-action id="ATA50_CA1">
<text>Installed new bolt handle on lower cargo bulkhead.</text>
<operator-action-ref idref="IFS_24990"/>
</corrective-action>

<corrective-action id="ATA50_CA2">
<text>Temporarilly installed screw.</text>
<operator-action-ref idref="IFS_22430"/>
</corrective-action>

<corrective-action id="ATA50_CA3">
<text>Repaired plastic paneling.</text>
<operator-action-ref idref="IFS_16199"/>
</corrective-action>

<corrective-action id="ATA50_CA4">
<text>Repair crack IAW DRB-2007-SA-92-018</text>
<operator-action-ref idref="IFS_51528"/>
</corrective-action>

<corrective-action id="ATA50_CA5">
<text>Installed new inserts.</text>
<operator-action-ref idref="IFS_32803"/>
</corrective-action>

<corrective-action id="ATA50_CA6">
<text>New cargo shelf installed.</text>
<operator-action-ref idref="IFS_42757"/>
</corrective-action>

</corrective-actions>
</fault-knowledge-base>

Using the following style sheet, I have managed to display the <text> element
of the <symptom> element  exactly the way I want.  Now what I am trying to
create is a link that will, when you click on the displayed <text> element, it
will show a list of the corresponding corrective actions in an inline frame. I
am unsure of:

1. How to ensure that each symptom is only linked to its associated
<corrective-action-ref> elements.
2. What needs to be used as the "href" attribute for the HTML.


This is the simple stylesheet I have created so far:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="/">
<html>
<head>

<style type="text/css">


.linktext {
font-family: Arial;
font-size: 9pt;
font-weight: bold;
color: black;
text-decoration: none
}

a:visited { text-decoration: none }
a:hover { text-decoration:none; color: blue; }
a:active {text-decoration: none; color:red}

.header {
font-family: Arial;
font-size: 12pt;
font-weight: bold
}
</style>

</head>
<body>
<table style="width:100%">

<tr>
<th width="40%" class="header">Symptoms</th>
<th width="60%" class="header">Corrective Actions</th>
</tr>
<tr>
<td align="top">
<table border="0">
<xsl:for-each select="fault-knowledge-base/symptoms/symptom">
<tr>
<td><a href="??" target="I2" class="linktext"><xsl:value-of
select="text"/></a></td>
</tr>
</xsl:for-each>
</table>
</td>
<td>
<iframe name="I2" marginwidth="3" marginheight="3" height="580" width="100%"
src="" align="left" frameborder="0" scrolling="auto">
Your browser does not support inline frames or is currently configured not to
display inline frames.
</iframe>
</td>
</tr>
</table>


</body>
</html>
</xsl:template>
</xsl:stylesheet>

If anybody can help, I would greatly appreciate it.


Tom Furst
Technical Writer
RCM Technologies
Ext. 104
tom.furst@xxxxxxxx

Current Thread