1
Je le code XML suivant:Pourquoi mon modèle XSL ne fonctionne pas
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfTrafficResponseIncident xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TrafficResponseIncident>
<IncidentReportId>220</IncidentReportId>
<IncidentNumber>137</IncidentNumber>
<IncidentDate>2012-01-23T12:18:40.027</IncidentDate>
<TMCRequestedFlag>true</TMCRequestedFlag>
<TMCRequestedTime>2012-01-23T23:18:00</TMCRequestedTime>
<TRUDetectedFlag>false</TRUDetectedFlag>
<TRUDetectedTime xsi:nil="true"/>
<SiteArrivalTime>2012-01-23T23:59:00</SiteArrivalTime>
<SiteDepartedTime>2012-01-23T00:18:00</SiteDepartedTime>
<Address>34-64 Queen St</Address>
<Suburb>Brisbane</Suburb>
<SecondaryRef>Lat: -27.470933 Lon: 153.023502</SecondaryRef>
<DirectionId>1</DirectionId>
<AssetOwnerId xsi:nil="true"/>
<BagsOfKittyLitterUsed/>
<AmountOfFuelAdded/>
<QuickClearanceTowFlag>false</QuickClearanceTowFlag>
<NumberOfPhotosAttached>0</NumberOfPhotosAttached>
<CreatedBy>akeller</CreatedBy>
<CreatedDateTime>2012-01-23T12:19:14.08</CreatedDateTime>
<UpdatedDateTime xsi:nil="true"/>
<CurrentFlag>true</CurrentFlag>
<Online>false</Online>
</TrafficResponseIncident>
</ArrayOfTrafficResponseIncident>
Je suis en train de le transformer avec le suivant, mais le XSL <xsl:if test="count(*/TrafficResponseIncident) > 0">
retourne toujours 0.
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/ArrayOfTrafficResponseIncident">
<xsl:if test="count(*/TrafficResponseIncident) > 0">
<xsl:value-of select="count(*/TrafficResponseIncident)"/>
<table class='searchresults'>
<tr class='header'>
<th class='center'>Incident Number</th>
<th>Date/Time</th>
<th>Type(s)</th>
<th>Location</th>
<th>Created By</th>
</tr>
<xsl:for-each select="*/TrafficResponseIncident">
<tr>
<td>
<xsl:value-of select="IncidentNumber"/>
</td>
<td>
<xsl:value-of select="ms:format-date(IncidentDate, 'dd/MM/yyyy')"/>
</td>
<td>
</td>
<td>
<xsl:value-of select="Address"/>
<br/>
<xsl:value-of select="Suburb"/>
</td>
<td>
<xsl:value-of select="CreatedBy"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
<xsl:if test="count(*/TrafficResponseIncident) = 0">
<table class='searchresults'>
<tr class='header'>
<th class='center'>Incident Number</th>
<th>Date/Time</th>
<th>Type(s)</th>
<th>Location</th>
<th>Submitted By</th>
</tr>
<tr>
<td colspan='5'>
<div class='noDataFound'>No incident reports found matching the search criteria</div>
</td>
</tr>
</table>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Qu'est-ce que est faux avec mon XSL?
Je pense que ce qu'il :) –
Comprenez-vous pourquoi ce changement était nécessaire? Lorsque vous écrivez des expressions de chemin relatif, vous devez toujours savoir quel est le nœud de contexte, c'est-à-dire d'où vous sélectionnez. –
Merci @MichaelKay - Je suis en train d'apprendre le XSL pour le moment et ça le rend un peu plus clair – Anthony