Thank you very much for your reply, David.
As you guessed, input string can have any number of ; and # => any
number of ; and # and you want to delete any text between adjacent #
and ; (as the title of the thread implies
To further clarify: aaa#bbbb;ccc#dd;
1. ';' marks the end of each set : eg: set 1 : aaa#bbbb Set 2 : ccc#dd;
2. Each set has '#' as the demarcation : for eg: token 1 : aaa and token
2 : bbbb
Thank you for your help again!
On Thu, 14 Oct 2021 at 06:24, David Carlisle
d(_dot_)p(_dot_)carlisle(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
On Thu, 14 Oct 2021 at 11:05, Prady Prady
prady(_dot_)chin(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Thank you for the response, Michael!
But Oracle BPEL 2.0 does not support XSLT 3.0. It only supports XSLT 1.0
It would help if you clarified your question as your expected result
doesn't match the transformation you ask for.
Is the input always of the form
aaa#bbbb;ccc#ddd
with one ; and two # (as in the example you show) or can you have any
number of ; and # and you want to delete any text between adjacent #
and ; (as the title of the thread implies)?
Especially with xslt1 which has no regex replace doing the first which
doesn't require any searching and looping is significantly simpler,
basically
<xsl:value-of select="substring-before(.,'#')"/>
<xsl:text>;</xsl:text>
<xsl:value-of select="substring-before(substring-after(.,';'),'#')"/>
will produce aaa;ccc if . is the string above.
David
David
Any help using XSLT 1.0 is greatly appreciated
On Wed, 13 Oct 2021 at 13:43, Michael Müller-Hillebrand
mmh(_at_)docufy(_dot_)de <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi Prady,
Assuming you meant "string split by ;" I came up with this template
doing the work:
<xsl:template match="Ip">
<xsl:variable name="entries" select="tokenize(text(), '\s*;\s*')"
as="xs:string*"/>
<xsl:element name="nums" namespace="http://xmlns.ieee.org/V2">
<xsl:value-of select="($entries ! substring-before(., '#')) =>
string-join(';')" />
</xsl:element>
</xsl:template>
It uses XSLT 3 features, because they are so great, and – frankly – I
am not motivated to do this using XSLT1. This will most probably involve a
recursive template using substring-before and substring-after.
- Michael
Am 13.10.2021 um 17:32 schrieb Prady Prady
prady(_dot_)chin(_at_)gmail(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>:
Team,
Can somebody help me to replace string that is in between # and ; with
blank. I need to include this is oracle bpel which only supports xslt 1.0
From:
<IpsCollection xmlns="http://xmlns.oracle.com/aa">
<Ips>
<Ip>q1#11.11.11.111;q2#22.22.22.22</Ip>
</Ips>
</IpsCollection>
To:
<v2:Ops xmlns:v2="http://xmlns.ieee.org/V2">
<v2:nums>q1;q2</v2:nums>
</v2:Ops>
Thank you very much for your help!
XSL-List info and archive
EasyUnsubscribe (by email)
XSL-List info and archive
EasyUnsubscribe (by email)
--~----------------------------------------------------------------
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
--~--