xsl-list
[Top] [All Lists]

Re: [xsl] processing multiple values in a single attribute

2009-05-15 18:37:25
 
 
Of course, having a tokenize function would be loads easier if it's 
Available to you... 
Its important to first figure out if xslt 2 is available to him to start
with :) 
-------Original Message------- 
 
From: Matthew L. Avizinis 
Date: 15/05/2009 23:29:50 
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
Subject: Re: [xsl] processing multiple values in a single attribute 
 
I would add that you should use <xsl:choose> and have two <xsl:when> tests: 
<xsl:choose> 
<xsl:when test="not($string = '') and contains($string,' ')"> 
<statemanipulation> 
<variableref name="{substring-before($string,' ')}"/> 
<fault fault-code="{substring-before($string,' ')}" 
Fault-state="ok"/> 
</statemanipulation> 
<xsl:call-template name="do-tokens"> 
<xsl:with-param name="string" select="substring-after($string,' ')"/> 
</xsl:call-template> 
</xsl:when> 
<xsl:when test="not($string = '')"> 
<statemanipulation> 
<variableref name="{$string}"/> 
<fault fault-code="{$string}" fault-state="ok"/> 
</statemanipulation> 
</xsl:when> 
</xsl:choose> 
In order to ensure it grabs the last value of the string. 
Of course, having a tokenize function would be loads easier if it's 
Available to you... 
Peace, 
Matthew Avizinis 
Gleim Publications, Inc. (www.gleim.com) 
 
G. Ken Holman wrote: 

<xsl:template match="FAULT-REF"> 
<xsl:call-template name="do-tokens"> 
<xsl:with-param name="string" 
select="concat(normalize-space(@FAULTS),' ')"/> 
</xsl:call-template> 
</xsl:template> 

<xsl:template name="do-tokens"> 
<xsl:param name="string"/> 
<xsl:if test="contains($string,' ')"> 
<statemanipulation> 
<variableref name="{substring-before($string,' ')}"/> 
<fault fault-code="{substring-before($string,' ')}" 
fault-state="ok"/> 
</statemanipulation> 
<xsl:call-template name="do-tokens"> 
<xsl:with-param name="string" select="substring-after($string,' 
')"/> 
</xsl:call-template> 
</xsl:if> 
</xsl:template> 

</xsl:stylesheet> 
T:\ftemp>call xslt o.XML o.xsl 
<?XML version="1.0" encoding="utf-8"?> 
<statemanipulation> 
<variableref name="PF01"/> 
<fault fault-code="PF01" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF02"/> 
<fault fault-code="PF02" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF03"/> 
<fault fault-code="PF03" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF04"/> 
<fault fault-code="PF04" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF05"/> 
<fault fault-code="PF05" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF06"/> 
<fault fault-code="PF06" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF07"/> 
<fault fault-code="PF07" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF08"/> 
<fault fault-code="PF08" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF09"/> 
<fault fault-code="PF09" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF10"/> 
<fault fault-code="PF10" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF11"/> 
<fault fault-code="PF11" fault-state="ok"/> 
</statemanipulation> 
T:\ftemp>type o2.xsl 
<?xml version="1.0" encoding="US-ASCII"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="2.0"> 

<xsl:output indent="yes"/> 

<xsl:template match="FAULT-REF"> 
<xsl:for-each select="tokenize(normalize-space(@FAULTS),' ')"> 
<statemanipulation> 
<variableref name="{.}"/> 
<fault fault-code="{.}" fault-state="ok"/> 
</statemanipulation> 
</xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 
T:\ftemp>call xslt2 o.xml o2.xsl 
<?xml version="1.0" encoding="UTF-8"?> 
<statemanipulation> 
<variableref name="PF01"/> 
<fault fault-code="PF01" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF02"/> 
<fault fault-code="PF02" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF03"/> 
<fault fault-code="PF03" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF04"/> 
<fault fault-code="PF04" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF05"/> 
<fault fault-code="PF05" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF06"/> 
<fault fault-code="PF06" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF07"/> 
<fault fault-code="PF07" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF08"/> 
<fault fault-code="PF08" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF09"/> 
<fault fault-code="PF09" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF10"/> 
<fault fault-code="PF10" fault-state="ok"/> 
</statemanipulation> 
<statemanipulation> 
<variableref name="PF11"/> 
<fault fault-code="PF11" fault-state="ok"/> 
</statemanipulation> 
T:\ftemp>rem Done! 



-- 
XSLT/XSL-FO/XQuery hands-on training - Los Angeles, USA 2009-06-08 
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ 
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video 
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18 
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18 
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com 
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc 
Legal business disclaimers: http://www.CraneSoftwrights.com/legal 


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

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