You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/08/02 20:54:28 UTC

[maven-doxia] branch DOXIA-669 updated (6a340c0f -> d4580540)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch DOXIA-669
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git


 discard 6a340c0f [DOXIA-669] Improve/rework CachedFileEntityResolver
     new d4580540 [DOXIA-669] Improve/rework CachedFileEntityResolver

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (6a340c0f)
            \
             N -- N -- N   refs/heads/DOXIA-669 (d4580540)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../maven/doxia/parser/AbstractXmlParser.java      | 40 +++++++++++-----------
 doxia-core/src/test/resources/test.xhtml           | 11 +++---
 2 files changed, 24 insertions(+), 27 deletions(-)


[maven-doxia] 01/01: [DOXIA-669] Improve/rework CachedFileEntityResolver

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch DOXIA-669
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit d4580540935133ac43289be40f88626ea4bbd86f
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Tue Aug 2 20:54:38 2022 +0200

    [DOXIA-669] Improve/rework CachedFileEntityResolver
---
 .../maven/doxia/parser/AbstractXmlParser.java      |  95 +++----
 .../org/apache/maven/doxia/util/XmlValidator.java  |   1 +
 doxia-core/src/main/resources/xml.xsd              | 286 +++++++++++++++++++++
 .../apache/maven/doxia/util/XmlValidatorTest.java  |   4 +-
 doxia-core/src/test/resources/test.xhtml           |  96 ++++---
 .../src/test/resources/test.xml                    |   2 +-
 .../doxia-module-fml/src/test/resources/macro.fml  |  96 +++----
 .../src/test/resources/simpleFaq.fml               |   2 +-
 .../doxia-module-fml/src/test/resources/test.fml   |   2 +-
 .../src/main/resources/xdoc-2.0.xsd                |   2 +-
 .../doxia-module-xdoc/src/test/resources/macro.xml |   2 +-
 .../src/test/resources/report.xml                  |   2 +-
 .../doxia-module-xdoc/src/test/resources/test.xml  |   2 +-
 .../doxia-module-xdoc/src/test/resources/toc.xml   |   2 +-
 .../src/test/resources/test.xhtml                  |   1 -
 15 files changed, 421 insertions(+), 174 deletions(-)

diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
index 61363bbd..2fc8ee0f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
@@ -21,17 +21,16 @@ package org.apache.maven.doxia.parser;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.io.Reader;
 import java.io.StringReader;
+import java.net.URI;
 import java.net.URL;
+import java.nio.file.Paths;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.LinkedHashMap;
-import java.util.Locale;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -43,7 +42,6 @@ import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.util.HtmlTools;
 import org.apache.maven.doxia.util.XmlValidator;
 
-import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.MXParser;
@@ -697,6 +695,20 @@ public abstract class AbstractXmlParser
         /** Map with systemId as key and the content of systemId as byte[]. */
         protected static final Map<String, byte[]> ENTITY_CACHE = new Hashtable<>();
 
+        private static final Map<String, String> WELLKNOWN_SYSTEM_IDS = new HashMap<>();
+
+        static
+        {
+            WELLKNOWN_SYSTEM_IDS.put( "http://www.w3.org/2001/xml.xsd", "xml.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "https://www.w3.org/2001/xml.xsd", "xml.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "http://maven.apache.org/xsd/xdoc-2.0.xsd", "xdoc-2.0.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "https://maven.apache.org/xsd/xdoc-2.0.xsd", "xdoc-2.0.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "http://maven.apache.org/xsd/fml-1.0.1.xsd", "fml-1.0.1.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "https://maven.apache.org/xsd/fml-1.0.1.xsd", "fml-1.0.1.xsd" );
+            WELLKNOWN_SYSTEM_IDS.put( "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent", "xhtml-lat1.ent" );
+            WELLKNOWN_SYSTEM_IDS.put( "https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent", "xhtml-lat1.ent" );
+        }
+
         /** {@inheritDoc} */
         public InputSource resolveEntity( String publicId, String systemId )
             throws SAXException, IOException
@@ -705,40 +717,25 @@ public abstract class AbstractXmlParser
             // already cached?
             if ( res == null )
             {
-                String systemName = FileUtils.getFile( systemId ).getName();
-                File temp = new File( System.getProperty( "java.io.tmpdir" ), systemName );
-                // maybe already as a temp file?
-                if ( !temp.exists() )
+                if ( WELLKNOWN_SYSTEM_IDS.containsKey( systemId ) )
                 {
-                    // is systemId a file or an url?
-                    if ( systemId.toLowerCase( Locale.ENGLISH ).startsWith( "file" ) )
+                    String resource =  "/" + WELLKNOWN_SYSTEM_IDS.get( systemId );
+                    URL url = getClass().getResource( resource );
+                    if ( url != null )
                     {
-                        // Doxia XSDs are included in the jars, so try to find the resource systemName from
-                        // the classpath...
-                        String resource = "/" + systemName;
-                        URL url = getClass().getResource( resource );
-                        if ( url != null )
-                        {
-                            res = toByteArray( url );
-                        }
-                        else
-                        {
-                            throw new SAXException( "Could not find the SYSTEM entity: " + systemId
-                            + " because '" + resource + "' is not available of the classpath." );
-                        }
+                        res = toByteArray( url );
                     }
-                    else
+                }
+
+                if ( res == null )
+                {
+                    URI uri = URI.create( systemId );
+                    if ( uri.getScheme() == null )
                     {
-                        res = toByteArray( new URL( systemId ) );
+                        uri = Paths.get( systemId ).toUri();
                     }
 
-                    // write systemId as temp file
-                    copy( res, temp );
-                }
-                else
-                {
-                    // TODO How to refresh Doxia XSDs from temp dir?
-                    res = toByteArray( temp.toURI().toURL() );
+                    res = toByteArray( uri.toURL() );
                 }
 
                 ENTITY_CACHE.put( systemId, res );
@@ -778,37 +775,5 @@ public abstract class AbstractXmlParser
                 IOUtil.close( is );
             }
         }
-
-        /**
-         * Wrap {@link IOUtil#copy(byte[], OutputStream)} to throw SAXException.
-         *
-         * @param res not null array of byte
-         * @param f the file where to write the bytes
-         * @throws SAXException if any
-         * @see IOUtil#copy(byte[], OutputStream)
-         */
-        private void copy( byte[] res, File f )
-            throws SAXException
-        {
-            if ( f.isDirectory() )
-            {
-                throw new SAXException( "'" + f.getAbsolutePath() + "' is a directory, can not write it." );
-            }
-
-            OutputStream os = null;
-            try
-            {
-                os = new FileOutputStream( f );
-                IOUtil.copy( res, os );
-            }
-            catch ( IOException e )
-            {
-                throw new SAXException( e );
-            }
-            finally
-            {
-                IOUtil.close( os );
-            }
-        }
     }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
index 10cd9065..32d6121c 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
@@ -115,6 +115,7 @@ public class XmlValidator
 
             xmlReader = XMLReaderFactory.createXMLReader();
             xmlReader.setFeature( "http://xml.org/sax/features/validation", true );
+            xmlReader.setFeature( "http://apache.org/xml/features/validation/dynamic", true );
             xmlReader.setFeature( "http://apache.org/xml/features/validation/schema", true );
             xmlReader.setErrorHandler( errorHandler );
             xmlReader.setEntityResolver( new CachedFileEntityResolver() );
diff --git a/doxia-core/src/main/resources/xml.xsd b/doxia-core/src/main/resources/xml.xsd
new file mode 100644
index 00000000..543bda6b
--- /dev/null
+++ b/doxia-core/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?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>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;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>
+          &lt;type . . .>
+           . . .
+           &lt;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/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
index a08e6539..b4351239 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
@@ -36,9 +36,9 @@ public class XmlValidatorTest
     public void testValidate()
         throws Exception
     {
-        String xml = IOUtil.toString( new XmlStreamReader( this.getClass().getResourceAsStream( "/test.xhtml" ) ) );
+        String xml = IOUtil.toString( new XmlStreamReader( this.getClass().getResourceAsStream( "/test.xml" ) ) );
 
-        XmlValidator validator = new XmlValidator( );
+        XmlValidator validator = new XmlValidator();
 
         validator.validate( xml );
     }
diff --git a/doxia-core/src/test/resources/test.xhtml b/doxia-core/src/test/resources/test.xhtml
index fc9f4443..65911a43 100644
--- a/doxia-core/src/test/resources/test.xhtml
+++ b/doxia-core/src/test/resources/test.xhtml
@@ -1,50 +1,46 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<!--
-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.
--->
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>XHTML 1.0 Strict Example</title>
- <script type="text/javascript">
- //<![CDATA[
- function loadpdf() {
-    document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
- }
- //]]>
- </script>
- </head>
- <body onload="loadpdf()">
- <p>This is an example of an
- <abbr title="Extensible HyperText Markup Language">XHTML</abbr> 1.0 Strict document.<br />
- <img id="validation-icon"
-    src="http://www.w3.org/Icons/valid-xhtml10"
-    alt="Valid XHTML 1.0 Strict" /><br />
- <object id="pdf-object"
-    name="pdf-object"
-    type="application/pdf"
-    data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
-    width="100%"
-    height="500">
- </object>
- </p>
- </body>
-</html>
+<!DOCTYPE html>
+<!--
+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.
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="utf-8" />
+ <title>XHTML 5 Example</title>
+ <script>
+ function loadpdf() {
+    document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
+ }
+ </script>
+ </head>
+ <body onload="loadpdf()">
+ <p>This is an example of an
+ <abbr title="Extensible HyperText Markup Language">XHTML</abbr> 1.0 Strict document.<br />
+ <img id="validation-icon"
+    src="http://www.w3.org/Icons/valid-xhtml10"
+    alt="Valid XHTML 1.0 Strict" /><br />
+ <object id="pdf-object"
+    name="pdf-object"
+    type="application/pdf"
+    data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
+    width="100"
+    height="500">
+ </object>
+ </p>
+ </body>
+</html>
diff --git a/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml b/doxia-core/src/test/resources/test.xml
similarity index 97%
copy from doxia-modules/doxia-module-xdoc/src/test/resources/test.xml
copy to doxia-core/src/test/resources/test.xml
index d4fafcbe..8acb9059 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml
+++ b/doxia-core/src/test/resources/test.xml
@@ -19,7 +19,7 @@
 -->
 <document xmlns="http://maven.apache.org/XDOC/2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../main/resources/xdoc-2.0.xsd">
+  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 https://maven.apache.org/xsd/xdoc-2.0.xsd">
 
   <properties>
     <title>Title</title>
diff --git a/doxia-modules/doxia-module-fml/src/test/resources/macro.fml b/doxia-modules/doxia-module-fml/src/test/resources/macro.fml
index d7e997aa..8d4553af 100644
--- a/doxia-modules/doxia-module-fml/src/test/resources/macro.fml
+++ b/doxia-modules/doxia-module-fml/src/test/resources/macro.fml
@@ -1,49 +1,49 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-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.
--->
-
-<faqs xmlns="http://maven.apache.org/FML/1.0.1"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 file:../../main/resources/fml-1.0.1.xsd"
-  title="Frequently Asked Questions">
-
-  <part id="general">
-    <title>Test the macro support</title>
-
-    <faq id="test-macro">
-      <question>Question</question>
-      <answer>
-        <p>Answer with macro</p>
-        <macro name="snippet">
-          <param name="id" value="superpom"/>
-          <param name="file" value="src/test/resources/macro.fml"/>
-        </macro>
-      </answer>
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+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.
+-->
+
+<faqs xmlns="http://maven.apache.org/FML/1.0.1"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 https://maven.apache.org/xsd/fml-1.0.1.xsd"
+  title="Frequently Asked Questions">
+
+  <part id="general">
+    <title>Test the macro support</title>
+
+    <faq id="test-macro">
+      <question>Question</question>
+      <answer>
+        <p>Answer with macro</p>
+        <macro name="snippet">
+          <param name="id" value="superpom"/>
+          <param name="file" value="src/test/resources/macro.fml"/>
+        </macro>
+      </answer>
     </faq>
-
-<!-- START SNIPPET: fmlmacro -->
-    <faq id="macro-definition">
-      <question>Macro Question</question>
-      <answer>
-        <p>Macro Answer</p>
-      </answer>
-    </faq>
-<!-- END SNIPPET: fmlmacro -->
-  </part>
-</faqs>
+
+<!-- START SNIPPET: fmlmacro -->
+    <faq id="macro-definition">
+      <question>Macro Question</question>
+      <answer>
+        <p>Macro Answer</p>
+      </answer>
+    </faq>
+<!-- END SNIPPET: fmlmacro -->
+  </part>
+</faqs>
diff --git a/doxia-modules/doxia-module-fml/src/test/resources/simpleFaq.fml b/doxia-modules/doxia-module-fml/src/test/resources/simpleFaq.fml
index aced1327..27b7f0e3 100644
--- a/doxia-modules/doxia-module-fml/src/test/resources/simpleFaq.fml
+++ b/doxia-modules/doxia-module-fml/src/test/resources/simpleFaq.fml
@@ -20,7 +20,7 @@ under the License.
 
 <faqs xmlns="http://maven.apache.org/FML/1.0.1"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 file:../../main/resources/fml-1.0.1.xsd"
+  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 https://maven.apache.org/xsd/fml-1.0.1.xsd"
   title="Frequently Asked Questions">
 
   <part id="general">
diff --git a/doxia-modules/doxia-module-fml/src/test/resources/test.fml b/doxia-modules/doxia-module-fml/src/test/resources/test.fml
index 8128fe9b..49e868a7 100644
--- a/doxia-modules/doxia-module-fml/src/test/resources/test.fml
+++ b/doxia-modules/doxia-module-fml/src/test/resources/test.fml
@@ -21,7 +21,7 @@ under the License.
 <!-- TODO [later]: faqs need some sorting -->
 <faqs xmlns="http://maven.apache.org/FML/1.0.1"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 file:../../main/resources/fml-1.0.1.xsd"
+  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 https://maven.apache.org/xsd/fml-1.0.1.xsd"
   title="Frequently Asked Questions">
 
   <part id="general">
diff --git a/doxia-modules/doxia-module-xdoc/src/main/resources/xdoc-2.0.xsd b/doxia-modules/doxia-module-xdoc/src/main/resources/xdoc-2.0.xsd
index f24886dc..50850020 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/resources/xdoc-2.0.xsd
+++ b/doxia-modules/doxia-module-xdoc/src/main/resources/xdoc-2.0.xsd
@@ -39,7 +39,7 @@
     </xs:documentation>
   </xs:annotation>
 
-  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="https://www.w3.org/2001/xml.xsd"/>
 
   <xs:annotation>
     <xs:documentation>
diff --git a/doxia-modules/doxia-module-xdoc/src/test/resources/macro.xml b/doxia-modules/doxia-module-xdoc/src/test/resources/macro.xml
index c99baee0..16ec77dd 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/resources/macro.xml
+++ b/doxia-modules/doxia-module-xdoc/src/test/resources/macro.xml
@@ -20,7 +20,7 @@ under the License.
 
 <document xmlns="http://maven.apache.org/XDOC/2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../main/resources/xdoc-2.0.xsd">
+  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 https://maven.apache.org/xsd/xdoc-2.0.xsd">
   <properties>
     <title>Test DOXIA-77</title>
     <author email="vsiveton@apache.org">Vincent Siveton</author>
diff --git a/doxia-modules/doxia-module-xdoc/src/test/resources/report.xml b/doxia-modules/doxia-module-xdoc/src/test/resources/report.xml
index 933ff946..b906821f 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/resources/report.xml
+++ b/doxia-modules/doxia-module-xdoc/src/test/resources/report.xml
@@ -19,7 +19,7 @@ under the License.
 
 <document xmlns="http://maven.apache.org/XDOC/2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../main/resources/xdoc-2.0.xsd">
+  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 https://maven.apache.org/xsd/xdoc-2.0.xsd">
   <properties>
     <title>Synchronization report for Codehaus</title>
     <author>meeper</author>
diff --git a/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml b/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml
index d4fafcbe..8acb9059 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml
+++ b/doxia-modules/doxia-module-xdoc/src/test/resources/test.xml
@@ -19,7 +19,7 @@
 -->
 <document xmlns="http://maven.apache.org/XDOC/2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../main/resources/xdoc-2.0.xsd">
+  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 https://maven.apache.org/xsd/xdoc-2.0.xsd">
 
   <properties>
     <title>Title</title>
diff --git a/doxia-modules/doxia-module-xdoc/src/test/resources/toc.xml b/doxia-modules/doxia-module-xdoc/src/test/resources/toc.xml
index 0afe53b5..265da10f 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/resources/toc.xml
+++ b/doxia-modules/doxia-module-xdoc/src/test/resources/toc.xml
@@ -20,7 +20,7 @@ under the License.
 
 <document xmlns="http://maven.apache.org/XDOC/2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../main/resources/xdoc-2.0.xsd">
+  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 https://maven.apache.org/xsd/xdoc-2.0.xsd">
   <properties>
     <title>Test DOXIA-40</title>
     <author email="vsiveton@apache.org">Vincent Siveton</author>
diff --git a/doxia-modules/doxia-module-xhtml5/src/test/resources/test.xhtml b/doxia-modules/doxia-module-xhtml5/src/test/resources/test.xhtml
index 45f924dc..a93e0d3f 100644
--- a/doxia-modules/doxia-module-xhtml5/src/test/resources/test.xhtml
+++ b/doxia-modules/doxia-module-xhtml5/src/test/resources/test.xhtml
@@ -1,5 +1,4 @@
 <!DOCTYPE html>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file