Skip to content

Element ref not generating and linking types correctly. #130

Description

@oldelvet

I have been experimenting with go-xml to see if I can use it to interface with an existing Java server application. The existing schema used by the Java code is not generating Go code as I would expect. In have cut things down to a minimal example that exhibits the problem. I can see two issues that probably have a common cause:

  • c4d6128 "Ensure all elements have a type" changes the code generation to use type string instead of struct User (or Anon1)
  • With or without c4d6128 applied the User element is generated as a type struct twice. Once as type User and once as Anon1. The Ulist struct references User entries of type Anon1.

If I change the User element to use a separate complexType definition then only one User struct is defined and Ulist references that as I would expect.

It seems like the element ref is not linking up the types correctly when generating the code.

Test files are attached but the key parts are (testref.xsd)

<xs:element ref="my:user" minOccurs="0" maxOccurs="unbounded">

gets generated into either (testref.go)

User []Anon1 xml:"http://example.com/public/schema/test1 user,omitempty"

or with c4d6128 applied (testref2.go)

User []string xml:"http://example.com/public/schema/test1 user,omitempty"

If I convert to a separate complexType (testtype.xsd) it generates as (testtype.go)

User []Usert xml:"http://example.com/public/schema/test1 user,omitempty"

with only a single structure (named Usert) in the code.

Test files in testdata.zip used

wsdlgen as follows.

//go:generate wsdlgen -pkg testref -r "Type$DOLLAR -> " -o testref.go testref.xsd
//go:generate wsdlgen -pkg testtype -r "Type$DOLLAR -> " -o testtype.go testtype.xsd

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions