[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Processing IDREFS attributes

Subject: Re: Processing IDREFS attributes
From: Dan Vint <dvint@xxxxxxxxx>
Date: Tue, 01 Nov 2005 14:03:36 -0800
Re:  Processing IDREFS attributes
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@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

--------------------------------------------------------------------------- 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.