[Xml-compile] Schema reader doesn't compile but schema writer does?

DEIGNAN Ciaran C.DEIGNAN at rsd.com
Tue Sep 3 11:50:01 GMT 2013


Hi Mark,

Yes that makes the error go away, the compile returns a valid structure. 
My test is now crashing a little further on, but that's entirely my problem ;)

Thanks for the quick fix,
Ciaran

-----Original Message-----
From: Mark Overmeer [mailto:mark at overmeer.net] 
Sent: mardi 3 septembre 2013 13:41
To: DEIGNAN Ciaran
Cc: xml-compile at lists.scsys.co.uk
Subject: Re: [Xml-compile] Schema reader doesn't compile but schema writer does?

Hi Ciaran,

* DEIGNAN Ciaran (C.DEIGNAN at rsd.com) [130903 09:36]:
> The application can supply the schema for the data it provides. I can
> create a writer from a schema, but I can't always create a reader.

> I get the following error, and I don't know if the problem is in the
> schema or in XML::Compile:
> 
> <xs:element default="false" minOccurs="0" name="vital" nillable="true"
>   type="xs:boolean">
> 
> Perhaps it's strange to have a default on an element that's nillable...?

I think it is a bug in XML::Compile.  It has to do with the preparation
to return the default value.  The defaults need to follow the rules of
their main type here (boolean), so at compile-time they get sent through
the same routines as the processing of the element will walk later.

Can you please test if this patch is sufficient:
lib/XML/Compile/Translate/Reader.pm line 698:

 sub makeSimpleElement
 {  my ( $self, $path, $tag, $st, undef, undef, $comptype, $is_nillable) = @_;

      $is_nillable
    ? sub { my $tree  = shift or return $st->(undef);
 -          my $value = $tree->nodeNil ? 'NIL' : $st->($tree);
 +          my $value = ref $tree && $tree->nodeNil ? 'NIL' : $st->($tree);
            defined $value ? ($tag => $value) : ();
          }

-- 
Regards,

               MarkOv

------------------------------------------------------------------------
       Mark Overmeer MSc                                MARKOV Solutions
       Mark at Overmeer.net                          solutions at overmeer.net
http://Mark.Overmeer.net                   http://solutions.overmeer.net




More information about the Xml-compile mailing list