Subject: Re: [xsl] 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 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How do I pass the mode as, Kerry, Richard richa | Thread | Re: [xsl] How do I pass the mode as, Kerry, Richard richa |
Re: [xsl] How do I pass the mode as, Kerry, Richard richa | Date | Re: [xsl] How do I pass the mode as, BR Chrisman brchrism |
Month |