[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Processing IDREFS attributes
Subject: Re: [xsl] Processing IDREFS attributes From: JBryant@xxxxxxxxx Date: Tue, 1 Nov 2005 15:46:10 -0600 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Processing IDREFS attributes, Dan Vint | Thread | Re: [xsl] Processing IDREFS attribu, Dan Vint |
Re: [xsl] Default namespace in XML , Jon Gorman | Date | Re: [xsl] Default namespace in XML , drkm |
Month |
Keywords