[xsd-users] --type-regex looses default regex

Boris Kolpackov boris at codesynthesis.com
Tue Sep 9 03:31:55 EDT 2008


Hi James,

Jean-Pierre Bergamin <james at ractive.ch> writes:

> If I add the option "--type-regex /(.+)Type/$1/" (to get rid of the  
> "Type" suffix in class names) to the command line of xsd, the generated  
> class names contain the full namespace, i.e. class  
> http___www_example_com_somewhat_SomeName. When having a look at the  
> output with --name-regex-trace, the normally applied regex (?:[^ ]*  
> )?([^,]+) is not applied any more. Shouldn't this be applied anyway? The  
> documentation of type-regex says: "Add <regex> to the list of regular  
> expressions", so I'm guessing that my given regex is evaluated after the  
> default one. 

The regular expressions are added to the list and evaluated until
one of them matches. Here is the relevant quote from the "NAMING
CONVENTION" section of the XSD Compiler Command Line Manual[1]:

"All regular expressions for each category are pushed into a
 category-specific stack with the last specified expression
 considered first. The first match that succeeds is used."

So what happens in your case is that your expression is evaluated
before the built-in ones and since it matches, the result is used
without trying any other expressions. Therefore you will need to
also match the optional namespace part.

[1] http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml

Boris




More information about the xsd-users mailing list