diff --git a/assembly/pom.xml b/assembly/pom.xml
index 784fb71..063e28e 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -127,6 +127,18 @@
             <artifactId>org.apache.felix.bundlerepository</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.stax-api-1.0</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.jaxp-api-1.3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jaxp-ri</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
             <artifactId>org.apache.servicemix.bundles.mina</artifactId>
         </dependency>
diff --git a/assembly/src/main/descriptors/unix-bin.xml b/assembly/src/main/descriptors/unix-bin.xml
index b710652..68d1b23 100644
--- a/assembly/src/main/descriptors/unix-bin.xml
+++ b/assembly/src/main/descriptors/unix-bin.xml
@@ -171,6 +171,16 @@
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.mina</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxp-ri</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <outputFileNameMapping>org/apache/servicemix/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.jaxp-api-1.3</include>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.0</include>
             </includes>
         </dependencySet>
         <dependencySet>
diff --git a/assembly/src/main/descriptors/windows-bin.xml b/assembly/src/main/descriptors/windows-bin.xml
index 1edfd23..5817392 100644
--- a/assembly/src/main/descriptors/windows-bin.xml
+++ b/assembly/src/main/descriptors/windows-bin.xml
@@ -163,6 +163,16 @@
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
                 <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.mina</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxp-ri</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <outputFileNameMapping>org/apache/servicemix/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.jaxp-api-1.3</include>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.0</include>
             </includes>
         </dependencySet>
         <dependencySet>
diff --git a/assembly/src/main/distribution/text/etc/config.properties b/assembly/src/main/distribution/text/etc/config.properties
index 6ebcc0a..e6c6246 100644
--- a/assembly/src/main/distribution/text/etc/config.properties
+++ b/assembly/src/main/distribution/text/etc/config.properties
@@ -26,11 +26,6 @@
  org.osgi.service.url; version=1.0.0, \
  org.apache.servicemix.kernel.main.spi; version=1.0.0, \
  org.apache.servicemix.kernel.jaas.boot, \
- com.sun.org.apache.xalan.internal.xsltc.trax, \
- com.sun.org.apache.xerces.internal.dom, \
- com.sun.org.apache.xerces.internal.jaxp, \
- com.sun.org.apache.xerces.internal.jaxp.datatype, \
- com.sun.org.apache.xerces.internal.xni, \
  ${jre-${java.specification.version}}
 org.osgi.framework.bootdelegation=sun.*,com.sun.management*,
 
@@ -129,16 +124,6 @@
  javax.swing.text.rtf; \
  javax.swing.tree; \
  javax.swing.undo; \
- javax.xml; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -169,19 +154,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.5.0"
@@ -267,39 +239,6 @@
  javax.swing.tree; \
  javax.swing.undo; \
  javax.tools; \
- javax.xml; \
- javax.xml.bind; \
- javax.xml.bind.annotation; \
- javax.xml.bind.annotation.adapters; \
- javax.xml.bind.attachment; \
- javax.xml.bind.helpers; \
- javax.xml.bind.util; \
- javax.xml.crypto; \
- javax.xml.crypto.dom; \
- javax.xml.crypto.dsig; \
- javax.xml.crypto.dsig.dom; \
- javax.xml.crypto.dsig.keyinfo; \
- javax.xml.crypto.dsig.spec; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.soap; \
- javax.xml.stream; \
- javax.xml.stream.events; \
- javax.xml.stream.util; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.ws; \
- javax.xml.ws.handler; \
- javax.xml.ws.handler.soap; \
- javax.xml.ws.http; \
- javax.xml.ws.soap; \
- javax.xml.ws.spi; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -330,20 +269,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.w3c.dom.xpath; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.6.0"
diff --git a/assembly/src/main/filtered-resources/etc/startup.properties b/assembly/src/main/filtered-resources/etc/startup.properties
index 4a19a2b..28588b2 100644
--- a/assembly/src/main/filtered-resources/etc/startup.properties
+++ b/assembly/src/main/filtered-resources/etc/startup.properties
@@ -25,6 +25,9 @@
 #
 org/ops4j/pax/url/pax-url-mvn/${pax.url.version}/pax-url-mvn-${pax.url.version}.jar=5
 org/apache/geronimo/specs/geronimo-servlet_2.5_spec/${geronimo.servlet.version}/geronimo-servlet_2.5_spec-${geronimo.servlet.version}.jar=10
+org/apache/servicemix/specs/org.apache.servicemix.specs.jaxp-api-1.3/${servicemix.specs.version}/org.apache.servicemix.specs.jaxp-api-1.3-${servicemix.specs.version}.jar=10
+org/apache/servicemix/specs/org.apache.servicemix.specs.stax-api-1.0/${servicemix.specs.version}/org.apache.servicemix.specs.stax-api-1.0-${servicemix.specs.version}.jar=10
+org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxp-ri/${jaxp.ri.version}/org.apache.servicemix.bundles.jaxp-ri-${jaxp.ri.version}.jar=10
 org/apache/felix/org.osgi.compendium/${felix.compendium.version}/org.osgi.compendium-${felix.compendium.version}.jar=10
 org/apache/felix/org.apache.felix.configadmin/${felix.configadmin.version}/org.apache.felix.configadmin-${felix.configadmin.version}.jar=10
 org/apache/servicemix/kernel/org.apache.servicemix.kernel.filemonitor/${pom.version}/org.apache.servicemix.kernel.filemonitor-${pom.version}.jar=15
diff --git a/gshell/gshell-admin/src/main/resources/org/apache/servicemix/kernel/gshell/admin/etc/config.properties b/gshell/gshell-admin/src/main/resources/org/apache/servicemix/kernel/gshell/admin/etc/config.properties
index 6ebcc0a..e6c6246 100644
--- a/gshell/gshell-admin/src/main/resources/org/apache/servicemix/kernel/gshell/admin/etc/config.properties
+++ b/gshell/gshell-admin/src/main/resources/org/apache/servicemix/kernel/gshell/admin/etc/config.properties
@@ -26,11 +26,6 @@
  org.osgi.service.url; version=1.0.0, \
  org.apache.servicemix.kernel.main.spi; version=1.0.0, \
  org.apache.servicemix.kernel.jaas.boot, \
- com.sun.org.apache.xalan.internal.xsltc.trax, \
- com.sun.org.apache.xerces.internal.dom, \
- com.sun.org.apache.xerces.internal.jaxp, \
- com.sun.org.apache.xerces.internal.jaxp.datatype, \
- com.sun.org.apache.xerces.internal.xni, \
  ${jre-${java.specification.version}}
 org.osgi.framework.bootdelegation=sun.*,com.sun.management*,
 
@@ -129,16 +124,6 @@
  javax.swing.text.rtf; \
  javax.swing.tree; \
  javax.swing.undo; \
- javax.xml; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -169,19 +154,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.5.0"
@@ -267,39 +239,6 @@
  javax.swing.tree; \
  javax.swing.undo; \
  javax.tools; \
- javax.xml; \
- javax.xml.bind; \
- javax.xml.bind.annotation; \
- javax.xml.bind.annotation.adapters; \
- javax.xml.bind.attachment; \
- javax.xml.bind.helpers; \
- javax.xml.bind.util; \
- javax.xml.crypto; \
- javax.xml.crypto.dom; \
- javax.xml.crypto.dsig; \
- javax.xml.crypto.dsig.dom; \
- javax.xml.crypto.dsig.keyinfo; \
- javax.xml.crypto.dsig.spec; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.soap; \
- javax.xml.stream; \
- javax.xml.stream.events; \
- javax.xml.stream.util; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.ws; \
- javax.xml.ws.handler; \
- javax.xml.ws.handler.soap; \
- javax.xml.ws.http; \
- javax.xml.ws.soap; \
- javax.xml.ws.spi; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -330,20 +269,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.w3c.dom.xpath; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.6.0"
diff --git a/pom.xml b/pom.xml
index cd0c346..7ef48fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,7 @@
         <felix.prefs.version>1.0.2</felix.prefs.version>
         <geronimo.servlet.version>1.1.2</geronimo.servlet.version>
         <gshell.version>1.0-alpha-2-r654638</gshell.version>
+        <jaxp.ri.version>1.4.2_1-SNAPSHOT</jaxp.ri.version>
         <junit.version>4.4_1</junit.version>
         <jline.version>0.9.94</jline.version>
         <log4j.version>1.2.14</log4j.version>
@@ -85,7 +86,7 @@
         <pax.logging.version>1.1.1</pax.logging.version>
         <pax.url.version>0.3.2</pax.url.version>
         <servicemix.legal.version>1.0</servicemix.legal.version>
-        <servicemix.specs.version>1.1.0</servicemix.specs.version>
+        <servicemix.specs.version>1.2-SNAPSHOT</servicemix.specs.version>
         <spring.osgi.version>1.1.0</spring.osgi.version>
         <spring.version>2.5.5</spring.version>
         <woodstox.version>3.2.7_1</woodstox.version>
@@ -581,6 +582,16 @@
                 <version>${servicemix.specs.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.servicemix.specs</groupId>
+                <artifactId>org.apache.servicemix.specs.jaxp-api-1.3</artifactId>
+                <version>${servicemix.specs.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.servicemix.bundles</groupId>
+                <artifactId>org.apache.servicemix.bundles.jaxp-ri</artifactId>
+                <version>${jaxp.ri.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.apache.servicemix.bundles</groupId>
                 <artifactId>org.apache.servicemix.bundles.woodstox</artifactId>
                 <version>${woodstox.version}</version>
diff --git a/testing/itests/pom.xml b/testing/itests/pom.xml
index 12cb803..bf0ecc4 100644
--- a/testing/itests/pom.xml
+++ b/testing/itests/pom.xml
@@ -45,10 +45,20 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.jaxp-api-1.3</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
             <artifactId>org.apache.servicemix.bundles.woodstox</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jaxp-ri</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/testing/itests/src/test/java/org/apache/servicemix/kernel/testing/itests/SimpleTest.java b/testing/itests/src/test/java/org/apache/servicemix/kernel/testing/itests/SimpleTest.java
index 315bc0e..790ba47 100644
--- a/testing/itests/src/test/java/org/apache/servicemix/kernel/testing/itests/SimpleTest.java
+++ b/testing/itests/src/test/java/org/apache/servicemix/kernel/testing/itests/SimpleTest.java
@@ -17,11 +17,20 @@
 package org.apache.servicemix.kernel.testing.itests;
 
 import javax.xml.stream.XMLInputFactory;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.validation.SchemaFactory;
 
 import org.apache.servicemix.kernel.testing.support.AbstractIntegrationTest;
+import org.osgi.framework.Bundle;
 
 public class SimpleTest extends AbstractIntegrationTest {
 
+    static {
+        System.setProperty("jaxp.debug", "true");
+        System.setProperty("org.apache.servicemix.specs.debug", "true");
+    }
+
     /**
 	 * The manifest to use for the "virtual bundle" created
 	 * out of the test classes and resources in this project
@@ -51,38 +60,55 @@
 	protected String[] getTestBundlesNames() {
         return new String[] {
             getBundle("org.apache.servicemix.specs", "org.apache.servicemix.specs.stax-api-1.0"),
+            getBundle("org.apache.servicemix.specs", "org.apache.servicemix.specs.jaxp-api-1.3"),
 		};
 	}
 
     public void testDocumentBuilderFactory() throws Exception {
-		assertNotNull(javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
+        try {
+            DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+            fail("Implementation should not have been found");
+        } catch (Throwable t) {
+        }
+        Bundle b = installBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxp-ri", null, "jar");
+        Thread.sleep(100);
+		assertNotNull(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
+        b.uninstall();
     }
 
     public void testTransformerFactory() throws Exception {
-        assertNotNull(javax.xml.transform.TransformerFactory.newInstance().newTransformer());
+        try {
+            TransformerFactory.newInstance().newTransformer();
+            fail("Implementation should not have been found");
+        } catch (Throwable t) {
+        }
+        Bundle b = installBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxp-ri", null, "jar");
+        Thread.sleep(100);
+        assertNotNull(TransformerFactory.newInstance().newTransformer());
+        b.uninstall();
     }
 
     public void testSchemaFactory() throws Exception {
-        assertNotNull(javax.xml.validation.SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema").newSchema());
+        try {
+            SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema").newSchema();
+            fail("Implementation should not have been found");
+        } catch (Throwable t) {
+        }
+        Bundle b = installBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxp-ri", null, "jar");
+        Thread.sleep(100);
+        assertNotNull(SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema").newSchema());
+        b.uninstall();
     }
 
     public void testWoodstox() throws Exception {
-        //JDK 1.6 and above ship with a StaX implementation 
-        if (System.getProperty("java.version").startsWith("1.5")) {
-            Thread.currentThread().setContextClassLoader(XMLInputFactory.class.getClassLoader());
-            System.err.println(XMLInputFactory.class.getClassLoader());
-            System.err.println(getClass().getClassLoader());
-            XMLInputFactory factory = null;
-            try {
-                factory = XMLInputFactory.newInstance();
-                fail("Factory should not have been found");
-            } catch (Throwable t) {
-                System.err.println(t.getMessage());
-            }
-            assertNull(factory);
-            installBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.woodstox", null, "jar");
-            assertNotNull(XMLInputFactory.newInstance());
+        try {
+            XMLInputFactory.newInstance();
+            fail("Implementation should not have been found");
+        } catch (Throwable t) {
         }
+        Bundle b = installBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxp-ri", null, "jar");
+        assertNotNull(XMLInputFactory.newInstance());
+        b.uninstall();
     }
 
 }
diff --git a/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/AbstractIntegrationTest.java b/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/AbstractIntegrationTest.java
index c1fe17f..a580740 100644
--- a/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/AbstractIntegrationTest.java
+++ b/testing/support/src/main/java/org/apache/servicemix/kernel/testing/support/AbstractIntegrationTest.java
@@ -110,11 +110,12 @@
 		};
     }
 
-    protected void installBundle(String groupId, String artifactId, String classifier, String type) throws Exception {
+    protected Bundle installBundle(String groupId, String artifactId, String classifier, String type) throws Exception {
         String version = getBundleVersion(groupId, artifactId);
         File loc = localMavenBundle(groupId, artifactId, version, classifier, type);
         Bundle bundle = bundleContext.installBundle(loc.toURI().toString());
         bundle.start();
+        return bundle;
     }
 
     protected Resource locateBundle(String bundleId) {
diff --git a/testing/support/src/main/resources/org/apache/servicemix/kernel/testing/support/felix.config.properties b/testing/support/src/main/resources/org/apache/servicemix/kernel/testing/support/felix.config.properties
index fd64202..e6c6246 100644
--- a/testing/support/src/main/resources/org/apache/servicemix/kernel/testing/support/felix.config.properties
+++ b/testing/support/src/main/resources/org/apache/servicemix/kernel/testing/support/felix.config.properties
@@ -26,12 +26,6 @@
  org.osgi.service.url; version=1.0.0, \
  org.apache.servicemix.kernel.main.spi; version=1.0.0, \
  org.apache.servicemix.kernel.jaas.boot, \
- com.sun.org.apache.xalan.internal.xsltc.trax, \
- com.sun.org.apache.xerces.internal.dom, \
- com.sun.org.apache.xerces.internal.jaxp, \
- com.sun.org.apache.xerces.internal.jaxp.datatype, \
- com.sun.org.apache.xerces.internal.jaxp.validation.xs, \
- com.sun.org.apache.xerces.internal.xni, \
  ${jre-${java.specification.version}}
 org.osgi.framework.bootdelegation=sun.*,com.sun.management*,
 
@@ -130,16 +124,6 @@
  javax.swing.text.rtf; \
  javax.swing.tree; \
  javax.swing.undo; \
- javax.xml; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -170,19 +154,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.5.0"
@@ -268,39 +239,6 @@
  javax.swing.tree; \
  javax.swing.undo; \
  javax.tools; \
- javax.xml; \
- javax.xml.bind; \
- javax.xml.bind.annotation; \
- javax.xml.bind.annotation.adapters; \
- javax.xml.bind.attachment; \
- javax.xml.bind.helpers; \
- javax.xml.bind.util; \
- javax.xml.crypto; \
- javax.xml.crypto.dom; \
- javax.xml.crypto.dsig; \
- javax.xml.crypto.dsig.dom; \
- javax.xml.crypto.dsig.keyinfo; \
- javax.xml.crypto.dsig.spec; \
- javax.xml.datatype; \
- javax.xml.namespace; \
- javax.xml.parsers; \
- javax.xml.soap; \
- javax.xml.stream; \
- javax.xml.stream.events; \
- javax.xml.stream.util; \
- javax.xml.transform; \
- javax.xml.transform.dom; \
- javax.xml.transform.sax; \
- javax.xml.transform.stax; \
- javax.xml.transform.stream; \
- javax.xml.validation; \
- javax.xml.ws; \
- javax.xml.ws.handler; \
- javax.xml.ws.handler.soap; \
- javax.xml.ws.http; \
- javax.xml.ws.soap; \
- javax.xml.ws.spi; \
- javax.xml.xpath; \
  org.ietf.jgss; \
  org.omg.CORBA; \
  org.omg.CORBA_2_3; \
@@ -331,20 +269,6 @@
  org.omg.SendingContext; \
  org.omg.stub.java.rmi; \
  org.omg.stub.javax.management.remote.rmi; \
- org.w3c.dom; \
- org.w3c.dom.bootstrap; \
- org.w3c.dom.css; \
- org.w3c.dom.events; \
- org.w3c.dom.html; \
- org.w3c.dom.ls; \
- org.w3c.dom.ranges; \
- org.w3c.dom.stylesheets; \
- org.w3c.dom.traversal; \
- org.w3c.dom.views; \
- org.w3c.dom.xpath; \
- org.xml.sax; \
- org.xml.sax.ext; \
- org.xml.sax.helpers; \
  sun.misc; \
  sun.reflect; \
  version="1.6.0"
