Subject:Help With Updating Attributes Using XSLT Author:Ron Bernard Date:14 Aug 2009 11:05 AM
Hello. I am really new to xslt. I have an xml file that is created dynamically and contains attributes that need to be updated. I was told that using an xsl stylesheet to update the attributes would be a lot faster. The portion of my xml that I would like to update is as follows:
<mychart>
<data>
<attributes>
<attribute name="title">Station Capacity: LAS</attribute>
</attributes>
<series id="Taxi In" name="Taxi In" type="Bar" color="Red">
<tooltip enabled="true">
<format>Series name: {%SeriesName}
Point value: {%Value}{numDecimals:0}
</format>
</tooltip>
<point id="03:00" name="07/22/2009 03:00" y="0" x="03:00"/>
<point id="03:15" name="07/22/2009 03:15" y="0" x="03:15"/>
<point id="03:30" name="07/22/2009 03:30" y="0" x="03:30"/>
</series>
<series id="At Gate" name="At Gate" type="Bar" color="Blue">
<tooltip enabled="true">
<format>Series name: {%SeriesName}
Point value: {%Value}{numDecimals:0}
</format>
</tooltip>
<point id="03:00" name="07/22/2009 03:00" y="0" x="03:00"/>
<point id="03:15" name="07/22/2009 03:15" y="0" x="03:15"/>
<point id="03:30" name="07/22/2009 03:30" y="0" x="03:30"/>
</series>
<series id="Taxi Out" name="Taxi Out" type="Bar" color="Gold">
<tooltip enabled="true">
<format>Series name: {%SeriesName}
Point value: {%Value}{numDecimals:0}</format>
</tooltip>
<point id="03:00" name="07/22/2009 03:00" y="0" x="03:00"/>
<point id="03:15" name="07/22/2009 03:15" y="0" x="03:15"/>
<point id="03:30" name="07/22/2009 03:30" y="0" x="03:30"/>
</series>
<series id="Scheduled" name="Scheduled" type="Marker">
<tooltip enabled="true">
<format>Series name: {%SeriesName}
Point value: {%Value}{numDecimals:0}
</format>
</tooltip>
<point id="03:00" name="07/22/2009 03:00" y="17" x="03:00"/>
<point id="03:15" name="07/22/2009 03:15" y="17" x="03:15"/>
<point id="03:30" name="07/22/2009 03:30" y="17" x="03:30"/>
</series>
</data>
</mychart>
Based on an update that I receive from my server, I would need to update the y attribute of the point node based on the point id and the series id which is the parent node of point. Can anyone help me with this?
Subject:Help With Updating Attributes Using XSLT Author:Tony Lavinio Date:17 Aug 2009 09:35 AM
Well, I think you should do more than evaluate it, I think you should buy it :)
But in response to your query, the way to handle this is with what's called an "identity transform." You want to copy everything that is unchanged, and intercept and change only what you need to. This example passes in the change detail through three parameters: series_id, point_id, and then the new_y value.
Subject:Help With Updating Attributes Using XSLT Author:Ron Bernard Date:17 Aug 2009 07:55 PM
I tried this out and it works. Thanks so much for your help. A question I wanted to ask is our original method of updating attributes involed using XPath and javascript. Here is an example of how we accomplished this:
Subject:Help With Updating Attributes Using XSLT Author:Ron Bernard Date:20 Aug 2009 02:22 PM
We are roughly looking at about 600+ lines of xml. I guess the only issue I would have with the xslt approach is that I would not know if something changed or not.
Another action needs to be performed based on if the xml attribute has changed. With the xpath approach I can compare the value in the xml and then set some type of flag that lets me know that I need to perform the new action. The problem with this is I need to run the query twice. Once to do the comparison, and again to make the action update.
Is there a way to get a return value from xslt that would let me know if a value has changed and would therefore allow me to set the flag to perform the seperate action?