|
next
|
 Subject: Can't figure this out ... Newbie ??? Author: Ryan Peel Date: 26 Jul 2004 03:44 PM
|
I have an XML document that I'm trying to transform into another XML
document using XSL. Basically, the stylesheet is serving as a filter
to eliminate data from the original XML document. The result of the transformation
is at the bottom of this message denoted as "Result:". It's wierd, it's like
the namespace information is getting put inside of my first tag as if
it were an attribute or something. (Again, I posted the response that I
got from Stylus Studio at the bottom). Thanks for the help.
Here is my XML document. The "<RETURNED-DATA>" tags are the major groups
that I am looking to query based on some selected variables.
<APLUS-PROPERTY>
<EffectiveDate>7/26/2004</EffectiveDate>
<RETURNED-DATA>
<I-B>I</I-B>
<BUS-NAME></BUS-NAME>
<DOING-BUS-AS-NAME></DOING-BUS-AS-NAME>
<BUS-FED-TAX-ID></BUS-FED-TAX-ID>
<DOC-CONTROL-NUM></DOC-CONTROL-NUM>
<FIRST-INS-NAME>INSURED NAME DIFFERENT </FIRST-INS-NAME>
<FIRST-INS-NAME-AKA> </FIRST-INS-NAME-AKA>
<FIRST-INS-GENDER></FIRST-INS-GENDER>
<FIRST-INS-SSN>4006640010003</FIRST-INS-SSN>
<FIRST-INS-DOB></FIRST-INS-DOB>
<SECND-INS-NAME> </SECND-INS-NAME>
<SECND-INS-NAME-AKA> </SECND-INS-NAME-AKA>
<SECND-INS-GENDER></SECND-INS-GENDER>
<SECND-INS-SSN></SECND-INS-SSN>
<SECND-INS-DOB></SECND-INS-DOB>
<LOSS-LOCATION> RTE 1 FANTASYLAND IL607501234</LOSS-LOCATION>
<CURRENT-ADDR> RR 2BOX 1234 FANTASYLAND IL607501234</CURRENT-ADDR>
<MATCH-TYPE>q1</MATCH-TYPE>
<LOSS-DATA>07042000</LOSS-DATA>
<LOSS-AMOUNT>$2,500</LOSS-AMOUNT>
<CLAIM-TYPE>DISAP</CLAIM-TYPE>
<CAUSE-OF-LOSS>DISAP</CAUSE-OF-LOSS>
4006380010004<CATASTROPHE-NUM>N</CATASTROPHE-NUM>
<MORTGAGE>FANTASY HOME LOANS INC</MORTGAGE>
<LOAN-NUM></LOAN-NUM>
<POLICY-TYPE>HO</POLICY-TYPE>
<POLICY-NUM>H1234567890123</POLICY-NUM>
<LOSS-CARRIER>SUPER MUTUAL INSURANCE</LOSS-CARRIER>
<CASE-NUM>123412341234123</CASE-NUM>
<CLAIMANT-NAME> </CLAIMANT-NAME>
<CLAIMANT-ADDR> </CLAIMANT-ADDR>
<CLAIMANT-SSN></CLAIMANT-SSN>
<CLAIMANT-DOB></CLAIMANT-DOB>
<REMARKS></REMARKS>
<RECORD-FORMAT>L</RECORD-FORMAT>
<CLAIM-STATUS>C</CLAIM-STATUS>
<RET-LINE-FEED-DATA></RET-LINE-FEED-DATA></RETURNED-DATA>
4006510010005<RETURNED-DATA>
<I-B>B</I-B>
<BUS-NAME>MUFFLER KING</BUS-NAME>
<DOING-BUS-AS-NAME></DOING-BUS-AS-NAME>
<BUS-FED-TAX-ID></BUS-FED-TAX-ID>
<DOC-CONTROL-NUM></DOC-CONTROL-NUM>
<FIRST-INS-NAME> </FIRST-INS-NAME>
<FIRST-INS-NAME-AKA> </FIRST-INS-NAME-AKA>
<FIRST-INS-GENDER></FIRST-INS-GENDER>
<FIRST-INS-SSN></FIRST-INS-SSN>
<FIRST-INS-DOB></FIRST-INS-DOB>
<SECND-INS-NAME> </SECND-INS-NAME>
<SECND-INS-NAME-AKA> </SECND-INS-NAME-AKA>
<SECND-INS-GENDER></SECND-INS-GENDER>
<SECND-INS-SSN></SECND-INS-SSN>4005670010006
<SECND-INS-DOB></SECND-INS-DOB>
<LOSS-LOCATION> RTE 1 FANTASYLAND IL60750 </LOSS-LOCATION>
<CURRENT-ADDR> RTE 1 FANTASYLAND IL60750 </CURRENT-ADDR>
<MATCH-TYPE>q1</MATCH-TYPE>
<LOSS-DATA>05082000</LOSS-DATA>
<LOSS-AMOUNT>$254</LOSS-AMOUNT>
<CLAIM-TYPE>WC</CLAIM-TYPE>
<CAUSE-OF-LOSS>SPLINTER IN HAND</CAUSE-OF-LOSS>
<CATASTROPHE-NUM>N</CATASTROPHE-NUM>
<MORTGAGE></MORTGAGE>
<LOAN-NUM></LOAN-NUM>
<POLICY-TYPE>WC</POLICY-TYPE>
<POLICY-NUM>AB1E1234</POLICY-NUM>
<LOSS-CARRIER>FIRST 4006280010007 INSURANCE CO</LOSS-CARRIER>
<CASE-NUM>M1234567890</CASE-NUM>
<CLAIMANT-NAME>JAMESBURY THOMAS </CLAIMANT-NAME>
<CLAIMANT-ADDR>123 SQUARE RD FANTASY IL60750 </CLAIMANT-ADDR>
<CLAIMANT-SSN>123123123</CLAIMANT-SSN>
<CLAIMANT-DOB>11111911</CLAIMANT-DOB>
<REMARKS></REMARKS>
<RECORD-FORMAT>L</RECORD-FORMAT>
<CLAIM-STATUS>C</CLAIM-STATUS>
<RET-LINE-FEED-DATA></RET-LINE-FEED-DATA></RETURNED-DATA>
<RETURNED-DATA>
<I-B>B</I-B>
<BUS-NAME>BROTHERS, INC</BUS-NAME>
<DOING-BUS-AS-NAME></DOING-BUS-AS-NAME>
<BUS-FED-TAX-ID></BUS-FED-TAX-ID>
<DOC-CONTROL-NUM></DOC-CONTROL-NUM>4006100010008
<FIRST-INS-NAME> </FIRST-INS-NAME>
<FIRST-INS-NAME-AKA> </FIRST-INS-NAME-AKA>
<FIRST-INS-GENDER></FIRST-INS-GENDER>
<FIRST-INS-SSN></FIRST-INS-SSN>
<FIRST-INS-DOB></FIRST-INS-DOB>
<SECND-INS-NAME> </SECND-INS-NAME>
<SECND-INS-NAME-AKA> </SECND-INS-NAME-AKA>
<SECND-INS-GENDER></SECND-INS-GENDER>
<SECND-INS-SSN></SECND-INS-SSN>
<SECND-INS-DOB></SECND-INS-DOB>
<LOSS-LOCATION> ROUTE 7 NEWPORT ME04953 </LOSS-LOCATION>
4005880010009<CURRENT-ADDR> PO BOX 156 NEWPORT ME04953 </CURRENT-ADDR>
<MATCH-TYPE>q1</MATCH-TYPE>
<LOSS-DATA>07161999</LOSS-DATA>
<LOSS-AMOUNT>$0</LOSS-AMOUNT>
<CLAIM-TYPE>OTHER</CLAIM-TYPE>
<CAUSE-OF-LOSS>LACERATION TO FINGER ( CLC ) 300662310</CAUSE-OF-LOSS>
<CATASTROPHE-NUM></CATASTROPHE-NUM>
<MORTGAGE></MORTGAGE>
<LOAN-NUM></LOAN-NUM>
<POLICY-TYPE>WC</POLICY-TYPE>
<POLICY-NUM></POLICY-NUM>
<LOSS-CARRIER>NETHERLANDS INS COS</LOSS-CARRIER>
<CASE-NUM>WC 922483607169901</CASE-NUM>
<CLAIMANT-NAME>CLUKEY SCOTT A</CLAIMANT-NAME>
4003400010010<CLAIMANT-ADDR>32 HIGH ST NEWPORT ME04953 </CLAIMANT-ADDR>
<CLAIMANT-SSN>006869335</CLAIMANT-SSN>
<CLAIMANT-DOB>04301971</CLAIMANT-DOB>
<REMARKS></REMARKS>
<RECORD-FORMAT>L</RECORD-FORMAT>
<CLAIM-STATUS>O</CLAIM-STATUS>
<RET-LINE-FEED-DATA></RET-LINE-FEED-DATA></RETURNED-DATA>
4000130019999006328</APLUS-PROPERTY>
Here is my stylesheet: My filter is by a variable called "$PolicyType" and
further by a date calculation (a call to a JScript function called getAge) that
returns only records that are within 10 years of the year part of the value
in the EffectiveDate variable. This transformation should return one of the two
possible "<RETURNED-DATA>" tags.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:local ="http://www.csc.com/mynamespace" >
<xsl:output omit-xml-declaration="yes" encoding="UTF-8"/>
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<APLUS-PROPERTY>
<xsl:for-each select="RETURNED-DATA">
<xsl:variable name="EffDate" select="../EffectiveDate"/>
<xsl:variable name="PolicyType" select="POLICY-TYPE"/>
<xsl:variable name="myDate" select="concat(concat(concat(concat(substring(LOSS-DATA,1,2),'/'),substring(LOSS-DATA,3,2)),'/'),substring(LOSS-DATA,5,4))"/>
<xsl:if test="$PolicyType='BUS' or $PolicyType='CMP' or $PolicyType='D' or $PolicyType='E' or $PolicyType='EC' or $PolicyType='FIRE' or $PolicyType='F' or $PolicyType='HO' or $PolicyType='H' or $PolicyType='T' or $PolicyType='C' or $PolicyType='IM' or $PolicyType='I' or $PolicyType='NU' or $PolicyType='X' or $PolicyType='Z' or $PolicyType='GL' or $PolicyType='HOL' or $PolicyType='MP'">
<xsl:if test="local:getAge($myDate, $EffDate) < 10">
<RETURNED-DATA>
<I-B><xsl:value-of select="I-B"/></I-B>
<BUS-NAME><xsl:value-of select="BUS-NAME"/></BUS-NAME>
<DOING-BUS-AS-NAME><xsl:value-of select="DOING-BUS-AS-NAME"/></DOING-BUS-AS-NAME>
<BUS-FED-TAX-ID><xsl:value-of select="BUS-FED-TAX-ID"/></BUS-FED-TAX-ID>
<DOC-CONTROL-NUM><xsl:value-of select="DOC-CONTROL-NUM"/></DOC-CONTROL-NUM>
<FIRST-INS-NAME><xsl:value-of select="FIRST-INS-NAME"/></FIRST-INS-NAME>
<FIRST-INS-NAME-AKA><xsl:value-of select="FIRST-INS-NAME-AKA"/></FIRST-INS-NAME-AKA>
<FIRST-INS-GENDER><xsl:value-of select="FIRST-INS-GENDER"/></FIRST-INS-GENDER>
<FIRST-INS-SSN><xsl:value-of select="FIRST-INS-SSN"/></FIRST-INS-SSN>
<FIRST-INS-DOB><xsl:value-of select="FIRST-INS-DOB"/></FIRST-INS-DOB>
<SECND-INS-NAME><xsl:value-of select="SECND-INS-NAME"/></SECND-INS-NAME>
<SECND-INS-NAME-AKA><xsl:value-of select="SECND-INS-NAME-AKA"/></SECND-INS-NAME-AKA>
<SECND-INS-GENDER><xsl:value-of select="SECND-INS-GENDER"/></SECND-INS-GENDER>
<SECND-INS-SSN><xsl:value-of select="SECND-INS-SSN"/></SECND-INS-SSN>
<SECND-INS-DOB><xsl:value-of select="SECND-INS-DOB"/></SECND-INS-DOB>
<LOSS-LOCATION><xsl:value-of select="LOSS-LOCATION"/></LOSS-LOCATION>
<CURRENT-ADDR><xsl:value-of select="CURRENT-ADDR"/></CURRENT-ADDR>
<MATCH-TYPE><xsl:value-of select="MATCH-TYPE"/></MATCH-TYPE>
<LOSS-DATA><xsl:value-of select="LOSS-DATA"/></LOSS-DATA>
<xsl:variable name="lossAmount" select="LOSS-AMOUNT"/>
<LOSS-AMOUNT><xsl:value-of select="translate(translate($lossAmount,',',''),'$','')"/></LOSS-AMOUNT>
<CLAIM-TYPE><xsl:value-of select="CLAIM-TYPE"/></CLAIM-TYPE>
<CAUSE-OF-LOSS><xsl:value-of select="CAUSE-OF-LOSS"/></CAUSE-OF-LOSS>
<CATASTROPHE-NUM><xsl:value-of select="CATASTROPHE-NUM"/></CATASTROPHE-NUM>
<MORTGAGE><xsl:value-of select="MORTGAGE"/></MORTGAGE>
<LOAN-NUM><xsl:value-of select="LOAN-NUM"/></LOAN-NUM>
<POLICY-TYPE><xsl:value-of select="POLICY-TYPE"/></POLICY-TYPE>
<POLICY-NUM><xsl:value-of select="POLICY-NUM"/></POLICY-NUM>
<LOSS-CARRIER><xsl:value-of select="LOSS-CARRIER"/></LOSS-CARRIER>
<CASE-NUM><xsl:value-of select="CASE-NUM"/></CASE-NUM>
<CLAIMANT-NAME><xsl:value-of select="CLAIMANT-NAME"/></CLAIMANT-NAME>
<CLAIMANT-ADDR><xsl:value-of select="CLAIMANT-ADDR"/></CLAIMANT-ADDR>
<CLAIMANT-SSN><xsl:value-of select="CLAIMANT-SSN"/></CLAIMANT-SSN>
<CLAIMANT-DOB><xsl:value-of select="CLAIMANT-DOB"/></CLAIMANT-DOB>
<REMARKS><xsl:value-of select="REMARKS"/></REMARKS>
<RECORD-FORMAT><xsl:value-of select="RECORD-FORMAT"/></RECORD-FORMAT>
<CLAIM-STATUS><xsl:value-of select="CLAIM-STATUS"/></CLAIM-STATUS>
<RET-LINE-FEED-DATA><xsl:value-of select="RET-LINE-FEED-DATA"/></RET-LINE-FEED-DATA>
</RETURNED-DATA>
</xsl:if>
</xsl:if>
</xsl:for-each>
</APLUS-PROPERTY>
</xsl:template>
<msxsl:script language="JScript" implements-prefix="local"><![CDATA[
function getAge(dateString, dateEffDt) {
var effdt = new Date(dateEffDt);
var yearEffDt = effdt.getFullYear();
var monthEffDt = (effdt.getMonth() + 1);
var dateEffDt = effdt.getDate();
dob = new Date(dateString);
var yearDob = dob.getFullYear();
var monthDob = (dob.getMonth()+ 1);
var dateDob = dob.getDate();
yearAge = yearEffDt - yearDob;
if (monthEffDt >= monthDob)
var monthAge = monthEffDt - monthDob;
else {
yearAge--;
var monthAge = 12 + monthEffDt -monthDob;
}
if (dateEffDt >= dateDob)
var dateAge = dateEffDt - dateDob;
else {
monthAge--;
var dateAge = 31 + dateEffDt - dateDob;
if (monthAge < 0) {
monthAge = 11;
yearAge--;
}
}
return yearAge;
}]]></msxsl:script>
</xsl:stylesheet>
Result:
<APLUS-PROPERTY xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:local="http://www.hastingsmutual.com/mynamespace">
</APLUS-PROPERTY>
|
|
|
|