xsl-list
[Top] [All Lists]

Re: [xsl] Saxon command-line: How to assign a sequence of multiple strings to a global param

2018-11-06 04:33:37
On Mon, Nov 5, 2018 at 11:07 PM Jorge . 
chocolate(_dot_)camera(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Running Saxon from the command line (testing with Saxon-HE 9.2.1.2J—yes,
old as heck—on Bash 3.2.57(1)), is there a way to set the value of a global
parameter of an XSLT2 stylesheet to a sequence of strings?

  <xsl:param name="MY_ARRAY" as="xs:string*"/>

When attempting to do it like this:

  java  -jar saxon9he.jar [options] 'MY_ARRAY="one" "two" "three"'
  java  -jar saxon9he.jar [options] MY_ARRAY='"one" "two" "three"'

Saxon seemingly interprets spaces as literal, and the value of the
parameter becomes one single string

  <xsl:message select="count($MY_ARRAY)"/>
→ 1

instead of interpreting them as separators so that the value of the
parameter contains those three.


 This could be done as follows, I think.

Pass a parameter to stylesheet as follows,
MY_ARRAY="one;two;three"

(there's only one string parameter. but we use a delimiter between words.
in this example ; is a delimiter)

In the stylesheet, we declare as follows
<xsl:param name="MY_ARRAY" as="xs:string"/>

Then we need to use fn:tokenize on MY_ARRAY.

You may choose a convenient delimiter for your environment.


-- 
Regards,
Mukul Gandhi
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>