Skip to content

Element ref not generating and linking types correctly. #130

@oldelvet

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

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