diff --git a/.cvsignore b/.cvsignore
index e69de29..b19ef76 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -0,0 +1 @@
+xml-stylebook-1.0.tar.gz
diff --git a/sources b/sources
index e69de29..66e7a35 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+11b3e4d6e4e2b45ceb161b99c91b2893 xml-stylebook-1.0.tar.gz
diff --git a/xml-stylebook-build-javadoc.patch b/xml-stylebook-build-javadoc.patch
new file mode 100644
index 0000000..852a3ea
--- /dev/null
+++ b/xml-stylebook-build-javadoc.patch
@@ -0,0 +1,63 @@
+--- build.xml 2004-12-14 15:54:50.000000000 +0000
++++ build.xml 2010-01-11 21:02:34.783136703 +0000
+@@ -54,17 +54,16 @@
+
+
+
++
+
+
+-
+-
+-
+
+
+
+
+
+
++
+
+
+
+@@ -88,13 +87,12 @@
+
+
+
+-
+
+
+
+
+
+-
++
+
+
+
+@@ -103,4 +101,25 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
+
diff --git a/xml-stylebook-image-printer.patch b/xml-stylebook-image-printer.patch
new file mode 100644
index 0000000..9b40c5c
--- /dev/null
+++ b/xml-stylebook-image-printer.patch
@@ -0,0 +1,35 @@
+--- src/org/apache/stylebook/printers/ImagePrinter.java 1999-11-30 07:28:54.000000000 -0500
++++ src/org/apache/stylebook/printers/ImagePrinter.java 2009-01-07 17:00:13.802150149 -0500
+@@ -8,7 +8,10 @@
+ package org.apache.stylebook.printers;
+
+ import org.apache.stylebook.*;
+-import com.sun.image.codec.jpeg.*;
++import javax.imageio.*;
++import javax.imageio.plugins.jpeg.*;
++import javax.imageio.metadata.*;
++import javax.imageio.stream.*;
+ import java.io.IOException;
+ import java.io.OutputStream;
+ import java.io.PrintStream;
+@@ -144,11 +147,15 @@
+ }
+ }
+
+- // Write out image (highest quality for jpeg data)
+- JPEGEncodeParam jpar=JPEGCodec.getDefaultJPEGEncodeParam(img);
+- jpar.setQuality(1,true);
+- JPEGImageEncoder jenc=JPEGCodec.createJPEGEncoder(out,jpar);
+- jenc.encode(img);
++ ImageWriter encoder = (ImageWriter)ImageIO.getImageWritersByFormatName("JPEG").next();
++ JPEGImageWriteParam param = new JPEGImageWriteParam(null);
++
++ param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
++ param.setCompressionQuality(1);
++
++ encoder.setOutput(ImageIO.createImageOutputStream(out));
++ encoder.write((IIOMetadata) null, new IIOImage(img,null,null), param);
++
+ out.flush();
+ }
+
diff --git a/xml-stylebook.spec b/xml-stylebook.spec
new file mode 100644
index 0000000..2900963
--- /dev/null
+++ b/xml-stylebook.spec
@@ -0,0 +1,129 @@
+Name: xml-stylebook
+Version: 1.0
+Release: 0.3.b3_xalan2.svn313293%{?dist}
+Summary: Apache XML Stylebook
+Group: Development/Libraries
+License: ASL 1.1
+URL: http://xml.apache.org/
+
+# How to generate this tarball:
+# $ svn export http://svn.apache.org/repos/asf/xml/stylebook/trunk/@313293 xml-stylebook-1.0
+# $ tar zcf xml-stylebook-1.0.tar.gz xml-stylebook-1.0
+Source0: %{name}-%{version}.tar.gz
+
+# Patch to fix an NPE in Xalan-J2's docs generation (from JPackage)
+Patch0: %{name}-image-printer.patch
+
+# Patch the build script to build javadocs
+Patch1: %{name}-build-javadoc.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch: noarch
+
+BuildRequires: java-devel >= 1:1.6.0
+BuildRequires: jpackage-utils
+BuildRequires: ant
+BuildRequires: jaxp_parser_impl
+BuildRequires: dejavu-sans-fonts
+Requires: java >= 1:1.6.0
+Requires: jpackage-utils
+
+%description
+Apache XML Stylebook is a HTML documentation generator.
+
+%package javadoc
+Summary: Javadocs for %{name}
+Group: Documentation
+Requires: %{name} = %{version}-%{release}
+
+%description javadoc
+API documentation for %{name}.
+
+%package demo
+Summary: Examples for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description demo
+Examples demonstrating the use of %{name}.
+
+%prep
+%setup -q
+%patch0 -p0
+%patch1 -p0
+
+# Remove bundled binaries
+rm -r bin/*.jar
+
+# Make sure upstream hasn't sneaked in any jars we don't know about
+JARS=""
+for j in `find -name "*.jar"`; do
+ if [ ! -L $j ]; then
+ JARS="$JARS $j"
+ fi
+done
+if [ ! -z "$JARS" ]; then
+ echo "These jars should be deleted and symlinked to system jars: $JARS"
+ exit 1
+fi
+
+%build
+ant
+
+# Build the examples (this serves as a good test suite)
+pushd docs
+rm run.bat
+java -classpath "$(build-classpath jaxp_parser_impl):../bin/stylebook-%{version}-b3_xalan-2.jar" \
+ org.apache.stylebook.StyleBook "targetDirectory=../results" book.xml ../styles/apachexml
+popd
+
+%install
+rm -rf %{buildroot}
+
+# jars
+install -pD -T bin/stylebook-%{version}-b3_xalan-2.jar \
+ %{buildroot}%{_javadir}/%{name}-%{version}.jar
+(cd %{buildroot}%{_javadir} && for jar in *-%{version}.jar; do \
+ ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"`; done)
+
+# javadoc
+install -d %{buildroot}%{_javadocdir}/%{name}-%{version}
+cp -pr build/javadoc/* %{buildroot}%{_javadocdir}/%{name}-%{version}
+(cd %{buildroot}%{_javadocdir} && ln -sf %{name}-%{version} %{name})
+
+# examples
+install -d %{buildroot}%{_datadir}/%{name}
+cp -pr docs %{buildroot}%{_datadir}/%{name}
+cp -pr styles %{buildroot}%{_datadir}/%{name}
+cp -pr results %{buildroot}%{_datadir}/%{name}
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%doc LICENSE.txt
+%{_javadir}/*
+
+%files javadoc
+%defattr(-,root,root,-)
+%{_javadocdir}/%{name}-%{version}
+%{_javadocdir}/%{name}
+
+%files demo
+%defattr(-,root,root,-)
+%{_datadir}/%{name}
+
+%changelog
+* Mon Jan 11 2010 Mat Booth - 1.0-0.3.b3_xalan2.svn313293
+- Build the examples (this serves as a good test suite.)
+- Patch the build script to build javadocs.
+- Add a build dep on a font package because the JDK is missing a dependency
+ to function correctly in headless mode. See RHBZ #478480 and #521523.
+
+* Tue Jan 5 2010 Mat Booth - 1.0-0.2.b3_xalan2.svn313293
+- Add patch from JPackage to fix NPE in Xalan-J2 doc generation.
+
+* Tue Jan 5 2010 Mat Booth - 1.0-0.1.b3_xalan2.svn313293
+- Initial stab at packaging trunk version of stylebook.
+