You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by "Daniel Kulp (Jira)" <ji...@apache.org> on 2021/05/04 15:26:00 UTC
[jira] [Resolved] (XMLSCHEMA-57) Unbound prefix after serialization
of schema
[ https://issues.apache.org/jira/browse/XMLSCHEMA-57?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved XMLSCHEMA-57.
----------------------------------
Fix Version/s: 2.3.0
Assignee: Daniel Kulp
Resolution: Fixed
> Unbound prefix after serialization of schema
> --------------------------------------------
>
> Key: XMLSCHEMA-57
> URL: https://issues.apache.org/jira/browse/XMLSCHEMA-57
> Project: XmlSchema
> Issue Type: Bug
> Affects Versions: 2.2.4
> Reporter: Steven Van Loon
> Assignee: Daniel Kulp
> Priority: Major
> Fix For: 2.3.0
>
> Attachments: UnionSerialization.java, union-schema.xsd
>
>
> Hi,
> I have a schema that contains a union of two types, one simple type that is defined in the schema itself and a dateTime. See attached file union-schema.xsd.
> First, I read the schema into an XmlSchema
> {code:java}
> XmlSchema schema;
> try (InputStream is = UnionSerialization.class.getResourceAsStream("union-schema.xsd")) {
> schema = new XmlSchemaCollection().read(new InputSource(is));
> }{code}
> Next, I ask to serialize it to a Document and print it to standard output:
> {code:java}
> Document schemaDocument = schema.getSchemaDocument();
> System.out.println(asText(schemaDocument));
> {code}
> The XML that is printed to standard out is not a valid XML schema anymore:
> {code:xml}
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://some.uri" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://some.uri">
> <xs:element name="DynamicObject">
> <xs:complexType>
> <xs:sequence>
> <xs:element xmlns:q1="http://some.uri" name="DatePicker1" type="myDateTime"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:simpleType name="emptyString">
> <xs:restriction base="xs:string">
> <xs:length value="0"/>
> </xs:restriction>
> </xs:simpleType>
> <xs:simpleType name="myDateTime">
> <xs:union memberTypes="q2:emptyString xs:dateTime"/>
> </xs:simpleType>
> </xs:schema>{code}
> the memberTypes of the union of simpleType myDateTime contains a prefix q2 which is not defined anymore in the document.
> This is also the exact error I get when feeding the document to another XmlSchemaCollection:
> {code:java}
> new XmlSchemaCollection().read(schemaDocument, null);
> {code}
> {noformat}
> Exception in thread "main" java.lang.IllegalStateException: The prefix q2 is not bound.
> at org.apache.ws.commons.schema.SchemaBuilder.getRefQName(SchemaBuilder.java:822)
> at org.apache.ws.commons.schema.SchemaBuilder.getRefQName(SchemaBuilder.java:830)
> at org.apache.ws.commons.schema.SchemaBuilder.handleSimpleTypeUnion(SchemaBuilder.java:1767)
> at org.apache.ws.commons.schema.SchemaBuilder.handleSimpleType(SchemaBuilder.java:626)
> at org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1505)
> at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
> at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:156) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:508)
> at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:494)
> {noformat}
> Attached, the full source code can be found, UnionSerialization.java.
>
> Is there anything that can be done to avoid this?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org