Hi All,

I think the patch to this problem would be to change what is written in the 
super .py file from:

line 20
try:
....
except: ImportError, exp:
...

to

try:
....
except (SyntaxError,ImportError), exp:
....

Thanks,

Rob

---------------------------------
Robert Lambert
Imperial College, London
High Energy Physics
Rm. 528, Blackett Laboratory,
Tel: +44 (0)207 594 7815
Fax: +44 (0)207 823 8830
Email: r.lamb...@imperial.ac.uk
---------------------------------
LHCb RICH
CERN 2-1-016
Tel: +41 (0)22  767 3504
---------------------------------
________________________________________
From: Lambert, Rob
Sent: 24 June 2009 10:59
To: Dave Kuhlman
Cc: generateds-users@lists.sourceforge.net
Subject: RE: Cannot parse my XML with generateDS

Hi Dave,

So, I've changed my schema, and now the parsing seems to work on the surface.
I get some classes of Type objects in the .py file... don't see any classes for 
the elements though...
However, when I try to import the classes produced I get the error:

File "generatedssuper.py", line 14
  return '%%d', %%input_data
                           ^
SyntaxError invalid syntax


I used:

 python ./generateDS.py -f --root-element="summary" --super=XMLSummary 
--no-process-includes -o ~/.../XMLSummary.py -s ~/.../XMLSummary_Sub.py 
~/.../XMLSummary.xsd

Thanks,

Rob

---------------------------------
Robert Lambert
Imperial College, London
High Energy Physics
Rm. 528, Blackett Laboratory,
Tel: +44 (0)207 594 7815
Fax: +44 (0)207 823 8830
Email: r.lamb...@imperial.ac.uk
---------------------------------
LHCb RICH
CERN 2-1-016
Tel: +41 (0)22  767 3504
---------------------------------
________________________________________
From: Dave Kuhlman [dkuhl...@rexx.com]
Sent: 23 June 2009 23:59
To: Lambert, Rob
Cc: generateds-users@lists.sourceforge.net
Subject: Re: Cannot parse my XML with generateDS

> Dear Dave,
>
> I have a problem using the generateDS.py tool with python v2.5.4.
> (no lxml)
>
> Please forgive me as this is the first time I'm truly coding in
> XML, but I'm a long-term python user.  I'd really like to use your
> tool, which will be incorporated into our experimental software for
> LHCb.
>
> I am trying to create the code from the xsd you will find in the
> attached file.
>
> I get a very useless error:
>
> line 4026
> "NoneType object has no attribute 'annotate'"
> Perhaps I've got the options wrong?
>
> I have tried many possible combinations of options.
> Maybe you can help?

You are right.  That's a very uninformative error message.  Sigh.
But, I've never been able to make it better.  If you have a
suggestion, please pass it along.

With respect to your specific problem, generateDS.py expects a
specific namespace prefix ("xs:") to be used in the XML Schema
file, and it is not very smart about figuring out what the
namespace prefix is when it differs from "xs:".  In your case, the
schema has no namespace prefix.  So, I was able to parse your
schema with the following command:

    $ ./generateDS.py -a "" -f --super=tmp1sup -o tmp1sup.py -s tmp1sub.py 
XMLSummary.xsd

That's the easy way to fix it.  But, in the future, I'd suggest
that you use a namespace prefix, for example "xs:, in your
schemas".  Here is an example cut from your schema and modified:

    <xs:simpleType name="CollapsedString">
        <xs:restriction base="string">
            <xs:whiteSpace value="collapse"/>
        </xs:restriction>
    </xs:simpleType>

And, if you use a different namespace prefix, then use the -a
option.

There's a little bit in the documentation about this, although I
have to admit, even I feel it's unlikely that users will find it:

    http://www.rexx.com/~dkuhlman/generateDS.html#namespace-prefix-mis-match

By the way, when I generate code from your schema, the generated
parsing methods (parse(), parseString(), ...) assume that Memory is
the top level element in your XML instance documents, whereas I
believe (from comments in your schema) that summary (SummaryType)
is the root element.  So, you could consider using this command
line option:

    --root-element="SummaryType"

or, alternatively, move the following line to the top of your
schema:

    <element name="summary" type="lhcb:SummaryType"/>

generateDS.py assumes that the first element it encounters is the
root element unless that --root-element option is used.

A bug and a word of thanks -- Your example exposed an error.  But,
I have not found a solution for this one yet.  In your XML Schema,
you have a simpleType that is a restriction on another simpleType.
Cool.  I had never tried that.  But, generateDS.py does not handle
it.  So, for the time being, you will have to modify your schema,
and change the definitions of StepType and FileStatus so that
following:

    <simpleType name="CollapsedString">
        <restriction base="string">
            <whiteSpace value="collapse"/>
        </restriction>
    </simpleType>

    <simpleType name="StepType">
        <restriction base="lhcb:CollapsedString">
            <enumeration value="none"/>
            <enumeration value="initialize"/>
            <enumeration value="execute"/>
            <enumeration value="finalize"/>
        </restriction>
    </simpleType>

    <simpleType name="FileStatus">
        <restriction base="lhcb:CollapsedString">
            <enumeration value="none"/>
            <enumeration value="fail"/>
            <enumeration value="part"/>
            <enumeration value="full"/>
        </restriction>
    </simpleType>

becomes:

    <simpleType name="CollapsedString">
        <restriction base="string">
            <whiteSpace value="collapse"/>
        </restriction>
    </simpleType>

    <simpleType name="StepType">
        <restriction base="string">
            <enumeration value="none"/>
            <enumeration value="initialize"/>
            <enumeration value="execute"/>
            <enumeration value="finalize"/>
        </restriction>
    </simpleType>

    <simpleType name="FileStatus">
        <restriction base="string">
            <enumeration value="none"/>
            <enumeration value="fail"/>
            <enumeration value="part"/>
            <enumeration value="full"/>
        </restriction>
    </simpleType>

Basically, it is ignoring the CollapsedString type.

I've attached the modified version of XMLSummary.xsd from which I
was able to generate and parse your sample instance docs.  Also,
I've attached my latest version of generateDS.py, in case yours
is different.  I'll be uploading this version as soon as I can do a bit
more testing.

And, here are the commands I used to do it:

    $ ./generateDS.py -f -a "" --super=tmp2sup -o tmp2sup.py -s tmp2sub.py 
XMLSummary02.xsd
    $ python tmp2sub.py Summary_Minimal.xml

Hope this helps.

I'll be looking into the problem related to the simpleType whose
base is another simpleType, but don't know when or if I'll be able
to solve it.  I'll let you know when I do.

I've CC'ed the generateds-users email list, because this discussion
might be of interest and helpful to other users.

- Dave
------------------------------------------------------------------------------
_______________________________________________
generateds-users mailing list
generateds-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/generateds-users

Reply via email to