Copied the definition of xml:space into the IF schema. Removed the setup-xml-schema Ant ask. xml.xsd is a file under the W3C Document License and we cannot (yet?) redistribute files under such a license. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1304524 13f79535-47bb-0310-9956-ffa450edef68pull/26/head
@@ -806,7 +806,8 @@ list of possible build targets. | |||
</junit> | |||
</sequential> | |||
</macrodef> | |||
<target name="junit-all" depends="junit-compile, junit-transcoder, junit-layout-hyphenation, setup-xml-schema" description="Runs FOP's JUnit basic tests" if="junit.present"> | |||
<target name="junit-all" depends="junit-compile, junit-transcoder, junit-layout-hyphenation" | |||
description="Runs FOP's JUnit basic tests" if="junit.present"> | |||
<junit dir="${basedir}" haltonfailure="yes" fork="${junit.fork}" forkmode="once" | |||
errorproperty="fop.junit.error" failureproperty="fop.junit.failure"> | |||
<sysproperty key="jawa.awt.headless" value="true"/> | |||
@@ -844,25 +845,13 @@ list of possible build targets. | |||
<target name="junit-area-tree-xml-format" depends="junit-compile" description="Runs FOP's area tree XML format JUnit tests" if="xmlunit.present"> | |||
<junit-run title="area tree XML format" testsuite="org.apache.fop.intermediate.AreaTreeXMLFormatTestSuite" outfile="TEST-area-tree-xml-format"/> | |||
</target> | |||
<target name="junit-intermediate-layout" depends="junit-compile,setup-xml-schema" | |||
if="xmlunit.present"> | |||
<target name="junit-intermediate-layout" depends="junit-compile" if="xmlunit.present"> | |||
<junit-run title="intermediate format from layout tests" | |||
testsuite="org.apache.fop.intermediate.LayoutIFTestSuite" | |||
outfile="TEST-intermediate-format-from-layout"/> | |||
</target> | |||
<target name="setup-xml-schema"> | |||
<local name="cache-dir"/> | |||
<property name="cache-dir" value="${basedir}/.cache/junit/intermediate"/> | |||
<mkdir dir="${cache-dir}"/> | |||
<get src="http://www.w3.org/2001/xml.xsd" | |||
dest="${cache-dir}/xml.xsd" | |||
usetimestamp="true"/> | |||
<copy file="${cache-dir}/xml.xsd" | |||
todir="${build.dir}/test-classes/org/apache/fop/intermediate"/> | |||
</target> | |||
<target name="junit-intermediate-format" | |||
depends="junit-compile,setup-xml-schema,junit-intermediate-layout" | |||
<target name="junit-intermediate-format" depends="junit-compile,junit-intermediate-layout" | |||
description="Runs FOP's intermediate format JUnit tests" if="xmlunit.present"> | |||
<junit-run title="intermediate format" | |||
testsuite="org.apache.fop.intermediate.IntermediateFormatTestSuite" |
@@ -138,4 +138,22 @@ | |||
<xs:attributeGroup name="foreignAtts"> | |||
<xs:anyAttribute namespace="##other" processContents="lax"/> | |||
</xs:attributeGroup> | |||
<xs:attribute name="xmlSpace"> | |||
<!-- | |||
This is a copy of the definition of the xml:space attribute, from the schema for the XML | |||
namespace. That schema can be found at http://www.w3.org/2001/xml.xsd. | |||
Ideally we would want to re-use that schema. However, we don’t want to refer to it using an | |||
import statement is it causes too many connections to the W3C website. Neither can we store a | |||
local copy and ship it with FOP as its license is the W3C Document License and so far we are not | |||
allowed to redistribute files under such a license. | |||
See also https://issues.apache.org/jira/browse/LEGAL-111 | |||
--> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:NCName"> | |||
<xs:enumeration value="default"/> | |||
<xs:enumeration value="preserve"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:attribute> | |||
</xs:schema> |
@@ -20,8 +20,6 @@ | |||
targetNamespace="http://xmlgraphics.apache.org/fop/intermediate" | |||
xmlns:mf="http://xmlgraphics.apache.org/fop/intermediate" | |||
xmlns:nav="http://xmlgraphics.apache.org/fop/intermediate/document-navigation"> | |||
<xs:import namespace="http://www.w3.org/XML/1998/namespace" | |||
schemaLocation="xml.xsd"/> | |||
<xs:import namespace="http://xmlgraphics.apache.org/fop/intermediate/document-navigation" | |||
schemaLocation="fop-intermediate-format-ng-nav.xsd"/> | |||
<xs:import namespace="adobe:ns:meta/" schemaLocation="xmp-metadata.xsd"/> | |||
@@ -70,7 +68,7 @@ | |||
<xs:element ref="mf:page" minOccurs="1" maxOccurs="unbounded"/> | |||
</xs:sequence> | |||
<xs:attribute name="id" type="xs:ID"/> | |||
<xs:attribute ref="xml:space"/> | |||
<xs:attribute ref="mf:xmlSpace"/> | |||
<xs:attributeGroup ref="mf:foreignAtts"/> | |||
</xs:complexType> | |||
</xs:element> |
@@ -1,287 +0,0 @@ | |||
<?xml version='1.0'?> | |||
<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?> | |||
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" | |||
xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
xmlns ="http://www.w3.org/1999/xhtml" | |||
xml:lang="en"> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h1>About the XML namespace</h1> | |||
<div class="bodytext"> | |||
<p> | |||
This schema document describes the XML namespace, in a form | |||
suitable for import by other schema documents. | |||
</p> | |||
<p> | |||
See <a href="http://www.w3.org/XML/1998/namespace.html"> | |||
http://www.w3.org/XML/1998/namespace.html</a> and | |||
<a href="http://www.w3.org/TR/REC-xml"> | |||
http://www.w3.org/TR/REC-xml</a> for information | |||
about this namespace. | |||
</p> | |||
<p> | |||
Note that local names in this namespace are intended to be | |||
defined only by the World Wide Web Consortium or its subgroups. | |||
The names currently defined in this namespace are listed below. | |||
They should not be used with conflicting semantics by any Working | |||
Group, specification, or document instance. | |||
</p> | |||
<p> | |||
See further below in this document for more information about <a | |||
href="#usage">how to refer to this schema document from your own | |||
XSD schema documents</a> and about <a href="#nsversioning">the | |||
namespace-versioning policy governing this schema document</a>. | |||
</p> | |||
</div> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
<xs:attribute name="lang"> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h3>lang (as an attribute name)</h3> | |||
<p> | |||
denotes an attribute whose value | |||
is a language code for the natural language of the content of | |||
any element; its value is inherited. This name is reserved | |||
by virtue of its definition in the XML specification.</p> | |||
</div> | |||
<div> | |||
<h4>Notes</h4> | |||
<p> | |||
Attempting to install the relevant ISO 2- and 3-letter | |||
codes as the enumerated possible values is probably never | |||
going to be a realistic possibility. | |||
</p> | |||
<p> | |||
See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt"> | |||
http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a> | |||
and the IANA language subtag registry at | |||
<a href="http://www.iana.org/assignments/language-subtag-registry"> | |||
http://www.iana.org/assignments/language-subtag-registry</a> | |||
for further information. | |||
</p> | |||
<p> | |||
The union allows for the 'un-declaration' of xml:lang with | |||
the empty string. | |||
</p> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
<xs:simpleType> | |||
<xs:union memberTypes="xs:language"> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:string"> | |||
<xs:enumeration value=""/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:union> | |||
</xs:simpleType> | |||
</xs:attribute> | |||
<xs:attribute name="space"> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h3>space (as an attribute name)</h3> | |||
<p> | |||
denotes an attribute whose | |||
value is a keyword indicating what whitespace processing | |||
discipline is intended for the content of the element; its | |||
value is inherited. This name is reserved by virtue of its | |||
definition in the XML specification.</p> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
<xs:simpleType> | |||
<xs:restriction base="xs:NCName"> | |||
<xs:enumeration value="default"/> | |||
<xs:enumeration value="preserve"/> | |||
</xs:restriction> | |||
</xs:simpleType> | |||
</xs:attribute> | |||
<xs:attribute name="base" type="xs:anyURI"> <xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h3>base (as an attribute name)</h3> | |||
<p> | |||
denotes an attribute whose value | |||
provides a URI to be used as the base for interpreting any | |||
relative URIs in the scope of the element on which it | |||
appears; its value is inherited. This name is reserved | |||
by virtue of its definition in the XML Base specification.</p> | |||
<p> | |||
See <a | |||
href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a> | |||
for information about this attribute. | |||
</p> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
</xs:attribute> | |||
<xs:attribute name="id" type="xs:ID"> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h3>id (as an attribute name)</h3> | |||
<p> | |||
denotes an attribute whose value | |||
should be interpreted as if declared to be of type ID. | |||
This name is reserved by virtue of its definition in the | |||
xml:id specification.</p> | |||
<p> | |||
See <a | |||
href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a> | |||
for information about this attribute. | |||
</p> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
</xs:attribute> | |||
<xs:attributeGroup name="specialAttrs"> | |||
<xs:attribute ref="xml:base"/> | |||
<xs:attribute ref="xml:lang"/> | |||
<xs:attribute ref="xml:space"/> | |||
<xs:attribute ref="xml:id"/> | |||
</xs:attributeGroup> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div> | |||
<h3>Father (in any context at all)</h3> | |||
<div class="bodytext"> | |||
<p> | |||
denotes Jon Bosak, the chair of | |||
the original XML Working Group. This name is reserved by | |||
the following decision of the W3C XML Plenary and | |||
XML Coordination groups: | |||
</p> | |||
<blockquote> | |||
<p> | |||
In appreciation for his vision, leadership and | |||
dedication the W3C XML Plenary on this 10th day of | |||
February, 2000, reserves for Jon Bosak in perpetuity | |||
the XML name "xml:Father". | |||
</p> | |||
</blockquote> | |||
</div> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div xml:id="usage" id="usage"> | |||
<h2><a name="usage">About this schema document</a></h2> | |||
<div class="bodytext"> | |||
<p> | |||
This schema defines attributes and an attribute group suitable | |||
for use by schemas wishing to allow <code>xml:base</code>, | |||
<code>xml:lang</code>, <code>xml:space</code> or | |||
<code>xml:id</code> attributes on elements they define. | |||
</p> | |||
<p> | |||
To enable this, such a schema must import this schema for | |||
the XML namespace, e.g. as follows: | |||
</p> | |||
<pre> | |||
<schema . . .> | |||
. . . | |||
<import namespace="http://www.w3.org/XML/1998/namespace" | |||
schemaLocation="http://www.w3.org/2001/xml.xsd"/> | |||
</pre> | |||
<p> | |||
or | |||
</p> | |||
<pre> | |||
<import namespace="http://www.w3.org/XML/1998/namespace" | |||
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/> | |||
</pre> | |||
<p> | |||
Subsequently, qualified reference to any of the attributes or the | |||
group defined below will have the desired effect, e.g. | |||
</p> | |||
<pre> | |||
<type . . .> | |||
. . . | |||
<attributeGroup ref="xml:specialAttrs"/> | |||
</pre> | |||
<p> | |||
will define a type which will schema-validate an instance element | |||
with any of those attributes. | |||
</p> | |||
</div> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
<xs:annotation> | |||
<xs:documentation> | |||
<div id="nsversioning" xml:id="nsversioning"> | |||
<h2><a name="nsversioning">Versioning policy for this schema document</a></h2> | |||
<div class="bodytext"> | |||
<p> | |||
In keeping with the XML Schema WG's standard versioning | |||
policy, this schema document will persist at | |||
<a href="http://www.w3.org/2009/01/xml.xsd"> | |||
http://www.w3.org/2009/01/xml.xsd</a>. | |||
</p> | |||
<p> | |||
At the date of issue it can also be found at | |||
<a href="http://www.w3.org/2001/xml.xsd"> | |||
http://www.w3.org/2001/xml.xsd</a>. | |||
</p> | |||
<p> | |||
The schema document at that URI may however change in the future, | |||
in order to remain compatible with the latest version of XML | |||
Schema itself, or with the XML namespace itself. In other words, | |||
if the XML Schema or XML namespaces change, the version of this | |||
document at <a href="http://www.w3.org/2001/xml.xsd"> | |||
http://www.w3.org/2001/xml.xsd | |||
</a> | |||
will change accordingly; the version at | |||
<a href="http://www.w3.org/2009/01/xml.xsd"> | |||
http://www.w3.org/2009/01/xml.xsd | |||
</a> | |||
will not change. | |||
</p> | |||
<p> | |||
Previous dated (and unchanging) versions of this schema | |||
document are at: | |||
</p> | |||
<ul> | |||
<li><a href="http://www.w3.org/2009/01/xml.xsd"> | |||
http://www.w3.org/2009/01/xml.xsd</a></li> | |||
<li><a href="http://www.w3.org/2007/08/xml.xsd"> | |||
http://www.w3.org/2007/08/xml.xsd</a></li> | |||
<li><a href="http://www.w3.org/2004/10/xml.xsd"> | |||
http://www.w3.org/2004/10/xml.xsd</a></li> | |||
<li><a href="http://www.w3.org/2001/03/xml.xsd"> | |||
http://www.w3.org/2001/03/xml.xsd</a></li> | |||
</ul> | |||
</div> | |||
</div> | |||
</xs:documentation> | |||
</xs:annotation> | |||
</xs:schema> | |||
@@ -71,7 +71,6 @@ abstract class AbstractIFTest extends AbstractIntermediateTest { | |||
} | |||
}); | |||
sFactory.setResourceResolver(XMLSchemaResolver.getInstance()); | |||
File ifSchemaFile = new File( | |||
"src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd"); | |||
ifSchema = sFactory.newSchema(ifSchemaFile); |
@@ -1,94 +0,0 @@ | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||
* contributor license agreements. See the NOTICE file distributed with | |||
* this work for additional information regarding copyright ownership. | |||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||
* (the "License"); you may not use this file except in compliance with | |||
* the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
*/ | |||
/* $Id$ */ | |||
package org.apache.fop.intermediate; | |||
import java.io.InputStream; | |||
import java.util.MissingResourceException; | |||
import javax.xml.XMLConstants; | |||
import org.w3c.dom.bootstrap.DOMImplementationRegistry; | |||
import org.w3c.dom.ls.DOMImplementationLS; | |||
import org.w3c.dom.ls.LSInput; | |||
import org.w3c.dom.ls.LSResourceResolver; | |||
/** | |||
* A resource resolver that returns a cached instance of the XML Schema, that can normally | |||
* be found at {@linkplain http://www.w3.org/2001/xml.xsd}. This can be used to avoid | |||
* unnecessary connection to the W3C website. | |||
*/ | |||
final class XMLSchemaResolver implements LSResourceResolver { | |||
private static final String XML_SCHEMA_SYSTEM_ID = "http://www.w3.org/2001/xml.xsd"; | |||
private static final LSInput XML_SCHEMA_INPUT; | |||
private static final XMLSchemaResolver INSTANCE = new XMLSchemaResolver(); | |||
private XMLSchemaResolver() { } | |||
static { | |||
DOMImplementationRegistry registry = getDOMImplementationRegistry(); | |||
DOMImplementationLS impl | |||
= (DOMImplementationLS) registry.getDOMImplementation("LS 3.0"); | |||
XML_SCHEMA_INPUT = impl.createLSInput(); | |||
InputStream xmlSchema = loadXMLSchema(); | |||
XML_SCHEMA_INPUT.setByteStream(xmlSchema); | |||
} | |||
private static DOMImplementationRegistry getDOMImplementationRegistry() { | |||
try { | |||
return DOMImplementationRegistry.newInstance(); | |||
} catch (ClassCastException e) { | |||
throw new ExceptionInInitializerError(e); | |||
} catch (ClassNotFoundException e) { | |||
throw new ExceptionInInitializerError(e); | |||
} catch (InstantiationException e) { | |||
throw new ExceptionInInitializerError(e); | |||
} catch (IllegalAccessException e) { | |||
throw new ExceptionInInitializerError(e); | |||
} | |||
} | |||
private static InputStream loadXMLSchema() { | |||
String xmlSchemaResource = "xml.xsd"; | |||
InputStream xmlSchema = XMLSchemaResolver.class.getResourceAsStream(xmlSchemaResource); | |||
if (xmlSchema == null) { | |||
throw new MissingResourceException("Schema for XML namespace not found." | |||
+ " Did you run ant junit-intermediate-format?", | |||
XMLSchemaResolver.class.getName(), xmlSchemaResource); | |||
} | |||
return xmlSchema; | |||
} | |||
public static XMLSchemaResolver getInstance() { | |||
return INSTANCE; | |||
} | |||
public LSInput resolveResource(String type, String namespaceURI, String publicId, | |||
String systemId, String baseURI) { | |||
if (XMLConstants.XML_NS_URI.equals(namespaceURI) && XML_SCHEMA_SYSTEM_ID.equals(systemId)) { | |||
return XML_SCHEMA_INPUT; | |||
} else { | |||
return null; | |||
} | |||
} | |||
} |