XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Ryan PeelSubject: 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) &lt; 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>

Postnext
Ivan PedruzziSubject: Can't figure this out ... Newbie ???
Author: Ivan Pedruzzi
Date: 26 Jul 2004 10:21 PM

Hi Ryan,

You should add exclude-result-prefixes to the stylesheet element to filter undesired attributes

<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"
exclude-result-prefixes="msxsl local">

If you like to know more check out
http://www.w3c.org/TR/xslt#literal-result-element

Hope this Helps
Ivan

Postnext
Ryan PeelSubject: Can't figure this out ... Newbie ???
Author: Ryan Peel
Date: 27 Jul 2004 07:14 AM
Okay, thanks. That got rid of my problem where the namespace data appeared
to be an attribute of my <APLUS-PROPERTY> tag. However, now my result
appears to be empty.

Here is the result I get from Stylus Studio ...

<APLUS-PROPERTY />

.. And that's it. Do you have any more thoughts?

Posttop
Ivan PedruzziSubject: Can't figure this out ... Newbie ???
Author: Ivan Pedruzzi
Date: 27 Jul 2004 08:57 AM
The Xpath expression doesn't match your document.
change line 12 to
<xsl:for-each select="APLUS-PROPERTY/RETURNED-DATA">


You need type cast EffectiveDate element to string before passing to the function getAge

change line 17 to
<xsl:if test="local:getAge($myDate, string($EffDate)) &lt; 10">

I suggest you to spend sometime learning the language before doing additional work.

Ivan

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.