diff options
6 files changed, 23 insertions, 400 deletions
@@ -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" diff --git a/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-content.xsd b/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-content.xsd index 16fd0aa1f..eae7a88af 100644 --- a/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-content.xsd +++ b/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-content.xsd @@ -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> diff --git a/src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd b/src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd index 86dce1a3c..bea5275a5 100644 --- a/src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd +++ b/src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd @@ -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> diff --git a/src/documentation/intermediate-format-ng/xml.xsd b/src/documentation/intermediate-format-ng/xml.xsd deleted file mode 100644 index aea7d0db0..000000000 --- a/src/documentation/intermediate-format-ng/xml.xsd +++ /dev/null @@ -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> - diff --git a/test/java/org/apache/fop/intermediate/AbstractIFTest.java b/test/java/org/apache/fop/intermediate/AbstractIFTest.java index cdb7e0cf9..2e7f37400 100644 --- a/test/java/org/apache/fop/intermediate/AbstractIFTest.java +++ b/test/java/org/apache/fop/intermediate/AbstractIFTest.java @@ -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); diff --git a/test/java/org/apache/fop/intermediate/XMLSchemaResolver.java b/test/java/org/apache/fop/intermediate/XMLSchemaResolver.java deleted file mode 100644 index 566e79f71..000000000 --- a/test/java/org/apache/fop/intermediate/XMLSchemaResolver.java +++ /dev/null @@ -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; - } - } - -} |