Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
Version 5.0.1
-
None
-
None
Description
When generating a sample, usually the top-level-element is xml-fragment. But when the type contains only one child-element, it becomes the root.
import org.apache.xmlbeans.SchemaTypeSystem; import org.apache.xmlbeans.XmlBeans; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument; import org.apache.xmlbeans.impl.xsd2inst.SampleXmlUtil; public class SchemaTest { private static String generateXml(String xsdString) throws XmlException { XmlOptions options = new XmlOptions().setDocumentSourceName("a.xsd"); XmlObject xsd = SchemaDocument.Factory.parse(xsdString, options); SchemaTypeSystem schema = XmlBeans.compileXsd(new XmlObject[] { xsd }, XmlBeans.getBuiltinTypeSystem(), options); return SampleXmlUtil.createSampleForType(schema.globalElements()[0].getType()); } public static void main(String[] args) throws Exception { String xml = generateXml( "<?xml version=\"1.0\" encoding=\"utf-8\"?><schema elementFormDefault=\"qualified\" targetNamespace=\"x\" xmlns=\"http://www.w3.org/2001/XMLSchema\">" + " <element name=\"a\">" // + " <complexType><sequence>" // + " <element name=\"b\"><complexType><sequence>" // + " <element name=\"c\" type=\"string\" />" // + " </sequence></complexType></element>" // + " </sequence></complexType>" // + " </element>" // + "</schema>"); System.out.println(xml); } }
Generates:
<x:b xmlns:x="x"> <x:c>string</x:c> </x:b>
Expected:
<xml-fragment xmlns:x="x"> <x:b> <x:c>string</x:c> </x:b> </xml-fragment>