Subject: Re: [xsl] Processing IDREFS attributes From: Dan Vint <dvint@xxxxxxxxx> Date: Tue, 01 Nov 2005 14:03:36 -0800 |
Hi, Dan,
Assuming that "Location", "Party", and "Organization" are three different locations in your source file, you'll need either a recursive template (if you use XSLT 1.0) or the tokenize function (if you use XSLT 2.0).
If you do need a recursive template, it's a pretty simple one in this case:
<xsl:template name="process-ids"> <xsl:param name="in-string"/> <xsl:choose> <xsl:when test="contains($in-string, ' ')"> <!-- process an id here; substring-before($in-string, ' ') gets the id string to process--> <xsl:call-template name="process-ids"> <xsl:with-param name="in-string" select="substring-after($in-string, ' ')"/> <xsl:call-template> </xsl:when> <xsl:otherwise> <!-- process the last id here --> <xsl:otherwise> </xsl:choose> </xsl:template>
You'd call it with
<xsl:call-template name="process-ids"> <xsl:with-param name="in-string" select="@parameters"/> </xsl:call-template>
The XSLT 2.0 tokenize function is much less verbose:
<xsl:for-each select="tokenize(@references, ' ')"> <!-- process each id here; . gets the id string --> </xsl:for-each>
That's one of the reasons I like XSLT 2.0.
Jay Bryant Bryant Communication Services (presently consulting at Synergistic Solution Technologies)
Dan Vint <dvint@xxxxxxxxx> 11/01/2005 03:00 PM Please respond to xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To xsl-list@xxxxxxxxxxxxxxxxxxxxxx cc
Subject [xsl] Processing IDREFS attributes
I've got a few places where I have an attribute of type IDREFS and a sequence of ID values like references="Location Party Organization". I had
thought a simple for-each loop would pull these apart with the id() function, in something like this:
<xsl:for-each select="id(@references)"> <xsl:value-of select="."/> </xsl:for-each>
But it doesn't work. What I get is the content of @references with the above.
The only other solution I have thought about is creating a template and recursively pulling apart the string. This should work, but I would think there is a simpler way to make this work. Is there a solution I missed?
..dan --------------------------------------------------------------------------- Danny Vint
Specializing in Panoramic Images of California and the West http://www.dvint.com
voice: 510-522-4703
When H.H. Bennett was asked why he preferred to be out shooting landscapes rather than spending time in his portrait studio:
"It is easier to pose nature and less trouble to please."
http://www.portalwisconsin.org/bennett_feature.cfm
--------------------------------------------------------------------------- Danny Vint
Specializing in Panoramic Images of California and the West http://www.dvint.com
When H.H. Bennett was asked why he preferred to be out shooting landscapes rather than spending time in his portrait studio:
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Processing IDREFS attribu, JBryant | Thread | Re: [xsl] Processing IDREFS attribu, David Carlisle |
Re: [xsl] Default namespace in XML , drkm | Date | [xsl] Recursive substitution, Agnisys |
Month |