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

Re: How do I pass the mode as a string?

Subject: Re: How do I pass the mode as a string?
From: "David Farmer farmer@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 3 Mar 2020 15:46:16 -0000
Re:  How do I pass the mode as a string?
Maybe do it in Python with the "lxml" module?

On Tue, 3 Mar 2020, Kerry, Richard richard.kerry@xxxxxxxx wrote:

> Ok,
> Thanks all for the explanations.  I'll look at the alternatives.
> If this was C++, which is what I use most of the time (XSL is infrequent, just when I want to manipulate some XML) I would
> use some kind of polymorphism to achieve this.  I'd define a couple of one-line functions with the different variables, or
> calls, and pass the appropriate one to the outer function so they could be run on its results (somewhat garbled,
> abbreviated explanation, sorry).  I'm not aware of anything in XSL that looks like polymorphism, but I would be interested
> to know if there was a construct that might be similar, or usable for cases like this one.
> Granted I can't construct variable names dynamically, but I can have a number of variables existing simultaneously and
> select one and pass it around by address if I need to.  I don't see an analogous construct in XSL, except to use
> choose/when to select a line of code based on an actual variable.
> 
> I could send my examples if that would be best, but I think that would provide a lot of unnecessary code just to show a
> small bit of context.
> What I am actually trying to do is to get a number of XML files processed.  The files are in similar folders, called
> 'input' and 'output'.  The files' names follow a couple of name patterns, acq_(\d{4}) and out_(\d{4}). There is identical
> code to scan through the folders and identify the files I want to process (and extract the numbers from the filenames).
>  They are then passed to apply-templates with the different modes as mentioned.
> So the file scanning, while not especially complicated, is not entirely trivial and I'd like to have it written just once.
>  And then, because the contents of the files differs in structure, they are handled by different templates, with different
> modes.
> 
> 
> 
> 
> Blue line
> 
> Richard Kerry
> 
> BNCS Engineer, SI SOL Telco & Media Vertical Practice
> 
> M: +44 (0)7812 325518
> 
> 2nd Floor, MidCity Place, 71 High Holborn, London, WC1V 6EA
> 
> richard.kerry@xxxxxxxx
> 
> 
> 
>  
> 
> Atos logo
> 
> This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged.
> If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be
> secured on the Internet, the Atos group liability cannot be triggered for the message content. Although the sender
> endeavours to maintain a computer virus-free network, the sender does not warrant that this transmission is virus-free and
> will not be liable for any damages resulting from any virus transmitted.
> 
> 
> ___________________________________________________________________________________________________________________________
> From: Michael Kay mike@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: 03 March 2020 11:48
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Subject: Re:  How do I pass the mode as a string?  
> Section '6.6.2 in the XSLT 3.0 spec states:
> 
> The xsl:apply-templates element also has an optional mode attribute. The value of this attribute must be one of the
> following:
>
>  *  an EQName, which is expanded as described in 5.1.1 Qualified Names to define the name of a mode
>  *  the token #default, to indicate that the default mode for the stylesheet module is to be used
>  *  the token #unnamed, to indicate that the unnamed mode is to be used
>  *  the token #current, to indicate that the current mode is to be used
> It does not allow an expression, and it does not allow an attribute value template. 
> 
> It's similar to trying to refer to a variable by name: you can't construct variable names dynamically either, however much
> you feel it would make your life easier.
> 
> You haven't described your problem so it's difficult to suggest a different approach to solving it. Higher-order functions
> might be the right way.
> 
> Michael Kay
> Saxonica
> 
> XSL-List info and archive EasyUnsubscribe (by email)

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.