diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..64eeaf5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/jing-trang-20091111.tar.xz
diff --git a/.jing-trang.metadata b/.jing-trang.metadata
new file mode 100644
index 0000000..2abbdc8
--- /dev/null
+++ b/.jing-trang.metadata
@@ -0,0 +1 @@
+aae98dcc33ac20a04d5400c57e0cccecfa26beb4 SOURCES/jing-trang-20091111.tar.xz
diff --git a/SOURCES/jing-trang-20091111-build.patch b/SOURCES/jing-trang-20091111-build.patch
new file mode 100644
index 0000000..bb77f92
--- /dev/null
+++ b/SOURCES/jing-trang-20091111-build.patch
@@ -0,0 +1,278 @@
+diff -up jing-trang-20091111/build.xml~ jing-trang-20091111/build.xml
+--- jing-trang-20091111/build.xml~	2009-02-01 06:49:17.000000000 +0200
++++ jing-trang-20091111/build.xml	2010-11-30 22:04:06.391536980 +0200
+@@ -145,22 +145,19 @@
+ 
+ <target name="javadoc" depends="init">
+   <mkdir dir="${build.dir}/api"/>
+-  <mkdir dir="${build.dir}/api/datatype"/>
+   <mkdir dir="${build.dir}/api/jing"/>
+   <mkdir dir="${build.dir}/api/regex"/>
+-  <javadoc sourcepath="mod/datatype/src/main" destdir="${build.dir}/api/datatype"
+-    doctitle="RELAX NG Datatype API" windowtitle="RELAX NG Datatype API"
+-    packagenames="org.relaxng.datatype,org.relaxng.datatype.helpers"/>
+   <javadoc sourcepath="mod/util/src/main:mod/regex/src/main" destdir="${build.dir}/api/regex"
+     packagenames="com.thaiopensource.datatype.xsd.regex,
+ 		  com.thaiopensource.datatype.xsd.regex.java,
+-		  com.thaiopensource.datatype.xsd.regex.xerces2"/>
++		  com.thaiopensource.datatype.xsd.regex.xerces2">
++    <link href="/usr/share/javadoc/java"/>
++  </javadoc>
+   <javadoc sourcepathref="javadoc.sourcepath" destdir="${build.dir}/api/jing"
+     doctitle="Jing API" windowtitle="Jing API"
+     packagenames="${javadoc.packagenames}">
+-    <link offline="true" href="../datatype" packagelistLoc="${build.dir}/api/datatype"/>
+-    <link offline="true" href="http://java.sun.com/j2se/1.5.0/docs/api/"
+-	  packagelistLoc="extapidoc/jdk/1.5"/>
++    <link href="/usr/share/javadoc/java"/>
++    <link href="/usr/share/javadoc/relaxngDatatype"/>
+   </javadoc>
+ </target>
+ 
+@@ -170,7 +167,7 @@
+            destdir="${build.dir}/doccheck"
+            packagenames="${javadoc.packagenames}"
+            doclet="com.sun.tools.doclets.doccheck.DocCheck"
+-           docletpath="lib/doccheck.jar"/>
++           docletpath="${lib.dir}/doccheck.jar"/>
+ </target>
+ 
+ <target name="datatype-sample" depends="jar">
+@@ -290,7 +287,7 @@
+   <java classname="com.thaiopensource.relaxng.translate.Driver"
+         fork="true"
+         failonerror="yes"
+-        classpath="${build.dir}/trang.jar">
++        classpath="${build.dir}/trang.jar:/usr/share/java/relaxngDatatype.jar">
+     <arg value="dtdinst/dtdinst.rnc"/>
+     <arg value="${build.dir}/dtdinst/dtdinst.rng"/>
+   </java>
+@@ -360,7 +357,7 @@
+ 	depends="version,googlecode.properties"
+ 	description="Upload files to Google Code. Run dist before this.">
+   <taskdef classname="net.bluecow.googlecode.ant.GoogleCodeUploadTask"
+-	   classpath="lib/ant-googlecode.jar" name="gcupload"/>
++	   classpath="${lib.dir}/ant-googlecode.jar" name="gcupload"/>
+   <gcupload username="${googlecode.username}" 
+             password="${googlecode.password}" 
+             projectname="jing-trang" 
+diff -up jing-trang-20091111/build.xsl~ jing-trang-20091111/build.xsl
+--- jing-trang-20091111/build.xsl~	2009-02-01 06:49:17.000000000 +0200
++++ jing-trang-20091111/build.xsl	2010-11-30 22:37:55.635536968 +0200
+@@ -10,12 +10,12 @@
+   <project>
+     <xmlproperty file="version.xml"/>
+     <property name="build.dir" value="${{basedir}}/build"/>
+-    <property name="javacc.dir" value="lib"/>
++    <property name="javacc.dir" value="${{lib.dir}}"/>
+     <property name="ant.build.javac.source" value="1.5"/>
+     <property name="ant.build.javac.target" value="1.5"/>
+     <taskdef name="testng" classname="org.testng.TestNGAntTask">
+       <classpath>
+-	<pathelement location="lib/testng.jar"/>
++	<pathelement location="${{lib.dir}}/testng.jar"/>
+       </classpath>
+     </taskdef>
+     <target name="dummy"/>
+@@ -111,7 +111,7 @@
+ 	    <pathelement location="{$build}/mod/{@module}/classes/main"/>
+ 	  </xsl:for-each>
+ 	  <xsl:for-each select="depends[@lib]">
+-	    <pathelement location="lib/{@lib}.jar"/>
++	    <pathelement location="${{lib.dir}}/{@lib}.jar"/>
+ 	  </xsl:for-each>
+ 	</classpath>
+       </javac>
+@@ -151,10 +151,10 @@
+ 	    <pathelement location="{$build}/mod/{@module}/classes/main"/>
+ 	  </xsl:for-each>
+ 	  <xsl:for-each select="depends[@lib]">
+-	    <pathelement location="lib/{@lib}.jar"/>
++	    <pathelement location="${{lib.dir}}/{@lib}.jar"/>
+ 	  </xsl:for-each>
+ 	  <xsl:if test="test[@type='testng']">
+-	    <pathelement location="lib/testng.jar"/>
++	    <pathelement location="${{lib.dir}}/testng.jar"/>
+ 	  </xsl:if>
+ 	</classpath>
+       </javac>
+@@ -298,13 +298,18 @@
+       <classpath>
+ 	<pathelement location="{$build}/{$app}.jar"/>
+ 	<xsl:if test="@lib">
+-	  <pathelement location="lib/{@lib}.jar"/>
++	  <pathelement location="${{lib.dir}}/{@lib}.jar"/>
+ 	  <xsl:if test="@lib='xalan'">
+-	    <pathelement location="lib/serializer.jar"/>
++	    <pathelement location="${{lib.dir}}/xalan-j2-serializer.jar"/>
+ 	  </xsl:if>
+ 	</xsl:if>
++	<!-- Upstream build assumes Class-Path in jing, trang manifests -->
+ 	<xsl:if test="$app = 'jing'">
+-	  <pathelement location="lib/xercesImpl.jar"/>
++	  <pathelement location="${{lib.dir}}/xerces-j2.jar"/>
++	  <pathelement location="${{lib.dir}}/relaxngDatatype.jar"/>
++	</xsl:if>
++	<xsl:if test="$app = 'trang'">
++	  <pathelement location="${{lib.dir}}/relaxngDatatype.jar"/>
+ 	</xsl:if>
+       </classpath>
+     </java>
+@@ -373,7 +378,7 @@
+ 	  <pathelement location="mod/{@module}/src/main"/>
+ 	</xsl:for-each>
+ 	<xsl:for-each select="../depends[@lib]">
+-	  <pathelement location="lib/{@lib}.jar"/>
++	  <pathelement location="${{lib.dir}}/{@lib}.jar"/>
+ 	</xsl:for-each>
+       </classpath>
+     </java>
+@@ -402,8 +407,11 @@
+ 	  <pathelement location="mod/{@module}/src/main"/>
+ 	</xsl:for-each>
+ 	<xsl:for-each select="../depends[@lib]">
+-	  <pathelement location="lib/{@lib}.jar"/>
++	  <pathelement location="${{lib.dir}}/{@lib}.jar"/>
+ 	</xsl:for-each>
++	<!-- Upstream testng.jar includes bsh and qdox -->
++	<pathelement location="${{lib.dir}}/bsh.jar"/>
++	<pathelement location="${{lib.dir}}/qdox.jar"/>
+       </classpath>
+     </testng>
+   </target>
+diff -up jing-trang-20091111/mod/catalog/mod.xml~ jing-trang-20091111/mod/catalog/mod.xml
+--- jing-trang-20091111/mod/catalog/mod.xml~	2008-12-16 05:34:48.000000000 +0200
++++ jing-trang-20091111/mod/catalog/mod.xml	2010-11-30 22:04:06.397536844 +0200
+@@ -3,5 +3,5 @@
+   <test name="unit" type="testng"/>
+   <depends module="util"/>
+   <depends module="resolver"/>
+-  <depends lib="resolver"/>
++  <depends lib="xml-commons-resolver"/>
+ </module>
+diff -up jing-trang-20091111/mod/datatype/mod.xml~ jing-trang-20091111/mod/datatype/mod.xml
+--- jing-trang-20091111/mod/datatype/mod.xml~	2008-10-31 11:51:32.000000000 +0200
++++ jing-trang-20091111/mod/datatype/mod.xml	2010-11-30 22:04:06.398536914 +0200
+@@ -1,4 +1,5 @@
+ <module>
+   <depends module="util"/>
++  <depends lib="relaxngDatatype"/>
+   <compile/>
+ </module>
+diff -up jing-trang-20091111/mod/jing/mod.xml~ jing-trang-20091111/mod/jing/mod.xml
+--- jing-trang-20091111/mod/jing/mod.xml~	2009-11-11 14:24:06.000000000 +0200
++++ jing-trang-20091111/mod/jing/mod.xml	2010-11-30 22:04:06.398536914 +0200
+@@ -21,8 +21,6 @@
+   <jar>
+     <manifest>
+       <attribute name="Main-Class" value="com/thaiopensource/relaxng/util/Driver"/>
+-      <attribute name="Class-Path"
+-		 value="xercesImpl.jar xml-apis.jar saxon.jar saxon9.jar xalan.jar isorelax.jar resolver.jar"/>
+     </manifest>
+     <service type="com.thaiopensource.datatype.xsd.regex.RegexEngine"/>
+     <service type="org.relaxng.datatype.DatatypeLibraryFactory"/>
+diff -up jing-trang-20091111/mod/pattern/mod.xml~ jing-trang-20091111/mod/pattern/mod.xml
+--- jing-trang-20091111/mod/pattern/mod.xml~	2008-12-07 05:37:23.000000000 +0200
++++ jing-trang-20091111/mod/pattern/mod.xml	2010-11-30 22:04:06.399536705 +0200
+@@ -3,6 +3,7 @@
+   <depends module="resolver"/>
+   <depends module="datatype"/>
+   <depends module="rng-parse"/>
++  <depends lib="relaxngDatatype"/>
+   <compile test="yes"/>
+   <test name="unit" type="testng"/>
+ </module>
+diff -up jing-trang-20091111/mod/regex/mod.xml~ jing-trang-20091111/mod/regex/mod.xml
+--- jing-trang-20091111/mod/regex/mod.xml~	2008-11-16 08:53:45.000000000 +0200
++++ jing-trang-20091111/mod/regex/mod.xml	2010-11-30 22:04:06.399536705 +0200
+@@ -1,6 +1,6 @@
+ <module>
+   <depends module="util"/>
+-  <depends lib="xercesImpl"/>
++  <depends lib="xerces-j2"/>
+   <compile test="yes"/>
+   <test name="xerces" type="java"
+ 	class="com.thaiopensource.datatype.xsd.regex.test.TestDriver">
+diff -up jing-trang-20091111/mod/rng-jaxp/mod.xml~ jing-trang-20091111/mod/rng-jaxp/mod.xml
+--- jing-trang-20091111/mod/rng-jaxp/mod.xml~	2008-12-07 05:37:23.000000000 +0200
++++ jing-trang-20091111/mod/rng-jaxp/mod.xml	2010-11-30 22:04:06.400536775 +0200
+@@ -7,6 +7,7 @@
+   <depends module="rng-parse"/>
+   <depends module="pattern"/>
+   <depends module="jaxp"/>
++  <depends lib="relaxngDatatype"/>
+   <compile test="yes"/>
+   <test name="unit" type="testng"/>
+ </module>
+diff -up jing-trang-20091111/mod/rng-validate/mod.xml~ jing-trang-20091111/mod/rng-validate/mod.xml
+--- jing-trang-20091111/mod/rng-validate/mod.xml~	2008-12-16 05:38:57.000000000 +0200
++++ jing-trang-20091111/mod/rng-validate/mod.xml	2010-11-30 22:04:06.401538521 +0200
+@@ -7,6 +7,7 @@
+   <depends module="pattern"/>
+   <depends module="validate"/>
+   <depends lib="ant"/>
++  <depends lib="xml-commons-resolver"/>
+   <test name="spec" type="validate" schema="eg/testSuite.rng"/>
+   <compile/>
+   <version package="com/thaiopensource/relaxng/util"/>
+diff -up jing-trang-20091111/mod/schematron/mod.xml~ jing-trang-20091111/mod/schematron/mod.xml
+--- jing-trang-20091111/mod/schematron/mod.xml~	2009-02-01 06:49:17.000000000 +0200
++++ jing-trang-20091111/mod/schematron/mod.xml	2010-11-30 22:04:06.407540061 +0200
+@@ -3,15 +3,11 @@
+   <depends module="resolver"/>
+   <depends module="validate"/>
+   <depends module="rng-validate"/>
+-  <depends lib="xalan"/>
++  <depends lib="xalan-j2"/>
+   <depends lib="saxon"/>
+-  <depends lib="saxon9"/>
+-  <test name="old-saxon" in="mod/schematron/test/schematrontest.xml"
+-	type="validate" schema="test/schematrontest.nrl"
+-	lib="saxon"/>
+   <test name="new-saxon" in="mod/schematron/test/schematrontest.xml"
+ 	type="validate" schema="test/schematrontest.nrl"
+-	lib="saxon9"/>
++	lib="saxon"/>
+   <test name="xalan" in="mod/schematron/test/schematrontest.xml"
+ 	type="validate" schema="test/schematrontest.nrl"
+ 	lib="xalan"/>
+diff -up jing-trang-20091111/mod/trang/mod.xml~ jing-trang-20091111/mod/trang/mod.xml
+--- jing-trang-20091111/mod/trang/mod.xml~	2008-12-16 11:48:23.000000000 +0200
++++ jing-trang-20091111/mod/trang/mod.xml	2010-11-30 22:04:06.408537058 +0200
+@@ -13,12 +13,12 @@
+   <depends module="convert-to-xsd"/>
+   <depends module="convert-from-dtd"/>
+   <depends module="convert-to-dtd"/>
++  <depends lib="xml-commons-resolver"/>
+   <compile/>
+   <version package="com/thaiopensource/relaxng/translate"/>
+   <jar>
+     <manifest>
+       <attribute name="Main-Class" value="com/thaiopensource/relaxng/translate/Driver"/>
+-      <attribute name="Class-Path" value="resolver.jar"/>
+     </manifest>
+     <service type="com.thaiopensource.datatype.xsd.regex.RegexEngine">
+       <provider classname="com.thaiopensource.datatype.xsd.regex.xerces2.RegexEngineImpl"/>
+diff -up jing-trang-20091111/mod/xerces/mod.xml~ jing-trang-20091111/mod/xerces/mod.xml
+--- jing-trang-20091111/mod/xerces/mod.xml~	2008-11-16 08:53:45.000000000 +0200
++++ jing-trang-20091111/mod/xerces/mod.xml	2010-11-30 22:04:06.414536082 +0200
+@@ -1,7 +1,7 @@
+ <module>
+   <depends module="util"/>
+   <depends module="validate"/>
+-  <depends lib="xercesImpl"/>
++  <depends lib="xerces-j2"/>
+   <compile/>
+   <service type="com.thaiopensource.validate.SchemaReaderFactory">
+     <provider classname="com.thaiopensource.validate.xerces.XsdSchemaReaderFactory"/>
+diff -up jing-trang-20091111/mod/xsd-datatype/mod.xml~ jing-trang-20091111/mod/xsd-datatype/mod.xml
+--- jing-trang-20091111/mod/xsd-datatype/mod.xml~	2008-12-11 03:34:05.000000000 +0200
++++ jing-trang-20091111/mod/xsd-datatype/mod.xml	2010-11-30 22:04:06.415537270 +0200
+@@ -2,6 +2,7 @@
+   <depends module="util"/>
+   <depends module="datatype"/>
+   <depends module="regex"/>
++  <depends lib="relaxngDatatype"/>
+   <test name="xsd" type="validate" transform="xsdtest.xsl" schema="test/xsdtest.rnc"/>
+   <test name="unit" type="testng"/>
+   <compile test="yes"/>
diff --git a/SOURCES/jing-trang-20091111-datatype-sample.patch b/SOURCES/jing-trang-20091111-datatype-sample.patch
new file mode 100644
index 0000000..bb8ed05
--- /dev/null
+++ b/SOURCES/jing-trang-20091111-datatype-sample.patch
@@ -0,0 +1,20 @@
+--- jing-trang-20091111/datatype-sample/build.xml~	2001-09-22 07:10:47.000000000 +0300
++++ jing-trang-20091111/datatype-sample/build.xml	2010-11-30 22:49:33.352540838 +0200
+@@ -1,7 +1,7 @@
+ <project name="RELAX NG Datatype Sample" default="jar" basedir=".">
+ 
+ <property name="build.dir" value="build"/>
+-<property name="jing.jar" value="jing.jar"/>
++<property name="datatype.jar" value="/usr/share/java/relaxngDatatype.jar"/>
+ 
+ <target name="init">
+   <mkdir dir="${build.dir}"/>
+@@ -9,7 +9,7 @@
+ 
+ <target name="compile" depends="init">
+   <mkdir dir="${build.dir}/classes"/>
+-  <javac srcdir="src" destdir="${build.dir}/classes" classpath="${jing.jar}"/>
++  <javac srcdir="src" destdir="${build.dir}/classes" classpath="${datatype.jar}"/>
+ </target>
+ 
+ <target name="jar" depends="compile">
diff --git a/SOURCES/jing-trang-20091111-saxon93-716177.patch b/SOURCES/jing-trang-20091111-saxon93-716177.patch
new file mode 100644
index 0000000..c1c2dc2
--- /dev/null
+++ b/SOURCES/jing-trang-20091111-saxon93-716177.patch
@@ -0,0 +1,19 @@
+diff -up jing-trang-20091111/mod/schematron/src/main/com/thaiopensource/validate/schematron/NewSaxonSchemaReaderFactory.java~ jing-trang-20091111/mod/schematron/src/main/com/thaiopensource/validate/schematron/NewSaxonSchemaReaderFactory.java
+--- jing-trang-20091111/mod/schematron/src/main/com/thaiopensource/validate/schematron/NewSaxonSchemaReaderFactory.java~	2008-11-07 04:49:44.000000000 +0200
++++ jing-trang-20091111/mod/schematron/src/main/com/thaiopensource/validate/schematron/NewSaxonSchemaReaderFactory.java	2011-06-24 11:58:33.065604560 +0300
+@@ -1,6 +1,6 @@
+ package com.thaiopensource.validate.schematron;
+ 
+-import net.sf.saxon.FeatureKeys;
++import net.sf.saxon.lib.FeatureKeys;
+ import net.sf.saxon.TransformerFactoryImpl;
+ 
+ import javax.xml.transform.TransformerFactory;
+@@ -12,6 +12,7 @@ public class NewSaxonSchemaReaderFactory
+   }
+ 
+   public void initTransformerFactory(TransformerFactory factory) {
++    factory.setAttribute(FeatureKeys.XSLT_VERSION, "2.0");
+     factory.setAttribute(FeatureKeys.LINE_NUMBERING, Boolean.TRUE);
+     factory.setAttribute(FeatureKeys.VERSION_WARNING, Boolean.FALSE);
+   }
diff --git a/SOURCES/jing-trang-20091111-xalan.patch b/SOURCES/jing-trang-20091111-xalan.patch
new file mode 100644
index 0000000..ee0cd1f
--- /dev/null
+++ b/SOURCES/jing-trang-20091111-xalan.patch
@@ -0,0 +1,132 @@
+Index: test/saxon.xsl
+===================================================================
+--- test/saxon.xsl	(revision 2353)
++++ test/saxon.xsl	(working copy)
+@@ -1,8 +1,8 @@
+ <?xml version="1.0"?>
+-<xsl:stylesheet version="1.0"
++<xsl:stylesheet version="1.1"
+   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+-  xmlns:saxon="http://icl.com/saxon"
+-  extension-element-prefixes="saxon">
++  xmlns:xalan="http://xml.apache.org/xalan"
++  extension-element-prefixes="xalan">
+ 
+ <xsl:output method="text"/>
+ 
+@@ -10,21 +10,21 @@
+   <xsl:variable name="prepped">
+     <xsl:apply-templates select="*"/>
+   </xsl:variable>
+-  <xsl:apply-templates select="saxon:node-set($prepped)/documents/*" mode="output"/>
++  <xsl:apply-templates select="xalan:nodeset($prepped)/documents/*" mode="output"/>
+ </xsl:template>
+ 
+ <xsl:template match="document" mode="output">
+-  <saxon:output href="{@href}" method="{@method}">
++  <xsl:document href="{@href}" method="{@method}">
+     <xsl:if test="@dtd">
+       <xsl:value-of select="@dtd" disable-output-escaping="yes"/>
+     </xsl:if>
+     <xsl:copy-of select="node()"/>
+-  </saxon:output>
++  </xsl:document>
+ </xsl:template>
+ 
+ <xsl:template match="dir" mode="output">
+   <xsl:value-of select="substring(File:mkdir(File:new(@name)),0,0)" 
+-                xmlns:File="java:java.io.File"/>
++                xmlns:File="xalan://java.io.File"/>
+ </xsl:template>
+ 
+ </xsl:stylesheet>
+Index: mod/schematron/mod.xml
+===================================================================
+--- mod/schematron/mod.xml	(revision 2353)
++++ mod/schematron/mod.xml	(working copy)
+@@ -27,7 +27,7 @@
+       <xslt style="mod/schematron/lib/xsltc-fixup.xsl"
+ 	    in="mod/schematron/src/main/${mod.schematron.respackage}/schematron.xsl"
+ 	    out="${mod.schematron.resdir}/schematron-xsltc.xsl">
+-	<factory name="com.icl.saxon.TransformerFactoryImpl"/>
++	<factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+       </xslt>
+     </target>
+   </ant>
+Index: mod/xsd-datatype/test/xsdtest.xml
+===================================================================
+--- mod/xsd-datatype/test/xsdtest.xml	(revision 2353)
++++ mod/xsd-datatype/test/xsdtest.xml	(working copy)
+@@ -739,7 +739,9 @@
+ <length value="0"></length>
+ <length value="1">x</length>
+ <length value="1"> x </length>
++<!-- xalan creates invalid XML out of this: &#55298;&#56320;
+ <length value="1">&#x10800;</length>
++-->
+ </datatype>
+ <datatype name="language">
+ <valid>en</valid>
+Index: build.xml
+===================================================================
+--- build.xml	(revision 2353)
++++ build.xml	(working copy)
+@@ -40,7 +40,7 @@
+ 
+ <target name="modbuild" depends="modules,check-modbuild" unless="modbuild-ok">
+   <xslt style="build.xsl" in="modules.xml" out="modbuild.xml" force="true">
+-    <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++    <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+   </xslt>
+ </target>
+ 
+@@ -74,7 +74,7 @@
+ 	includes="${moddir}/*/${modfile}"
+ 	filedirparameter="name"
+ 	destdir=".">
+-    <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++    <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+     <regexpmapper from="mod/([-a-zA-Z0-9_]*)/mod.xml"
+ 		  to="mod/\1/\1.iml"
+ 		  handledirsep="true"/>
+@@ -183,15 +183,15 @@
+ <target name="jing-doc" depends="version">
+   <xslt basedir="doc" destdir="${build.dir}" includes="derivative.xml"
+         style="doc/derivative.xsl">
+-    <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++    <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+   </xslt>
+   <xslt basedir="doc" destdir="${build.dir}" includes="design.xml"
+         style="doc/design.xsl">
+-    <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++    <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+   </xslt>
+   <xslt basedir="doc" destdir="${build.dir}" includes="nrl.xml"
+         style="doc/nrl.xsl">
+-    <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++    <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+   </xslt>
+   <copy todir="${build.dir}">
+     <fileset dir="doc" includes="*.html"/>
+Index: build.xsl
+===================================================================
+--- build.xsl	(revision 2353)
++++ build.xsl	(working copy)
+@@ -325,7 +325,7 @@
+       <xslt style="{$srctestdir}/{@transform}"
+ 	    in="{$srctest}"
+ 	    out="{$runtestdir}/{@name}test.xml">
+-	<factory name="com.icl.saxon.TransformerFactoryImpl"/>
++	<factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+       </xslt>
+       <!-- XXX Could validate intermediate result against a schema -->
+     </xsl:if>
+@@ -341,7 +341,7 @@
+ 	  </xsl:otherwise>
+ 	</xsl:choose>
+       </xsl:attribute>
+-      <factory name="com.icl.saxon.TransformerFactoryImpl"/>
++      <factory name="org.apache.xalan.processor.TransformerFactoryImpl"/>
+       <param name="dir" expression="{$runtestdir}"/>
+     </xslt>
+   </target>
diff --git a/SOURCES/jing-trang-prepare-tarball.sh b/SOURCES/jing-trang-prepare-tarball.sh
new file mode 100755
index 0000000..388a10e
--- /dev/null
+++ b/SOURCES/jing-trang-prepare-tarball.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+release=${1:-\
+    $(rpm -q --specfile --qf='%{VERSION}\n' jing-trang.spec | head -n 1)}
+
+rm -rf jing-trang-$release
+svn export http://jing-trang.googlecode.com/svn/tags/V$release \
+    jing-trang-$release
+tar cv jing-trang-$release --exclude "*.jar" --exclude gcj \
+    --exclude mod/datatype/src/main/org | \
+    xz --best > jing-trang-$release.tar.xz
diff --git a/SPECS/jing-trang.spec b/SPECS/jing-trang.spec
new file mode 100644
index 0000000..56ba576
--- /dev/null
+++ b/SPECS/jing-trang.spec
@@ -0,0 +1,215 @@
+# TODO:
+# - Install dtdinst's schemas, XSL etc as non-doc and to system catalogs?
+# - Drop isorelax and xerces license texts and references to them because
+#   our package does not actually contain them?
+
+%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
+%global headless -headless
+%endif
+
+Name:           jing-trang
+Version:        20091111
+Release:        14%{?dist}
+Summary:        Schema validation and conversion based on RELAX NG
+
+Group:          Applications/Text
+License:        BSD
+URL:            http://code.google.com/p/jing-trang/
+# Source0 generated with Source99, upstream does not distribute archives
+# containing the complete build system
+Source0:        %{name}-%{version}.tar.xz
+Source99:       %{name}-prepare-tarball.sh
+# Applicable parts submitted upstream:
+# http://code.google.com/p/jing-trang/issues/detail?id=129
+# http://code.google.com/p/jing-trang/issues/detail?id=130
+Patch0:         %{name}-20091111-build.patch
+# Saxon "HE" doesn't work for this, no old Saxon available, details in #655601
+Patch1:         %{name}-20091111-xalan.patch
+Patch2:         %{name}-20091111-datatype-sample.patch
+# http://code.google.com/p/jing-trang/source/detail?r=2356, #716177
+Patch3:         %{name}-20091111-saxon93-716177.patch
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch:      noarch
+
+%if 0%{?rhel} && 0%{?rhel} < 7
+BuildRequires:  ant-trax
+%else
+BuildRequires:  ant >= 1.8.2
+%endif
+BuildRequires:  bsh
+BuildRequires:  isorelax
+BuildRequires:  java-devel-openjdk >= 1:1.6.0
+BuildRequires:  java-javadoc
+BuildRequires:  javacc
+BuildRequires:  jpackage-utils
+BuildRequires:  qdox
+BuildRequires:  relaxngDatatype
+BuildRequires:  relaxngDatatype-javadoc
+BuildRequires:  saxon >= 9.3
+BuildRequires:  testng
+BuildRequires:  xalan-j2
+BuildRequires:  xerces-j2
+BuildRequires:  xml-commons-resolver
+
+%description
+%{summary}.
+
+%package     -n jing
+Summary:        RELAX NG validator in Java
+Group:          Applications/Text
+Requires:       jpackage-utils
+Requires:       java%{?headless} >= 1.5.0
+Requires:       relaxngDatatype
+Requires:       xerces-j2
+Requires:       xml-commons-resolver
+
+%description -n jing
+Jing is a RELAX NG validator written in Java.  It implements the RELAX
+NG 1.0 Specification, RELAX NG Compact Syntax, and parts of RELAX NG
+DTD Compatibility, specifically checking of ID/IDREF/IDREFS.  It also
+has experimental support for schema languages other than RELAX NG;
+specifically W3C XML Schema, Schematron 1.5, and Namespace Routing
+Language.
+
+%package     -n jing-javadoc
+Summary:        Javadoc API documentation for Jing
+Group:          Documentation
+Requires:       java-javadoc
+Requires:       relaxngDatatype-javadoc
+
+%description -n jing-javadoc
+Javadoc API documentation for Jing.
+
+%package     -n trang
+Summary:        Multi-format schema converter based on RELAX NG
+Group:          Applications/Text
+Requires:       jpackage-utils
+Requires:       java%{?headless} >= 1.5.0
+Requires:       relaxngDatatype
+Requires:       xerces-j2
+Requires:       xml-commons-resolver
+
+%description -n trang
+Trang converts between different schema languages for XML.  It
+supports the following languages: RELAX NG (both XML and compact
+syntax), XML 1.0 DTDs, W3C XML Schema.  A schema written in any of the
+supported schema languages can be converted into any of the other
+supported schema languages, except that W3C XML Schema is supported
+for output only, not for input.
+
+%package     -n dtdinst
+Summary:        XML DTD to XML instance format converter
+Group:          Applications/Text
+Requires:       jpackage-utils
+Requires:       java%{?headless} >= 1.5.0
+
+%description -n dtdinst
+DTDinst is a program for converting XML DTDs into an XML instance
+format.
+
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p0
+%patch2 -p1
+%patch3 -p1
+sed -i -e 's/\r//g' lib/isorelax.copying.txt
+find . -name "OldSaxon*.java" -delete # No "old" saxon available in Fedora
+
+
+%build
+CLASSPATH=$(build-classpath beust-jcommander xalan-j2 xalan-j2-serializer) \
+%ant -Dlib.dir=%{_javadir} -Dbuild.sysclasspath=last dist
+
+
+%install
+rm -rf $RPM_BUILD_ROOT *-%{version}
+
+install -dm 755 $RPM_BUILD_ROOT{%{_javadir},%{_javadocdir}}
+
+%{__unzip} build/dist/jing-%{version}.zip
+install -Dpm 644 jing-%{version}/bin/jing.jar $RPM_BUILD_ROOT%{_javadir}
+mv jing-%{version}/doc/api $RPM_BUILD_ROOT%{_javadocdir}/jing
+ln -s %{_javadocdir}/jing jing-%{version}/doc/api
+rm -f jing-%{version}/sample/datatype/datatype-sample.jar
+%jpackage_script com.thaiopensource.relaxng.util.Driver "" "" jing:relaxngDatatype:xml-commons-resolver:xerces-j2 jing true
+
+%{__unzip} build/dist/trang-%{version}.zip
+install -pm 644 trang-%{version}/trang.jar $RPM_BUILD_ROOT%{_javadir}
+%jpackage_script com.thaiopensource.relaxng.translate.Driver "" "" trang:relaxngDatatype:xml-commons-resolver:xerces-j2 trang true
+
+%{__unzip} build/dist/dtdinst-%{version}.zip
+install -pm 644 dtdinst-%{version}/dtdinst.jar $RPM_BUILD_ROOT%{_javadir}
+%jpackage_script com.thaiopensource.xml.dtd.app.Driver "" "" dtdinst dtdinst true
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%files -n jing
+%defattr(-,root,root,-)
+%doc jing-%{version}/{readme.html,doc,sample}
+%{_bindir}/jing
+%{_javadir}/jing.jar
+
+%files -n jing-javadoc
+%defattr(-,root,root,-)
+%doc jing-%{version}/doc/{copying.html,isorelax.copying.txt,xerces.copying.txt}
+%{_javadocdir}/jing/
+
+%files -n trang
+%defattr(-,root,root,-)
+%doc trang-%{version}/*.{txt,html}
+%{_bindir}/trang
+%{_javadir}/trang.jar
+
+%files -n dtdinst
+%defattr(-,root,root,-)
+%doc dtdinst-%{version}/{*.{txt,html,rng,xsl},example}
+%{_bindir}/dtdinst
+%{_javadir}/dtdinst.jar
+
+
+%changelog
+* Tue Jan 07 2014 Jan Pokorný <jpokorny@redhat.com> - 20091111-14
+- Resync with recent spec file changes in Fedora by Ville Skyttä:
+- BuildRequire ant instead of -trax (non-EL).
+- Depend on headless JRE where available.
+- Fix build (#1048867) and depend on headless JRE on EL7
+
+* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 20091111-13
+- Mass rebuild 2013-12-27
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20091111-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20091111-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed Jan 11 2012 Ville Skyttä <ville.skytta@iki.fi> - 20091111-10
+- Tweak java-devel build dep for buildability without Java 1.6.
+- Fix build classpath with recent TestNG.
+
+* Fri Jun 24 2011 Ville Skyttä <ville.skytta@iki.fi> - 20091111-9
+- Apply upstream Saxon >= 9.3 patch (#716177).
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20091111-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Dec  2 2010 Ville Skyttä <ville.skytta@iki.fi> - 20091111-7
+- Put Xalan instead of Saxon in build path (regression in -6).
+- Build with OpenJDK.
+
+* Tue Nov 30 2010 Ville Skyttä <ville.skytta@iki.fi> - 20091111-6
+- Address more comments/TODO's from #655601:
+- Patch test suite generation to use Xalan.
+- Include license texts in jing-javadoc.
+- Make datatype-sample buildable out of the box, drop prebuilt jar.
+
+* Mon Nov 29 2010 Ville Skyttä <ville.skytta@iki.fi> - 20091111-5
+- Simplify doc installation (#655601).
+
+* Sun Nov 28 2010 Ville Skyttä <ville.skytta@iki.fi> - 20091111-4
+- First Fedora build, combining my earlier separate jing and trang packages.