On Thu, Sep 2, 2010 at 10:49 AM, Ricky <[email protected]> wrote:
> Could even be
> potentially possible with LLSD since it is based in xml, but may be
> more difficult to make a good XSL document due to the fact that LLSD
> is not context-free. (The descriptor and content are sibling nodes.
> This caused me much headache many months ago!)
>
You can use XPaths like key[text()='KEYNAMEHERE']/following-sibling::* to do
key/value processing over XML-serialized LLSD in XSLT.
For example, given this XML-serialized LLSD:
<?xml version="1.0" encoding="utf-8"?>
<llsd>
<array>
<map>
<key>speaker</key>
<string>Joshua Linden</string>
<key>text</key>
<string>Hello, world</string>
<key>timestamp</key>
<date>2010-09-02T12:11:44Z</date>
</map>
<map>
<key>speaker</key>
<string>Joshua Linden</string>
<key>text</key>
<string>It's lonely here</string>
<key>timestamp</key>
<date>2010-09-02T12:12:32Z</date>
</map>
</array>
</llsd>
You can process it with this XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" />
<xsl:template match="/llsd/array">
<html>
<title>Chat Log</title>
<table>
<xsl:for-each select="map">
<xsl:call-template name="entry" />
</xsl:for-each>
</table>
</html>
</xsl:template>
<xsl:template name="entry">
<tr>
<td>
<xsl:value-of select="key[text()='timestamp']/following-sibling::*"
/>
</td>
<td>
<xsl:value-of select="key[text()='speaker']/following-sibling::*" />
</td>
<td>
<xsl:value-of select="key[text()='text']/following-sibling::*" />
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
To get this HTML output:
<html>
<title>Chat Log</title>
<table>
<tr>
<td>2010-09-02T12:11:44Z</td>
<td>Joshua Linden</td>
<td>Hello, world</td>
</tr>
<tr>
<td>2010-09-02T12:12:32Z</td>
<td>Joshua Linden</td>
<td>It's lonely here</td>
</tr>
</table>
</html>
_______________________________________________
Policies and (un)subscribe information available here:
http://wiki.secondlife.com/wiki/OpenSource-Dev
Please read the policies before posting to keep unmoderated posting privileges