Re: Processing IDREFS attributes
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 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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format