Hello.
I have the following XML.
Code:
<DETAIL>
<DETAILLINE>
<SEQUENCE>000001</SEQUENCE>
<DOS>
<MM>06</MM>
<DD>22</DD>
<YYYY>2011</YYYY>
</DOS>
<RCDATA>
<RCDATALINE>
<RC>BR</RC>
<RCOVERRIDE>Y</RCOVERRIDE>
</RCDATALINE>
<RCDATALINE>
<RC>38</RC>
<RCOVERRIDE>N</RCOVERRIDE>
</RCDATALINE>
</RCDATA>
</DETAILLINE>
<DETAILLINE>
<SEQUENCE>000002</SEQUENCE>
<DOS>
<MM>06</MM>
<DD>11</DD>
<YYYY>2011</YYYY>
</DOS>
<RCDATA>
<RCDATALINE>
<RC>BR</RC>
<RCOVERRIDE>Y</RCOVERRIDE>
</RCDATALINE>
<RCDATALINE>
<RC>40</RC>
<RCOVERRIDE>N</RCOVERRIDE>
</RCDATALINE>
</RCDATA>
</DETAILLINE>
<DETAILLINE>
<SEQUENCE>000003</SEQUENCE>
<DOS>
<MM>06</MM>
<DD>11</DD>
<YYYY>2012</YYYY>
</DOS>
<RCDATA>
<RCDATALINE>
<RC>BR</RC>
<RCOVERRIDE>Y</RCOVERRIDE>
</RCDATALINE>
<RCDATALINE>
<RC>40</RC>
<RCOVERRIDE>N</RCOVERRIDE>
</RCDATALINE>
</RCDATA>
</DETAILLINE>
</DETAIL>
I received help here in this forum last week (thank you Michael Kay) as to how to check for <DOS> century, year and month less than '201107'.
I now need to add an additional test to only retrieve <DOS> less than '201107' and <DETAILLINE><RCDATA><RCDATALINE><RC> = '40' and
<DETAILLINE><RCDATA><RCDATALINE><RCOVERRIDE> != 'Y'.
The requirement is that the tests are all on the same position of <DETAILLINE>.
So, in the XML above, the only <DETAILLINE> that is true is <SEQUENCE>000002</SEQUENCE>.
I tried using the following but did not get the desired results.
Code:
<xsl:when test="/doc/EOB/DETAIL/DETAILLINE/DOS[number(concat(YYYY,MM)) < 201107] [/doc/EOB/DETAIL/DETAILLINE/RCDATA/RCDATALINE/RC = '40'] [/doc/EOB/DETAIL/DETAILLINE/RCDATA/RCDATALINE/RCOVERRIDE != 'Y']">
I'm thinking I need to use the "position" method but am not sure of the syntax.
I'm using XSLT version 1.0.
Any help will be greatly appreciated!
Thanks,
Rita