Re: Transform selected attribute to element when element already has a value | XSLT 2.0

"Sam Spade [email protected]" <[email protected]> Sat, 22 May 2021 18:51:11 -0000
Newsgroups gmane.text.xml.xsl.general.mulberrytech
Message-ID <[email protected]>
------=_Part_641622_371826289.1621709432582
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

 Thanks!=C2=A0 I tried a similar approach before.=20

Input:
<requestConfirmation xmlns=3D"http://example/confirmation">
=C2=A0=C2=A0=C2=A0 <trade>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <cal>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <c>PRECE=
DING</c>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <bcs id=
=3D"businessCenters">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <bc>USNY</bc>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 <bc>GBLO</bc>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </bcs>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </cal> =C2=A0
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <amount>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <currenc=
y id=3D"settlementCurrency" currencyScheme=3D"http://example/iso4">USD</cur=
rency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <referen=
ceAmount>StandardISDA</referenceAmount>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <cashSet=
tlement>true</cashSettlement>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </amount>
=C2=A0=C2=A0=C2=A0 </trade>
</requestConfirmation>
As you can see,=C2=A0 the unwanted attribute currencyScheme still persists.=
 Is there a way to remove the attribute which is not in the $keepAttr list?=
=20

Output:
<requestProduct xmlns=3D"http://fc.fasset/product">
=C2=A0=C2=A0 <trade>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <cal>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <c>PRECEDING</c>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <bcs>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <id>busi=
nessCenters</id>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <bc>USNY=
</bc>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <bc>GBLO=
</bc>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </bcs>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </cal>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <amount>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <currency>USD</currency>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <id>settlementCurrency</id=
>http://example/iso4<referenceAmount>StandardISDA</referenceAmount>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <cashSettlement>true</cash=
Settlement>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </amount>
=C2=A0=C2=A0 </trade>
</requestProduct>



    On Saturday, May 22, 2021, 1:12:39 a.m. MST, Martin Honnen martin.honne=
[email protected] <[email protected]> wrote:
Am 22.05.2021 um 02:02 schrieb Sam Spade [email protected]:
=20=20
=20
=20=20=20
2.=C2=A0=C2=A0=C2=A0=C2=A0 As I point out in the post,=20
=20=20=20
=C2=A0
=20
https://stackoverflow.com/questions/67575484/what-attribute-node-cannot-fol=
low-non-attribute-node-in-element-content-tells
=20
=C2=A0
=20
it is not only very difficult to search value if an element (<currency>) co=
ntains both element (<id>) and text value (USD) but also returns false resu=
lt.
=20
=C2=A0
=20
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 <amount>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <currency>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <id>settlementCurrency</id=
>USD</currency>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <referenceAmount>StandardISDA</referenceAmou=
nt>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <cashSettlement>true</cashSettlement>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 </amount>
=20
=C2=A0
=20
That USD really is the value of <currency>. In this case, it is legitimate =
and sensible to transform id as sibling element of its original element <cu=
rrency> (its parent is still <amount>) to:
=20
=C2=A0
=20
<amount>
 =C2=A0=C2=A0=C2=A0 <currency>USD</currency>
 =C2=A0=C2=A0=C2=A0 <id>settlementCurrency</id>
 =C2=A0=C2=A0=C2=A0 <referenceAmount>StandardISDA</referenceAmount>
 =C2=A0=C2=A0=C2=A0 <cashSettlement>true</cashSettlement>
 </amount>
=20
  The flattened XML is very searchable (an index on 'currency' is good enou=
gh) and can be transformed to JSON.

=20
=20
I am not sure an XSLT program can easily capture your rules but for the giv=
en sample, if you insert a check on elements whether they both have attribu=
tes and non-whitespace text content and in that case transform any attribut=
es to sibling following the element, the result is as you wanted:
=20

=20
=20
<xsl:stylesheet xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform"
 =C2=A0 version=3D"3.0"
 =C2=A0 xmlns:xs=3D"http://www.w3.org/2001/XMLSchema"
 =C2=A0 exclude-result-prefixes=3D"#all">
 =C2=A0=20
 =C2=A0 <xsl:param name=3D"namespace" as=3D"xs:string">http://fc.fasset/pro=
duct</xsl:param>
=20
 =C2=A0 <xsl:param name=3D"root" as=3D"xs:string">requestProduct</xsl:param>
 =C2=A0 <xsl:param name=3D"keepAttr" static=3D"yes" as=3D"xs:string*" selec=
t=3D"'href', 'id'"/>
 =C2=A0=20
 =C2=A0 <xsl:strip-space elements=3D"*"/>
 =C2=A0 <xsl:output indent=3D"yes"/>
 =C2=A0=20
 =C2=A0 <xsl:template match=3D"/*">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:element name=3D"{$root}" namespace=3D"=
{$namespace}">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:apply-template=
s select=3D"@* , node()"/>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </xsl:element>
 =C2=A0 </xsl:template>
 =C2=A0=20
 =C2=A0 <xsl:template match=3D"*">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:element name=3D"{local-name()}" namesp=
ace=3D"{$namespace}">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:apply-template=
s select=3D"@* , node()"/>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </xsl:element>
 =C2=A0 </xsl:template>
 =C2=A0=20
 =C2=A0 <xsl:template match=3D"*[@* and text()[normalize-space()]]">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:element name=3D"{local-name()}" namesp=
ace=3D"{$namespace}">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:apply-template=
s/>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </xsl:element>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:apply-templates select=3D"@*"/>
 =C2=A0 </xsl:template>
 =C2=A0=20
 =C2=A0 <xsl:template match=3D"@*[local-name() =3D $keepAttr]">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:element name=3D"{local-name()}" namesp=
ace=3D"{$namespace}">
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <xsl:value-of select=3D"."/>
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </xsl:element>
 =C2=A0 </xsl:template>
=20
 </xsl:stylesheet>
=20

=20
 XSL-List info and archiveEasyUnsubscribe(by email)=20=20
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/3329386
or by email: [email protected]
--~--

------=_Part_641622_371826289.1621709432582
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div class=3D"ydpf4050e41yahoo-style-wrap" style=
=3D"font-family: bookman old style, new york, times, serif; font-size: 13px=
;"><div></div>
        <div dir=3D"ltr" data-setdir=3D"false"><font size=3D"3" face=3D"Hel=
vetica Neue, Helvetica, Arial, sans-serif">Thanks!&nbsp; I tried a similar =
approach before. <br></font></div><div dir=3D"ltr" data-setdir=3D"false"><f=
ont size=3D"3" face=3D"bookman old style, new york, times, serif"><br></fon=
t></div><div dir=3D"ltr" data-setdir=3D"false"><font size=3D"3" face=3D"boo=
kman old style, new york, times, serif">Input:</font></div><div dir=3D"ltr"=
 data-setdir=3D"false"><font size=3D"3" face=3D"Helvetica Neue, Helvetica, =
Arial, sans-serif"><br></font></div><div dir=3D"ltr" data-setdir=3D"false">=
<font size=3D"2" face=3D"courier new, courier, monaco, monospace, sans-seri=
f" color=3D"#4c76a2"><div>&lt;requestConfirmation xmlns=3D"http://example/c=
onfirmation"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;trade&gt;<br>&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; &lt;cal&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c&gt;PRECEDING&lt;/c&gt;<br>&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bcs id=3D"busine=
ssCenters"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bc&gt;USNY&lt;/bc&gt;<br>&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &lt;bc&gt;GBLO&lt;/bc&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bcs&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp; &lt;/cal&gt; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&lt;amount&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; &lt;currency <font color=3D"#a46016"><b>id=3D"settlementCurrency"=
 currencyScheme=3D"http://example/iso4"</b></font>&gt;USD&lt;/currency&gt;<=
br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r=
eferenceAmount&gt;StandardISDA&lt;/referenceAmount&gt;<br>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cashSettlement&gt;tru=
e&lt;/cashSettlement&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;=
/amount&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/trade&gt;<br>&lt;/requestConfirmatio=
n&gt;</div></font><div><br></div></div><div dir=3D"ltr" data-setdir=3D"fals=
e"><span><font style=3D"background-color: inherit;" size=3D"3" face=3D"Helv=
etica Neue, Helvetica, Arial, sans-serif">As you can see,&nbsp; the unwante=
d attribute <span><font style=3D"background-color: inherit;" size=3D"2" fac=
e=3D"courier new, courier, monaco, monospace, sans-serif" color=3D"#4c76a2"=
><font color=3D"#a46016"><b>currencyScheme</b></font></font></span> still p=
ersists. Is there a way to remove the attribute which is not in the <font f=
ace=3D"courier new, courier, monaco, monospace, sans-serif">$</font><span><=
font style=3D"background-color: inherit;" face=3D"courier new, courier, mon=
aco, monospace, sans-serif">keepAttr</font> list? </span><br></font></span>=
</div><div dir=3D"ltr" data-setdir=3D"false"><br><span></span></div><div di=
r=3D"ltr" data-setdir=3D"false"><font size=3D"3">Output:</font></div><div d=
ir=3D"ltr" data-setdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"=
false"><div>&lt;requestProduct xmlns=3D"http://fc.fasset/product"&gt;<br>&n=
bsp;&nbsp; &lt;trade&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cal&gt;<br>&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c&gt;PRECEDING&lt;/c&gt=
;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bcs&gt;<br>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id&gt;busi=
nessCenters&lt;/id&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp; &lt;bc&gt;USNY&lt;/bc&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bc&gt;GBLO&lt;/bc&gt;<br>&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bcs&gt;<br>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; &lt;/cal&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;amount&gt;=
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;currency&gt;USD&lt=
;/currency&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><font=
 color=3D"#cd232c">&lt;id&gt;settlementCurrency&lt;/id&gt;http://example/is=
o4</font></b>&lt;referenceAmount&gt;StandardISDA&lt;/referenceAmount&gt;<br=
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cashSettlement&gt;tru=
e&lt;/cashSettlement&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/amount&gt;<=
br>&nbsp;&nbsp; &lt;/trade&gt;<br><div>&lt;/requestProduct&gt;</div><div><b=
r></div></div><div><br></div><div><br></div></div><div><br></div>
=20=20=20=20=20=20=20=20
        </div><div id=3D"ydpe658c544yahoo_quoted_2368908829" class=3D"ydpe6=
58c544yahoo_quoted">
            <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
                <div>
                    On Saturday, May 22, 2021, 1:12:39 a.m. MST, Martin Hon=
nen [email protected] &lt;[email protected]&gt; wr=
ote:</div><div><br></div><div><div id=3D"ydpe658c544yiv6651078795"><div><di=
v class=3D"ydpe658c544yiv6651078795moz-cite-prefix">Am 22.05.2021 um 02:02 =
schrieb Sam
      Spade <a shape=3D"rect" class=3D"ydpe658c544yiv6651078795moz-txt-link=
-abbreviated" href=3D"mailto:[email protected]" rel=3D"nofollow" targ=
et=3D"_blank">[email protected]</a>:<br clear=3D"none">
    </div>
    <blockquote type=3D"cite">
      </blockquote></div><div><div class=3D"ydpe658c544yiv6651078795ydpfce7=
5138yahoo-style-wrap" style=3D"font-family:bookman old style, new york, tim=
es, serif;font-size:13px;">
        <div dir=3D"ltr">
          <div>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoListParagraph" style=3D"margin:0in 0in 0in 0.5in;line-height:nor=
mal;background-color:white;background-repeat:repeat;background-attachment:s=
croll;background-image:none;background-size:auto;"><font size=3D"3" face=3D=
"Helvetica Neue, Helvetica, Arial,                 sans-serif"><span><span>=
2.<span style=3D"font-style:normal;font-weight:normal;font-stretch:normal;f=
ont-size:7pt;line-height:normal;font-size-adjust:none;">&nbsp;&nbsp;&nbsp;&=
nbsp;
                    </span></span></span><span style=3D"color:black;">As I
                  point out in the post, </span></font></p>
            <font size=3D"3" face=3D"Helvetica Neue, Helvetica, Arial,     =
          sans-serif">
            </font>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in 0in 0in 0.25in;line-height:normal;ba=
ckground-color:white;background-repeat:repeat;background-attachment:scroll;=
background-image:none;background-size:auto;"><font size=3D"3" face=3D"Helve=
tica Neue, Helvetica, Arial,                 sans-serif">&nbsp;</font></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in 0in 0in 0.25in;line-height:normal;ba=
ckground-color:white;background-repeat:repeat;background-attachment:scroll;=
background-image:none;background-size:auto;"><span style=3D"color:black;"><=
a shape=3D"rect" href=3D"https://stackoverflow.com/questions/67575484/what-=
attribute-node-cannot-follow-non-attribute-node-in-element-content-tells" r=
el=3D"nofollow" target=3D"_blank">https://stackoverflow.com/questions/67575=
484/what-attribute-node-cannot-follow-non-attribute-node-in-element-content=
-tells</a></span></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in 0in 0in 0.25in;line-height:normal;ba=
ckground-color:white;background-repeat:repeat;background-attachment:scroll;=
background-image:none;background-size:auto;">&nbsp;</p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;"><font size=3D"3" face=3D"Helvetica Neue, Helv=
etica, Arial,                 sans-serif"><span style=3D"color:black;">it i=
s not only
                  very difficult to search value if an
                  element (</span></font><span style=3D"font-size:12pt;font=
-family:Times New Roman, serif;color:rgb(0, 0, 150);background-color:white;=
background-repeat:repeat;background-attachment:scroll;background-image:none=
;background-size:auto;">&lt;currency&gt;</span><span style=3D"font-size:12.=
0pt;font-family:Times New Roman, serif;color:#000096;">) </span><span style=
=3D"color:black;"><font style=3D"background-color:inherit;" size=3D"3" face=
=3D"Helvetica Neue, Helvetica, Arial, sans-serif">contains
                  both element </font>(</span><span style=3D"font-size:12pt=
;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background-color:w=
hite;background-repeat:repeat;background-attachment:scroll;background-image=
:none;background-size:auto;">&lt;id&gt;</span><span style=3D"font-size:12.0=
pt;font-family:Times New Roman, serif;color:#000096;">) </span><font size=
=3D"3" face=3D"Helvetica Neue, Helvetica, Arial, sans-serif"><span style=3D=
"color:black;">and text value</span></font><span style=3D"font-size:12.0pt;=
font-family:Times New Roman, serif;color:#000096;">
                (USD) </span><font size=3D"3" face=3D"Helvetica Neue,      =
           Helvetica, Arial, sans-serif"><span style=3D"color:black;">but
                  also
                  returns false result.</span></font></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;">&nbsp;</p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;"><span style=3D"font-size:12pt;font-family:Tim=
es New Roman, serif;color:black;background-color:white;background-repeat:re=
peat;background-attachment:scroll;background-image:none;background-size:aut=
o;"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;
                </span></span><span style=3D"font-size:12pt;font-family:Tim=
es New Roman, serif;color:rgb(0, 0, 150);background-color:white;background-=
repeat:repeat;background-attachment:scroll;background-image:none;background=
-size:auto;">&lt;amount&gt;</span><span style=3D"font-size:12pt;font-family=
:Times New Roman, serif;color:black;background-color:white;background-repea=
t:repeat;background-attachment:scroll;background-image:none;background-size=
:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style=
=3D"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);=
background-color:white;background-repeat:repeat;background-attachment:scrol=
l;background-image:none;background-size:auto;">&lt;currency&gt;</span><span=
 style=3D"font-size:12pt;font-family:Times New Roman, serif;color:black;bac=
kground-color:white;background-repeat:repeat;background-attachment:scroll;b=
ackground-image:none;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=
</span><span style=3D"font-size:12pt;font-family:Times New Roman, serif;col=
or:rgb(0, 0, 150);background-color:white;background-repeat:repeat;backgroun=
d-attachment:scroll;background-image:none;background-size:auto;">&lt;id&gt;=
</span><span style=3D"font-size:12pt;font-family:Times New Roman, serif;col=
or:black;background-color:white;background-repeat:repeat;background-attachm=
ent:scroll;background-image:none;background-size:auto;">settlementCurrency<=
/span><span style=3D"font-size:12pt;font-family:Times New Roman, serif;colo=
r:rgb(0, 0, 150);background-color:white;background-repeat:repeat;background=
-attachment:scroll;background-image:none;background-size:auto;">&lt;/id&gt;=
</span><span style=3D"font-size:12pt;font-family:Times New Roman, serif;col=
or:black;background-color:white;background-repeat:repeat;background-attachm=
ent:scroll;background-image:none;background-size:auto;">USD</span><span sty=
le=3D"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150=
);background-color:white;background-repeat:repeat;background-attachment:scr=
oll;background-image:none;background-size:auto;">&lt;/currency&gt;</span><s=
pan style=3D"font-size:12pt;font-family:Times New Roman, serif;color:black;=
background-color:white;background-repeat:repeat;background-attachment:scrol=
l;background-image:none;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style=
=3D"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);=
background-color:white;background-repeat:repeat;background-attachment:scrol=
l;background-image:none;background-size:auto;">&lt;referenceAmount&gt;</spa=
n><span style=3D"font-size:12pt;font-family:Times New Roman, serif;color:bl=
ack;background-color:white;background-repeat:repeat;background-attachment:s=
croll;background-image:none;background-size:auto;">StandardISDA</span><span=
 style=3D"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0,=
 150);background-color:white;background-repeat:repeat;background-attachment=
:scroll;background-image:none;background-size:auto;">&lt;/referenceAmount&g=
t;</span><span style=3D"font-size:12pt;font-family:Times New Roman, serif;c=
olor:black;background-color:white;background-repeat:repeat;background-attac=
hment:scroll;background-image:none;background-size:auto;"><br clear=3D"none=
">
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style=
=3D"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);=
background-color:white;background-repeat:repeat;background-attachment:scrol=
l;background-image:none;background-size:auto;">&lt;cashSettlement&gt;</span=
><span style=3D"font-size:12pt;font-family:Times New Roman, serif;color:bla=
ck;background-color:white;background-repeat:repeat;background-attachment:sc=
roll;background-image:none;background-size:auto;">true</span><span style=3D=
"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);bac=
kground-color:white;background-repeat:repeat;background-attachment:scroll;b=
ackground-image:none;background-size:auto;">&lt;/cashSettlement&gt;</span><=
span style=3D"font-size:12pt;font-family:Times New Roman, serif;color:black=
;background-color:white;background-repeat:repeat;background-attachment:scro=
ll;background-image:none;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style=3D"font-size:12pt=
;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background-color:w=
hite;background-repeat:repeat;background-attachment:scroll;background-image=
:none;background-size:auto;">&lt;/amount&gt;</span><span style=3D"font-size=
:12pt;font-family:Times New Roman, serif;background-color:white;background-=
repeat:repeat;background-attachment:scroll;background-image:none;background=
-size:auto;"></span></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;">&nbsp;</p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;"><font size=3D"3" face=3D"Helvetica Neue, Helv=
etica, Arial,                 sans-serif"><span style=3D"color:black;">That=
 </span><span style=3D"font-size:12pt;color:black;background-color:white;ba=
ckground-repeat:repeat;background-attachment:scroll;background-image:none;b=
ackground-size:auto;">USD</span><span style=3D"font-size:12pt;color:black;"=
> </span><span style=3D"color:black;">really is the value of</span></font><=
span style=3D"font-size:12.0pt;font-family:Times New Roman, serif;color:bla=
ck;"> </span><span style=3D"font-size:12pt;font-family:Times New Roman, ser=
if;color:rgb(0, 0, 150);background-color:white;background-repeat:repeat;bac=
kground-attachment:scroll;background-image:none;background-size:auto;">&lt;=
currency&gt;</span><span style=3D"font-size:12.0pt;font-family:Times New Ro=
man, serif;color:#000096;">.<font style=3D"background-color:inherit;" size=
=3D"3" face=3D"Helvetica Neue, Helvetica, Arial, sans-serif"> </font></span=
><font size=3D"3" face=3D"Helvetica Neue, Helvetica, Arial,                =
 sans-serif"><span style=3D"color:black;">In this case, it
                  is legitimate and
                  sensible to transform </span></font><span style=3D"font-s=
ize:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background=
-color:white;background-repeat:repeat;background-attachment:scroll;backgrou=
nd-image:none;background-size:auto;">id</span><span style=3D"color:black;">=
 <font style=3D"background-color:inherit;" size=3D"3" face=3D"Helvetica Neu=
e, Helvetica, Arial, sans-serif">as
                  sibling element of its original
                  element</font> </span><span style=3D"font-size:12pt;font-=
family:Times New Roman, serif;color:rgb(0, 0, 150);background-color:white;b=
ackground-repeat:repeat;background-attachment:scroll;background-image:none;=
background-size:auto;">&lt;currency&gt;</span><span style=3D"color:black;">=
 (<font style=3D"background-color:inherit;" size=3D"3" face=3D"Helvetica Ne=
ue, Helvetica, Arial, sans-serif">its
                  parent is still</font> </span><span style=3D"font-size:12=
pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background-color=
:white;background-repeat:repeat;background-attachment:scroll;background-ima=
ge:none;background-size:auto;">&lt;amount&gt;</span><span style=3D"color:bl=
ack;">) <font style=3D"background-color:inherit;" size=3D"3" face=3D"Helvet=
ica Neue, Helvetica, Arial, sans-serif">to:</font></span></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;"><span style=3D"font-size:12.0pt;font-family:T=
imes New Roman, serif;color:#000096;">&nbsp;</span></p>
            <p class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214ydp=
a3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-color:=
white;background-repeat:repeat;background-attachment:scroll;background-imag=
e:none;background-size:auto;"><span style=3D"font-size:12pt;font-family:Tim=
es New Roman, serif;color:rgb(0, 0, 150);background-color:white;background-=
repeat:repeat;background-attachment:scroll;background-image:none;background=
-size:auto;">&lt;amount&gt;</span><span style=3D"font-size:12pt;font-family=
:Times New Roman, serif;color:black;background-color:white;background-repea=
t:repeat;background-attachment:scroll;background-image:none;background-size=
:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp; </span></span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);backgroun=
d-color:white;background-repeat:repeat;background-attachment:scroll;backgro=
und-image:none;background-size:auto;">&lt;currency&gt;</span><span style=3D=
"font-size:12pt;font-family:Times New Roman, serif;color:black;background-c=
olor:white;background-repeat:repeat;background-attachment:scroll;background=
-image:none;background-size:auto;">USD</span><span style=3D"font-size:12pt;=
font-family:Times New Roman, serif;color:rgb(0, 0, 150);background-color:wh=
ite;background-repeat:repeat;background-attachment:scroll;background-image:=
none;background-size:auto;">&lt;/currency&gt;</span><span style=3D"font-siz=
e:12pt;font-family:Times New Roman, serif;color:black;background-color:whit=
e;background-repeat:repeat;background-attachment:scroll;background-image:no=
ne;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp; </span></span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);backgroun=
d-color:white;background-repeat:repeat;background-attachment:scroll;backgro=
und-image:none;background-size:auto;">&lt;id&gt;</span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:black;background-color:w=
hite;background-repeat:repeat;background-attachment:scroll;background-image=
:none;background-size:auto;">settlementCurrency</span><span style=3D"font-s=
ize:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background=
-color:white;background-repeat:repeat;background-attachment:scroll;backgrou=
nd-image:none;background-size:auto;">&lt;/id&gt;</span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:black;background-color:w=
hite;background-repeat:repeat;background-attachment:scroll;background-image=
:none;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp; </span></span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);backgroun=
d-color:white;background-repeat:repeat;background-attachment:scroll;backgro=
und-image:none;background-size:auto;">&lt;referenceAmount&gt;</span><span s=
tyle=3D"font-size:12pt;font-family:Times New Roman, serif;color:black;backg=
round-color:white;background-repeat:repeat;background-attachment:scroll;bac=
kground-image:none;background-size:auto;">StandardISDA</span><span style=3D=
"font-size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);bac=
kground-color:white;background-repeat:repeat;background-attachment:scroll;b=
ackground-image:none;background-size:auto;">&lt;/referenceAmount&gt;</span>=
<span style=3D"font-size:12pt;font-family:Times New Roman, serif;color:blac=
k;background-color:white;background-repeat:repeat;background-attachment:scr=
oll;background-image:none;background-size:auto;"><br clear=3D"none">
                <span>&nbsp;&nbsp;&nbsp; </span></span><span style=3D"font-=
size:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);backgroun=
d-color:white;background-repeat:repeat;background-attachment:scroll;backgro=
und-image:none;background-size:auto;">&lt;cashSettlement&gt;</span><span st=
yle=3D"font-size:12pt;font-family:Times New Roman, serif;color:black;backgr=
ound-color:white;background-repeat:repeat;background-attachment:scroll;back=
ground-image:none;background-size:auto;">true</span><span style=3D"font-siz=
e:12pt;font-family:Times New Roman, serif;color:rgb(0, 0, 150);background-c=
olor:white;background-repeat:repeat;background-attachment:scroll;background=
-image:none;background-size:auto;">&lt;/cashSettlement&gt;</span><span styl=
e=3D"font-size:12pt;font-family:Times New Roman, serif;color:black;backgrou=
nd-color:white;background-repeat:repeat;background-attachment:scroll;backgr=
ound-image:none;background-size:auto;"><br clear=3D"none">
              </span><span style=3D"font-size:12pt;font-family:Times New Ro=
man, serif;color:rgb(0, 0, 150);background-color:white;background-repeat:re=
peat;background-attachment:scroll;background-image:none;background-size:aut=
o;">&lt;/amount&gt;</span><span style=3D"font-size:12pt;font-family:Times N=
ew Roman, serif;background-color:white;background-repeat:repeat;background-=
attachment:scroll;background-image:none;background-size:auto;"></span></p>
            <div class=3D"ydpe658c544yiv6651078795ydp735fa017yiv9501170214y=
dpa3d97190MsoNormal" style=3D"margin:0in;line-height:normal;background-colo=
r:white;background-repeat:repeat;background-attachment:scroll;background-im=
age:none;background-size:auto;"><br clear=3D"none">
            </div>
            <font size=3D"3"><font face=3D"Helvetica Neue, Helvetica, Arial=
,                 sans-serif">The flattened XML is very searchable (an
                index on 'currency' is good enough) and can be
                transformed to JSON.</font></font></div></div></div><p><br =
clear=3D"none">
    </p>
    <p>I am not sure an XSLT program can easily capture your rules but
      for the given sample, if you insert a check on elements whether
      they both have attributes and non-whitespace text content and in
      that case transform any attributes to sibling following the
      element, the result is as you wanted:</p>
    <p><br clear=3D"none">
    </p>
    <p>&lt;xsl:stylesheet
      xmlns:xsl=3D<a shape=3D"rect" class=3D"ydpe658c544yiv6651078795moz-tx=
t-link-rfc2396E" href=3D"http://www.w3.org/1999/XSL/Transform" rel=3D"nofol=
low" target=3D"_blank">"http://www.w3.org/1999/XSL/Transform"</a><br clear=
=3D"none">
      &nbsp; version=3D"3.0"<br clear=3D"none">
      &nbsp; xmlns:xs=3D<a shape=3D"rect" class=3D"ydpe658c544yiv6651078795=
moz-txt-link-rfc2396E" href=3D"http://www.w3.org/2001/XMLSchema" rel=3D"nof=
ollow" target=3D"_blank">"http://www.w3.org/2001/XMLSchema"</a><br clear=3D=
"none">
      &nbsp; exclude-result-prefixes=3D"#all"&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:param name=3D"namespace"
      as=3D"xs:string"&gt;<a shape=3D"rect" class=3D"ydpe658c544yiv66510787=
95moz-txt-link-freetext" href=3D"http://fc.fasset/product" rel=3D"nofollow"=
 target=3D"_blank">http://fc.fasset/product</a>&lt;/xsl:param&gt;<br clear=
=3D"none">
      <br clear=3D"none">
      &nbsp; &lt;xsl:param name=3D"root"
      as=3D"xs:string"&gt;requestProduct&lt;/xsl:param&gt;<br clear=3D"none=
">
      &nbsp; &lt;xsl:param name=3D"keepAttr" static=3D"yes" as=3D"xs:string=
*"
      select=3D"'href', 'id'"/&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:strip-space elements=3D"*"/&gt;<br clear=3D"none">
      &nbsp; &lt;xsl:output indent=3D"yes"/&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:template match=3D"/*"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:element name=3D"{$root}" names=
pace=3D"{$namespace}"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-=
templates select=3D"@* , node()"/&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:element&gt;<br clear=3D"none">
      &nbsp; &lt;/xsl:template&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:template match=3D"*"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:element name=3D"{local-name()}"
      namespace=3D"{$namespace}"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-=
templates select=3D"@* , node()"/&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:element&gt;<br clear=3D"none">
      &nbsp; &lt;/xsl:template&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:template match=3D"*[@* and text()[normalize-space()]]"=
&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:element name=3D"{local-name()}"
      namespace=3D"{$namespace}"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-=
templates/&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:element&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:apply-templates select=3D"@*"/=
&gt;<br clear=3D"none">
      &nbsp; &lt;/xsl:template&gt;<br clear=3D"none">
      &nbsp; <br clear=3D"none">
      &nbsp; &lt;xsl:template match=3D"@*[local-name() =3D $keepAttr]"&gt;<=
br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:element name=3D"{local-name()}"
      namespace=3D"{$namespace}"&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=3D=
"."/&gt;<br clear=3D"none">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsl:element&gt;<br clear=3D"none">
      &nbsp; &lt;/xsl:template&gt;<br clear=3D"none">
      <br clear=3D"none">
      &lt;/xsl:stylesheet&gt;</p>
    <div class=3D"ydpe658c544yiv6651078795yqt4591829426" id=3D"ydpe658c544y=
iv6651078795yqtfd58641"><p><br clear=3D"none">
    </p>
  </div></div><div class=3D"ydpe658c544yiv6651078795yqt4591829426" id=3D"yd=
pe658c544yiv6651078795yqtfd89374"><div><div>
<div style=3D"border-top:1px solid black;background-color:#dddddd;color:#88=
8888;font-size:smaller;padding:5px;text-align:center;font-family:arial, ver=
dana, arial, sans-serif;margin-top:1em;clear:both;margin:auto;">
<a shape=3D"rect" href=3D"http://www.mulberrytech.com/xsl/xsl-list" rel=3D"=
nofollow" target=3D"_blank">
XSL-List info and archive</a>
<div style=3D"text-align:center;">
<a shape=3D"rect" style=3D"color:blue;" href=3D"http://lists.mulberrytech.c=
om/unsub/xsl-list/3448573" rel=3D"nofollow" target=3D"_blank">EasyUnsubscri=
be</a>
(<a shape=3D"rect" style=3D"color:blue;" href=3D"" rel=3D"nofollow" target=
=3D"_blank">by email</a>)
</div>
</div>
</div>
</div></div></div></div>
            </div>
        </div></body></html>
<div><!-- begin bl.html.trailer -->
<div style=3D"border-top:1px solid black; background-color: #dddddd;
color: #888888; font-size: smaller; padding: 5px; text-align: center;
font-family: arial,verdana,arial,sans-serif; margin-top:1em; clear:
both; margin: auto">
<a href=3D"http://www.mulberrytech.com/xsl/xsl-list">
XSL-List info and archive</a>
<div style=3D"text-align:center;">
<a style=3D"color: blue;"
  href=3D"http://lists.mulberrytech.com/unsub/xsl-list/3329386"
>EasyUnsubscribe</a>
(<a style=3D"color: blue;"
href=3D"mailto:[email protected]?subject=3Dremove"
>by email</a>)
</div>
</div>
<!-- end bl.html.trailer --></div>

------=_Part_641622_371826289.1621709432582--