Subject: [xsl] banging my head against the wall (key, actually) From: "Syd Bauman s.bauman@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 24 Apr 2015 01:30:26 -0000 |
I fully expected method 1 and method 2 in the following stylesheet (which reads itself as input) to produce the same result. Method 1 is to access nodes from a key all at once by handing key() a single sequence of four key-values. Method 2 is to access nodes from a key one at a time by handing key() a single key-value four times. Obviously I'm missing something, but I'll be darned if I can figure out what. I have, of course, tried a bunch of variations (like using "(string())" instead of "string(.)" as the 2nd arg to 2nd key()), but to no avail. Any thoughts? Note that the @alpha bit is, at the moment, entirely unused. XSLT and input ---- --- ----- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="xs xd" version="2.0"> <xd:doc scope="stylesheet"> <xd:desc> <xd:p n="1">one</xd:p> <xd:p n="2">two dos</xd:p> <xd:p n="3">three tres III</xd:p> <xd:p n="4">f o u r</xd:p> </xd:desc> </xd:doc> <xsl:output method="text"/> <xsl:key name="tst" match="xd:desc/xd:p" use="."/> <xsl:template match="/"> <xsl:variable name="set"> <xsl:apply-templates select="//xd:p"/> </xsl:variable> <!-- method 1: --> <xsl:for-each select="key('tst', $set/duck/string(.) )"> <xsl:message>debug1: <xsl:value-of select="@n"/></xsl:message> </xsl:for-each> <!-- method 2: --> <xsl:for-each select="$set/duck"> <xsl:message>debug2: <xsl:value-of select="key('tst', string(.) )/@n"/></xsl:message> </xsl:for-each> </xsl:template> <xsl:template match="xd:p"> <duck alpha="{substring('abcd',xs:integer(@n),1)}"><xsl:value-of select="."/></duck> </xsl:template> </xsl:stylesheet> expected output -------- ------ debug1: 1 debug1: 2 debug1: 3 debug1: 4 debug2: 1 debug2: 2 debug2: 3 debug2: 4 actual output ------ ------ debug1: 1 debug1: 2 debug1: 3 debug1: 4 debug2: debug2: debug2: debug2: processor --------- "Saxon-HE 9.5.1.3J from Saxonica" running in "GNU bash, version 4.2.25(1)-release" on an Ubuntu system (12.04, I think).[1] Notes ----- [1] Linux albus 3.5.0-18-generic #29-Ubuntu SMP Thu Oct 25 07:26:14 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux -- Syd Bauman, EMT-Paramedic Senior XML Programmer/Analyst Northeastern University Women Writers Project s.bauman@xxxxxxx or Syd_Bauman@xxxxxxxxxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] TEI Hackathon at DH2015: Buil, James Cummings james | Thread | Re: [xsl] banging my head against t, G. Ken Holman g.ken. |
[xsl] TEI Hackathon at DH2015: Buil, James Cummings james | Date | Re: [xsl] banging my head against t, G. Ken Holman g.ken. |
Month |