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 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Simon TemplarSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Simon Templar
Date: 30 Aug 2005 11:41 AM
Originally Posted: 30 Aug 2005 05:28 AM
Hi, I am getting the following error message pointing to line 2746. That line has field CustDOB which is optional and hence does not contain a value. But other records may contain a valus for that field. Should the validator not ignore the empty field as it is optional in the schema (attached)? Additionally, how can I have a condition in my XSLT that if an empty field is encountered then just delete the corresponding tags so that there are no validation errors? I am very new to XML/XSLT and do not fully comprehend the subtelties so I'd be grateful if the ansers can be given with a little bit of explanation. Here's the error message: ------------ Validating CISRI_valid.xml... file:///c:/FSA Schemas/CISRI_valid.xml:2746,23: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!. The XML document CISRI_valid.xml is NOT valid (1 errors) ------------ TIA.

Postnext
Alberto MassariSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Alberto Massari
Date: 30 Aug 2005 06:59 AM
Hi Simon,

>That line has field CustDOB which is optional and
>hence does not contain a value.

The schema specifies that the CustDOB is optional, but, if it is present, it must have a valid date inside. At that location there is an empty CustDOB, so the error is reported.
Your stylesheet should not output the entire element when there is no date to be written, for example by using

<xsl:if test="a:RetailInvestment/a:CustDOB">
<CustDOB>
<xsl:value-of select="a:RetailInvestment/a:CustDOB"/>
</CustDOB>
</xsl:if>

Hope this helps,
Alberto

Postnext
Simon TemplarSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Simon Templar
Date: 30 Aug 2005 07:26 AM
Alberto,
Many thanks for your prompt reply and help. Some further questions.

>The schema specifies that the CustDOB is optional, but, if it is >present, it must have a valid date inside. At that location there is >an empty CustDOB, so the error is reported.
Thanks for explaining this, I understand this part now.

>Your stylesheet should not output the entire element when
>there is no date to be written, for example by using
>
><xsl:if
>test="a:RetailInvestment/a:CustDOB">
><CustDOB>
><xsl:value-of select="a:RetailInvestment/a:CustDOB"/>
></CustDOB>
></xsl:if>
>
>Hope this helps,
>Alberto

Now, is there a way not to output just the empty tag and still output the element? This is a requirement and hence I don't have the flexibility to simply not output the whole element containing the offending tag.

As always all help is appreciated.

Regards.

Postnext
Alberto MassariSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Alberto Massari
Date: 30 Aug 2005 08:32 AM
Hi Simon,
if you have the requirement to output the CustDOB element even when there is no date inside it, you have to change the schema to allow empty values:

<xs:element name="CustDOB" type="xs:date" nillable="true" minOccurs="0">

In the XML file you can then write

<CustDOB xsi:nil="true"></CustDOB>

by using a stylesheet with these instructions

<CustDOB>
<xsl:choose>
<xsl:when test="a:RetailInvestment/a:CustDOB">
<xsl:value-of select="a:RetailInvestment/a:CustDOB"/>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="xsi:nil">true</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</CustDOB>

Hope this helps,
Alberto

Postnext
Simon TemplarSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Simon Templar
Date: 30 Aug 2005 09:02 AM
Alberto,
Thanks again. Sorry to not have made myself more clear. In fact what I meant to ask was how can I still output the element without the CustDOB tag when CustDOB tag is empty. In other words how can I get my XSL to remove the empty tags? For eg.

<?xml version="1.0" encoding="utf-8" ?>
<FSAHSFFeedRI xmlns="http://www.fsa.gov.uk/XMLSchema/FSAHSFFeedRI-v1-2">
<FSAFeedHeader>
<FeedTargetSchemaVersion>1.2</FeedTargetSchemaVersion>
<Submitter>
<SubmittingFirm>122246</SubmittingFirm>
<SubmittingDept>LSBU</SubmittingDept>
</Submitter>
<ReportDetails>
<ReportCreationDate>2005-10-02</ReportCreationDate>
<ReportIdentifier>RI PSD RETURN</ReportIdentifier>
</ReportDetails>
</FSAFeedHeader>
<FSAHSFFeedRIMsg>
<CoreItems>
<FirmFSARef>122246</FirmFSARef>
<TransRef>APAPS00118406</TransRef>
<Cancellation>false</Cancellation>
</CoreItems>
<RetailInvestment>
<TypePolicy>14</TypePolicy>
<AdvisedSale>N</AdvisedSale>
<CustPostCode>SG12 0AQ</CustPostCode>
<PremPaymentMethod>S</PremPaymentMethod>
<TotalPremAmt> 801</TotalPremAmt>
<CustDOB>1941-04-29</CustDOB>
<DateInForce>2005-05-29</DateInForce>
</RetailInvestment>
</FSAHSFFeedRIMsg>
<FSAHSFFeedRIMsg>
<CoreItems>
<FirmFSARef>122246</FirmFSARef>
<TransRef>OB 86000256</TransRef>
<Cancellation>false</Cancellation>
</CoreItems>
<RetailInvestment>
<TypePolicy>05</TypePolicy>
<AdvisedSale>N</AdvisedSale>
<CustPostCode>PL27 7RJ</CustPostCode>
<PremPaymentMethod>R</PremPaymentMethod>
<TotalPremAmt> 1200</TotalPremAmt>
------>> <CustDOB></CustDOB> <<------- NOT OUTPUT THIS TAG AT ALL
<DateInForce>2005-04-10</DateInForce>
</RetailInvestment>
</FSAHSFFeedRIMsg>
</FSAHSFFeedRI>

Instead as follows:

<RetailInvestment>
<TypePolicy>05</TypePolicy>
<AdvisedSale>N</AdvisedSale>
<CustPostCode>PL27 7RJ</CustPostCode>
<PremPaymentMethod>R</PremPaymentMethod>
<TotalPremAmt> 1200</TotalPremAmt>
<DateInForce>2005-04-10</DateInForce>
</RetailInvestment>
</FSAHSFFeedRIMsg>

Note that the CustDOB tag is missing above.

Regards.

Postnext
Alberto MassariSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Alberto Massari
Date: 30 Aug 2005 10:42 AM
Hi Simon,
this is what my first snippet of XSLT was doing:

<xsl:if test="a:RetailInvestment/a:CustDOB">
<CustDOB>
<xsl:value-of select="a:RetailInvestment/a:CustDOB"/>
</CustDOB>
</xsl:if>

This will test for a CustDOB in the source XML, and generate a CustDOB in the output; unless you can have an empty CustDOB in the source file, in which case you should be writing

<xsl:if test="a:RetailInvestment/a:CustDOB/text()">

or

<xsl:if test="string-length(a:RetailInvestment/a:CustDOB) &gt; 0">

Hope this helps,
Alberto

Posttop
Simon TemplarSubject: Datatype error: Type:SchemaDateTimeException, Message:buffer not initialized yet!
Author: Simon Templar
Date: 30 Aug 2005 11:40 AM
>Hi Simon,
>this is what my first snippet
>of XSLT was doing:
>
><xsl:if
>test="a:RetailInvestment/a:CustDOB">
> <CustDOB>
><xsl:value-of select="a:RetailInvestment/a:CustDOB"/>
> </CustDOB>
></xsl:if>
>
>This will test for a CustDOB in the source XML, and generate a >CustDOB in the output; unless you can have an empty CustDOB in the >source file, in which case you should be writing

That was exactly the case, empty tags in the source file, and I just tested the following code and it works perfectly.

><xsl:if
>test="a:RetailInvestment/a:CustDOB/text()">

Used the above line and it is working like a charm. :-)

>or
>
><xsl:if test="string-length(a:RetailInvestment/a:CustDOB) &gt;0">
>
>Hope this helps,
>Alberto

Many thanks Alberto. You were of immense help.

Cheers.

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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.