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

Re: [xslt] not working transformation when function c

Subject: Re: [xslt] not working transformation when function called
From: Michalmas <michalmas@xxxxxxxxx>
Date: Thu, 19 Mar 2009 22:40:29 +0100
Re:  [xslt] not working transformation when function  c
Hi all,

I see that in example i put all templates for copy on top. In fact, i
had different structure and the calling the template i wanted was
working. Also, the XML i used is only part of big XML structure, and
that part is repeated many times.

To clear it up:
i have following code:
<xsl:template match="*">

<xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>

</xsl:template>


<xsl:template match="move">
   <xsl:variable name="names" select=".//dataname" />
	<datatype><xsl:value-of select="local:getNodeType(/,$names)"/></datatype>
</xsl:template>


 <xsl:function name="local:getNodeType">
		   <xsl:param name="node" as="node()*"/>
		   <xsl:param name="searchValue" as="xs:string*"/>

       <xsl:choose>
           <xsl:when test="empty($searchValue)">
               <xsl:sequence select="$node/pic-value"/>
           </xsl:when>
           <xsl:otherwise>
               <xsl:sequence
select="local:getNodeType($node//data-declaration[name=$searchvalue[1]][1],
$searchValue[postion() != 1])"/>
           </xsl:otherwise>
       </xsl:choose>
 </xsl:function>

</xsl:stylesheet>


applied on that XML:
<someNodes>
(...)
     <move>
               <from>
                  <dataname>01</dataname>
                  <dataname>02</dataname>
               </from>
               <to>
                 <qualification>
                   <dataname>001</dataname>
                   <dataname>002</dataname>
                 </qualification>
               </to>
     </move>
(...)
</someNodes>


And i want to tranform it to:
<move>
              <from datatype='XXX'> <!-- VALUE RETURNED BY
local:getNodeType FUNTION -->
                 <dataname>01</dataname>
                 <dataname>02</dataname>
              </from>
              <to>
                <qualification datatype='ZZZ'> <!-- VALUE RETURNED BY
local:getNodeType FUNTION -->
                  <dataname>001</dataname>
                  <dataname>002</dataname>
                </qualification>
              </to>
 </move>


thanks!

On Thu, Mar 19, 2009 at 10:26 PM, Christopher R. Maden <crism@xxxxxxxxx>
wrote:
> Michalmas wrote:
>> But why this trigger:
>>
>> <xsl:template match="move/from">
>> B  <datatype><xsl:value-of select="local:getNodeType(/,
>> ./dataname)"/></datatype> <!--DATATYPE -->
>> </xsl:template>
>>
>> doesn't work?
>
> You should probably review some basic texts, just as Jeni Tennisonbs,
> Michael Kaybs, or Ken Holmanbs; there seems to be some confusion about
> the basic XSLT processing model.
>
> To elaborate on what David Carlisle said:
>
> You have a template that matches /, the document node. B It says to apply
> templates (to its children).
>
> The first child encountered is move. B There is no template that
> explicitly matches move; instead, the template matching * is used. B That
> template says to copy the element. B Thus, the entire move element is
copied.
>
> And... thatbs it. B There are no more children of /, so nothing else is
done.
>
> You probably want, as I suggested, to nuke the * template and allow the
> default template to apply, or else use the identity transformation
> (which is available in a thousand places with a quick Web search) as
> your starting point.
>
> ~Chris
> --
> Chris Maden, text nerd B <URL: http://crism.maden.org/ >
> bAll I ask of living is to have no chains on me,
> B And all I ask of dying is to go naturally.b b Laura Nyro
> GnuPG Fingerprint: C6E4 E2A9 C9F8 71AC 9724 CAA3 19F8 6677 0077 C319

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.