[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Re: help with xslt
Sam Steingold wrote:
> > concat('sec_', translate(substring-before(substring-after(
> > '#(11 1 2 1 2)', '#('), ')'), ' ', '-'))
> cool - this takes care of the old version (sec_11-1-2-1-2).
> how about 11_abab?
concat(
substring-after(
substring-before('#(11 1 2 1 2)', ' '),
'#('),
'_',
translate(
substring-before(
substring-after('#(11 1 2 1 2)', ' '),
')'),
'123456789 ',
'abcdefghi'))
You can see both in the following XQuery, for what is worth:
let $in := '#(11 1 2 1 2)'
let $nums := substring-before(substring-after($in, '#('), ')')
let $old := concat('sec_', translate($nums, ' ', '-'))
let $letters := translate(substring-after($nums, ' '),
'123456789 ', 'abcdefghi')
let $new := concat(substring-before($nums, ' '), '_', $letters)
return
<res>
<old>{ $old }</old>
<new>{ $new }</new>
</res>
==>
<?xml version="1.0" encoding="UTF-8"?>
<res>
<old>sec_11-1-2-1-2</old>
<new>11_abab</new>
</res>
This works only if you have digits from 1 to 9. If you can
have 10+, I think you would parse $nums to integers then map
integers to letters. And definitively write a function to
encapsulate and document the funtionality.
Regards,
--drkm
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]