Class TransformSchema
Data holder for schema transformation operations, to permit customization of the
schema namespace prefix and file name of generated schema. As the schemagen
tool has no mechanics to control namespace prefix and file name of generated schema,
the Jaxb2-Maven-plugin must supply a post-processing step to work around this situation.
Each TransformSchema
object holds data pertaining to changes for one namespace
URI - either namespace prefix used within the generated XSD or resulting filename for
the schema definition.
- Namespace prefix. Each XML element within a namespace uses the supplied
prefix. (As a reference, in the XML element
<foo:bar/>
, the namespace prefix is "foo" and the element name is "bar"). The Schemagen tool by default only generates namespace prefixes on the form "ns1", "ns2" etc., which means that the generated schema will contain elements on the form<xs:extension base="ns1:nazgulEntity">
. Use atoPrefix
element to change the namespace prefix of a particular XML URI to simplify understanding the schema. - Filename. By default, the Schemagen tool creates files called "schema1.xsd",
"schema2.xsd" etc. Since the XSD imports one another, simply changing the filename will frequently
break the schema structure - you will need to change all import statements in all generated XSD files
to match the new file names. The Jaxb2 Maven plugin can do all this housekeeping automatically, if you
create a transformSchema element containing a
toFile
element to change the filename for a particular XML URI. Changing the file names frequently improves overview and usability of the generated schema files.
Example TransformSchemas
The URI element is mandatory for each TransformSchema element. The first example illustrates how to use the TransformSchema element to change the prefix and file name of 3 XML URIs. This is the recommended use of a TransformSchema - change both prefix and filename to something meaningful for each URI:
<transformSchemas> <transformSchema> <uri>http://some/namespace</uri> <toPrefix>some</toPrefix> <toFile>some_schema.xsd</toFile> </transformSchema> <transformSchema> <uri>http://another/namespace</uri> <toPrefix>another</toPrefix> <toFile>another_schema.xsd</toFile> </transformSchema> <transformSchema> <uri>http://yet/another/namespace</uri> <toPrefix>yetAnother</toPrefix> <toFile>yet_another_schema.xsd</toFile> </transformSchema> </transformSchemas>
The URI element is mandatory for each TransformSchema element, along with at least one of the other two elements in the TransformSchema. This implies that partial configuration for TransformSchema can be used, although this is not recommended since the readability and usability of the automatically generated namespace prefixes and file names are poor. The second example illustrates how to use the TransformSchema element to change either prefix or file name for 2 XML URIs:
<transformSchemas> <transformSchema> <uri>http://another/namespace</uri> <toPrefix>another</toPrefix> </transformSchema> <transformSchema> <uri>http://yet/another/namespace</uri> <toFile>yet_another_schema.xsd</toFile> </transformSchema> </transformSchemas>
- Since:
- 1.4
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.TransformSchema
(String uri, String toPrefix, String toFile) Compound constructor, creating a TransformSchema instruction wrapping the supplied data. -
Method Summary
Modifier and TypeMethodDescriptiongetUri()
void
Assigns the the name of the target file if/when renamed.void
setToPrefix
(String toPrefix) Assigns the namespace prefix of this Schema.void
Assigns the URI of this Schema, such ashttp://www.jguru.se/some/namespace
.toString()
-
Field Details
-
EMPTY_NAMESPACE
The empty XML Namespace.- See Also:
-
uri
-
toPrefix
-
toFile
-
-
Constructor Details
-
TransformSchema
public TransformSchema()Default constructor. -
TransformSchema
Compound constructor, creating a TransformSchema instruction wrapping the supplied data.- Parameters:
uri
- The URI of this Schema, such ashttp://www.jguru.se/some/namespace
. Cannot be null or empty.toPrefix
- The new namespace prefix for this Schema. Optional.toFile
- The new name of the generated schema file.
-
-
Method Details
-
getUri
- Returns:
- The URI of this Schema, such as
http://www.jguru.se/some/namespace
. The namespace URI is mapped to its prefix in the schema element, i.e:xmlns:xs="http://www.w3.org/2001/XMLSchema"
orxmlns:foo="http://www.acme.com/xml/schema/foo"
.
-
getToPrefix
- Returns:
- The namespace prefix of this Schema. Each schema element is related to its namespace using the prefix.
For an XML element
<foo:bar/>
, the prefix is "foo" (and the element name is "bar").
-
getToFile
- Returns:
- the name of the target file if/when renamed.
-
setUri
Assigns the URI of this Schema, such ashttp://www.jguru.se/some/namespace
. The namespace URI is mapped to its prefix in the schema element, i.e:xmlns:xs="http://www.w3.org/2001/XMLSchema"
orxmlns:foo="http://www.acme.com/xml/schema/foo"
.- Parameters:
uri
- The non-empty uri of this Schema.
-
setToPrefix
Assigns the namespace prefix of this Schema. Each schema element is related to its namespace using the prefix. For an XML element<foo:bar/>
, the prefix is "foo" (and the element name is "bar").- Parameters:
toPrefix
- The non-empty prefix to assign.
-
setToFile
Assigns the the name of the target file if/when renamed.- Parameters:
toFile
- The non-empty filename to assign.
-
toString
-