XmlException : multiple document elements

Manoj Pansare <[email protected]> Thu, 16 Jun 2011 14:25:48 +0000
Newsgroups gmane.text.xml.xmlbeans.user
Message-ID <F9094F73A5EBB84082819CF094D09B82062FC662@exmb-01-ah.ad.mathworks.com>
HI,

I am getting the error XmlException : The document is not a xml-fragment@http://something/Buildtools: multiple document elements
(Full trace is below).

The xml used is :


<xml-fragment>
      <con:platforms xmlns:con="http://something/Buildtools">
            <con:windows>
                  <con:architectures>
                        <con:architecture name="win64">
                              <con:properties>
                                    <con:item name="PATH" value="$BUILD_TOOLS/1.2/win32/bin"
                                          export="always" action="add" />
                              </con:properties>
                        </con:architecture>
                        <con:architecture name="win32">
                              <con:properties>
                                    <con:item name="PATH" value="/bin" export="always"
                                          action="add" />
                                    <con:filepath name="C_INCLUDE_PATH" value="/include"
                                          export="always" />
                                    <con:string name="GHS_LMHOST" value="@ghlicencsesrv.com"
                                          export="always" />
                              </con:properties>
                        </con:architecture>
                  </con:architectures>
                  <con:properties>
                        <con:filepath name="MATLAB" value="$MW_INSTALL" export="always" />
                        <con:item name="PATH" value="$BUILD_TOOLS/MKSTK_9.0p2/mksnt"
                              export="always" action="add" />
                        <con:string name="MWE_MSVS_VERSION" value="8.00" export="always" />
                  </con:properties>
            </con:windows>
            <con:unix>
                  <con:architectures>
                        <con:architecture name="glnx86">
                              <con:properties>
                                    <con:item name="PATH" value="$BUILD_TOOLS " export="always"
                                          action="add" />
                                    <con:filepath name="MANPATH" value="$MANPATH" export="always" />
                                    <con:string name="GHS_LMHOST" value="@ghlicencsesrv.com"
                                          export="always" />
                              </con:properties>
                        </con:architecture>
                        <con:architecture name="glnxa64">
                              <con:properties>
                                    <con:item name="PATH" value="/bin" export="always"
                                          action="add" />
                                    <con:filepath name="MANPATH" value=" $MANPATH"
                                          export="always" />
                                    <con:string name="BAT_RSH" value="/ /bin/rsh" export="always" />
                              </con:properties>
                        </con:architecture>
                        <con:architecture name="maci">
                              <con:properties>
                                    <con:item name="PATH" value="$BUILD_TOOLS/bin" export="always"
                                          action="add" />
                                    <con:integer name="BUILD_LEOPARD" value="1" export="always" />
                                    <con:string name="BAT_RSH" value="/rsh" export="always" />
                                    <con:filepath name="BAT_STALL_CAPTURE" value="$MW_TOOLS/share/SnagNSave"
                                          export="always" />
                              </con:properties>
                        </con:architecture>
                        <con:architecture name="maci64">
                              <con:properties>
                                    <con:item name="PATH" value="/bin" export="always"
                                          action="add" />
                                    <con:integer name="MACI64" value="1" export="always" />
                                    <con:string name="BAT_RSH" value="/rsh" export="always" />
                                    <con:filepath name="BAT_STALL_CAPTURE" value="$MW_TOOLS/share/SnagNSave"
                                          export="always" />
                              </con:properties>
                        </con:architecture>
                        <con:architecture name="sol64">
                              <con:properties>
                                    <con:item name="PATH" value="/bin" export="always"
                                          action="add" />
                                    <con:filepath name="MANPATH" value="$MANPATH" export="always" />
                              </con:properties>
                        </con:architecture>
                  </con:architectures>
                  <con:properties>
                        <con:string name="LANG" value="" export="always" />
                        <con:integer name="PATCH_GET" value="0" export="always" />
                        <con:filepath name="BAT_PERL" value="$MW_TOOLS/share/batperl"
                              export="always" />
                  </con:properties>
            </con:unix>
      </con:platforms>
      <con:properties xmlns:con="http://something/Buildtools">
            <con:integer name="BH_USE_WP64_WIN64" value="1" export="always" />
            <con:filepath name="BUILD_HARNESS" value=" $MW_ARCH"
                  export="always" />
            <con:item name="PATH" value="$PACKAGE_HARNESS/bin" export="always"
                  action="add" />
            <con:string name="ROOT_3P_BASE" value="/3rdparty" export="always" />
            <con:list name="nodeGroup" export="never">
                  <con:li value="$nodePlatform" />
                  <con:li value="$stageName" />
            </con:list>
            <con:boolean name="jobSterile" value="0" export="never" />
            <con:string name="nextCluster" value="Bbatmain" export="never"
                  action="add" />
      </con:properties>
</xml-fragment>









The xsd goes something like this:


<xs:schema xmlns:con="http://something/Buildtools" xmlns:xs="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://something/Buildtools">
      <xs:element name="windows">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:architectures" />
                        <xs:element ref="con:properties" />
                  </xs:sequence>
            </xs:complexType>
      </xs:element>
      <xs:element name="unix">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:architectures" />
                        <xs:element ref="con:properties" />
                  </xs:sequence>
            </xs:complexType>
      </xs:element>
      <xs:element name="string">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:string" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
                  <xs:attribute name="action" type="xs:string" />
            </xs:complexType>
      </xs:element>
      <xs:element name="properties">
            <xs:complexType>
                  <xs:choice>
                        <xs:sequence>
                              <xs:choice>
                                    <xs:sequence>
                                          <xs:element ref="con:integer" />
                                          <xs:element ref="con:filepath" />
                                          <xs:element ref="con:item" />
                                          <xs:element ref="con:string" />
                                          <xs:element ref="con:list" />
                                          <xs:element ref="con:boolean" />
                                    </xs:sequence>
                                    <xs:sequence>
                                          <xs:element ref="con:filepath" />
                                          <xs:element ref="con:item" />
                                    </xs:sequence>
                              </xs:choice>
                              <xs:element ref="con:string" />
                        </xs:sequence>
                        <xs:sequence>
                              <xs:element ref="con:string" />
                              <xs:element ref="con:integer" />
                              <xs:element ref="con:filepath" />
                        </xs:sequence>
                        <xs:sequence>
                              <xs:element ref="con:item" />
                              <xs:choice minOccurs="0">
                                    <xs:sequence>
                                          <xs:element ref="con:integer" />
                                          <xs:element ref="con:string" />
                                          <xs:element ref="con:filepath" />
                                    </xs:sequence>
                                    <xs:sequence>
                                          <xs:element ref="con:filepath" />
                                          <xs:element ref="con:string" minOccurs="0" />
                                    </xs:sequence>
                              </xs:choice>
                        </xs:sequence>
                  </xs:choice>
            </xs:complexType>
      </xs:element>
      <xs:element name="platforms">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:windows" />
                        <xs:element ref="con:unix" />
                  </xs:sequence>
            </xs:complexType>
      </xs:element>
      <xs:element name="list">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:li" maxOccurs="unbounded" />
                  </xs:sequence>
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="li">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="item">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:string" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
                  <xs:attribute name="action" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="integer">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:byte" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="filepath">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:string" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="boolean">
            <xs:complexType>
                  <xs:attribute name="value" type="xs:byte" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="export" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="architectures">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:architecture" maxOccurs="unbounded" />
                  </xs:sequence>
            </xs:complexType>
      </xs:element>
      <xs:element name="architecture">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:properties" />
                  </xs:sequence>
                  <xs:attribute name="name" type="xs:string" use="required" />
            </xs:complexType>
      </xs:element>
      <xs:element name="xml-fragment">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="con:platforms" />
                        <xs:element ref="con:properties" />
                  </xs:sequence>
            </xs:complexType>
      </xs:element>
</xs:schema>



The code to access the doc is :

xdoc = XmlFragmentDocument.Factory.parse(inputXMLFile);



The full error trace is :

org.apache.xmlbeans.XmlException: S:\something\build\config\buildtools.xml:0: error: The document is not a xml-fragment@http://something/Buildtools: multiple document elements
                at org.apache.xmlbeans.impl.store.Locale.verifyDocumentType(Locale.java:452)
                at org.apache.xmlbeans.impl.store.Locale.autoTypeDocument(Locale.java:357)
                at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1273)
                at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1257)
                at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
                at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:252)
                at com.mathworks.x2010.bat.x01.propertyflattening.buildtools.XmlFragmentDocument$Factory.parse(Unknown Source)
                at com.mathworks.bat.server.propertyflattening.lib.BuildtoolsUpdaterNew.applyChanges(BuildtoolsUpdaterNew.java:32)
                at com.mathworks.bat.server.system.SystemTestPropertyFlatteningGeneral.testPropertyValueFlattening(SystemTestPropertyFlatteningGeneral.java:51)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
                at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
                at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
                at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
                at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
                at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
                at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
                at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
                at org.junit.runners.Parameterized$TestClassRunnerForParameters.run(Parameterized.java:98)
                at org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
                at org.junit.runners.Parameterized.access$000(Parameterized.java:55)
                at org.junit.runners.Parameterized$1.run(Parameterized.java:131)
                at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
                at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
                at org.junit.runners.Parameterized.run(Parameterized.java:129)
                at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
                at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)




Any help is appreciated.

Sorry for long e-mail...... I tried preparing small sample, but they work like charm, so added the actual one.


Thanks & Regards
- Manoj