xsl-list
[Top] [All Lists]

Re: [xsl] Identifying unique attribute values in nested sibling elements

2011-09-29 13:37:25
Hi Ken and Martin,
Apparently in my attempt to simplify this problem when I asked for help earlier, I did not do what Einstein recommended: "Make everything just simple enough, but not too simple." However, I was able to adapt Martin's code to acquire the information I needed, but now could use a bit more help parsing it. This time, I'll give you all the facts.

In my modification, I write to the variable "$value" that contains all of the values related to the sequence of se-tenant <Values> currently of interest. My problem now is that I do not know how to use tokenize() or write regex expressions, if that is the correct method, so that I can output the needed XHTML.

My modification of Martin's code:

<xsl:variable name="values">
      <xsl:for-each-group select="../Stamp" group-by="Formats/@se-tenant">
<xsl:for-each-group select="current-group()" group-by="string-join(Value/@*, '.')">
                <xsl:value-of select="current-grouping-key()"/>
<xsl:value-of select="Value/@*/concat('=', local-name(), ';')"/>
         </xsl:for-each-group>
       </xsl:for-each-group>
</xsl:variable>

The variable will contain strings similar to this one that I actually extracted from the working code:
"3.60=kc-value; =h-value;5=kc-value;6=kc-value;8=kc-value;"

This string is exactly what I wanted earlier and was unable to describe acurately.

My problem: I now need to tokenize these strings (or break them into usable substrings) so that I can produce the output XHTML . I only need to pay attention to the digits on the left of '=' and the unit-name (kc-value, h-value) on its right. The substring (token) separator is ';'

"3.60=kc-value;" is transformed to: <a "href="../aval/3-60.htm">3.60kc</a>
" =h-value;" has no digits in front of the '=' and thus must be ignored (the needed information was actually absorbed by the previous token)
"5=kc-value;"     is transformed to:  <a href="../aval/5.htm">5kc</a>
"6=kc-value;"    is transformed to:  <a href="../aval/6.htm">6kc</a>
"8=kc-value;"   is transformed to: <a href="../aval/8.htm">8kc</a>

Can you show me how to do this?
Thanks,
Mark


-----Original Message----- From: Martin Honnen
Sent: Thursday, September 29, 2011 6:00 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Identifying unique attribute values in nested sibling elements

Mark wrote:

Also, in your statement: <xsl:for-each-group select="current-group()"
select="string-join(Value/@*, '|'">, I assumed the second "select" was a
typo for "group-by". Is that assumption correct?

Yes, sorry about that mistake.

The string-join assembles the values of all attributes into one string
to have some key value for grouping the items.

--

Martin Honnen --- MVP Data Platform Development
http://msmvps.com/blogs/martin_honnen/

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