thanks,
that was where I was going, but I'm surprised that a function was provided
to track down IDs but not one to pull apart IDREFS, or build that tokenize
functionality into the id() function itself.
I'm slowly building a list of reasons to move on to XLST 2, just lazy at
the moment I guess ;-)
..dan
At 01:46 PM 11/1/2005, you wrote:
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(_at_)dvint(_dot_)com>
11/01/2005 03:00 PM
Please respond to
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
---------------------------------------------------------------------------
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--