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

michaelo pushed a commit to branch site-model-rework
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git

commit 073afea6a2262633fb1171bce42cdf5f7b91e69b
Author: Michael Osipov <[email protected]>
AuthorDate: Sun Jun 25 00:46:36 2023 +0200

    [DOXIASITETOOLS-311] Rework and simplify the site model
    
    This closes #110
---
 .../apache/maven/doxia/tools/DefaultSiteTool.java  | 209 ++++++++++++++++-
 .../src/main/resources/default-site.xml            |  10 +-
 .../org/apache/maven/doxia/tools/SiteToolTest.java |  41 +++-
 .../unit/interpolated-site/src/site/site.xml       |  19 +-
 .../interpolation-child-test/src/site/site.xml     |  49 ++--
 .../interpolation-parent-test/src/site/site.xml    |  21 +-
 .../old-to-new-site-model-conversion-test/pom.xml  |  36 +--
 .../src/site/new-site.xml                          |  80 +++++++
 .../src/site/site.xml                              |  78 +++++++
 .../site-tool-locales-test/full/src/site/site.xml  |  17 +-
 .../full/src/site/site_de_DE_BY.xml                |  17 +-
 .../language/src/site/site.xml                     |  17 +-
 .../language/src/site/site_de.xml                  |  17 +-
 .../language_country/src/site/site.xml             |  17 +-
 .../language_country/src/site/site_de_DE.xml       |  17 +-
 .../unit/site-tool-test/src/site/site.xml          |  17 +-
 doxia-site-model/pom.xml                           |  66 +++++-
 .../DefaultSiteModelInheritanceAssembler.java      |  64 ++----
 .../src/main/mdo/{site.mdo => decoration.mdo}      |  74 ++----
 doxia-site-model/src/main/mdo/site.mdo             | 253 ++++++---------------
 .../SiteModelInheritanceAssemblerTest.java         |  84 ++++---
 doxia-site-model/src/test/resources/empty.xml      |   6 +-
 .../src/test/resources/external-urls.xml           |  22 +-
 .../src/test/resources/fully-populated-child.xml   |  22 +-
 .../src/test/resources/fully-populated-merged.xml  |  22 +-
 .../test/resources/fully-populated-unresolved.xml  |  22 +-
 .../resources/inheritance-child-no-inheritance.xml |   6 +-
 .../src/test/resources/inheritance-child.xml       |   6 +-
 .../src/test/resources/inheritance-expected.xml    |  21 +-
 .../src/test/resources/inheritance-parent.xml      |  21 +-
 .../src/test/resources/relative-urls-resolved.xml  |  22 +-
 .../src/test/resources/relative-urls.xml           |  22 +-
 .../subsite-relative-urls-multiple-resolved.xml    |  22 +-
 .../resources/subsite-relative-urls-resolved.xml   |  22 +-
 .../src/test/resources/subsite-urls-file.xml       |  23 +-
 .../src/test/resources/subsite-urls.xml            |  23 +-
 .../src/test/resources/site/site.xml               |  21 +-
 37 files changed, 902 insertions(+), 604 deletions(-)

diff --git 
a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
 
b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
index e42b279..70e076c 100644
--- 
a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
+++ 
b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
@@ -48,10 +48,19 @@ import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.doxia.site.Banner;
+import org.apache.maven.doxia.site.Body;
+import org.apache.maven.doxia.site.Image;
+import org.apache.maven.doxia.site.LinkItem;
+import org.apache.maven.doxia.site.Logo;
 import org.apache.maven.doxia.site.Menu;
 import org.apache.maven.doxia.site.MenuItem;
+import org.apache.maven.doxia.site.PublishDate;
 import org.apache.maven.doxia.site.SiteModel;
 import org.apache.maven.doxia.site.Skin;
+import org.apache.maven.doxia.site.Version;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
 import org.apache.maven.doxia.site.inheritance.SiteModelInheritanceAssembler;
 import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Reader;
 import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Writer;
@@ -72,6 +81,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.pull.MXParser;
+import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
@@ -404,7 +415,7 @@ public class DefaultSiteTool implements SiteTool {
         // "classical" late interpolation, after full inheritance
         siteDescriptorContent = getInterpolatedSiteDescriptorContent(project, 
siteDescriptorContent, false);
 
-        siteModel = readSiteModel(siteDescriptorContent);
+        siteModel = readSiteModel(siteDescriptorContent, project, locale);
 
         if (parentProject != null) {
             populateParentMenu(siteModel, locale, project, parentProject, 
true);
@@ -998,7 +1009,7 @@ public class DefaultSiteTool implements SiteTool {
                 // interpolate ${this.*} = early interpolation
                 siteDescriptorContent = 
getInterpolatedSiteDescriptorContent(project, siteDescriptorContent, true);
 
-                siteModel = readSiteModel(siteDescriptorContent);
+                siteModel = readSiteModel(siteDescriptorContent, project, 
locale);
                 siteModel.setLastModified(siteDescriptor.lastModified());
             } else {
                 LOGGER.debug("No" + (depth == 0 ? "" : (" parent level " + 
depth)) + " site descriptor");
@@ -1071,9 +1082,21 @@ public class DefaultSiteTool implements SiteTool {
      * @return the site model object
      * @throws SiteToolException if any
      */
-    private SiteModel readSiteModel(String siteDescriptorContent) throws 
SiteToolException {
+    private SiteModel readSiteModel(String siteDescriptorContent, MavenProject 
project, Locale locale)
+            throws SiteToolException {
         try {
-            return new SiteXpp3Reader().read(new 
StringReader(siteDescriptorContent));
+            if (project != null && isOldSiteModel(siteDescriptorContent)) {
+                LOGGER.warn(
+                        "Site model of '" + project.getId() + "' for "
+                                + (locale.equals(SiteTool.DEFAULT_LOCALE)
+                                        ? "default locale"
+                                        : "locale '" + locale + "'")
+                                + " is still using the old pre-version 2.0.0 
model. You MUST migrate to the new model as soon as possible otherwise your 
build will break in the future!");
+                return convertOldToNewSiteModel(
+                        new DecorationXpp3Reader().read(new 
StringReader(siteDescriptorContent)));
+            } else {
+                return new SiteXpp3Reader().read(new 
StringReader(siteDescriptorContent));
+            }
         } catch (XmlPullParserException e) {
             throw new SiteToolException("Error parsing site descriptor", e);
         } catch (IOException e) {
@@ -1081,6 +1104,182 @@ public class DefaultSiteTool implements SiteTool {
         }
     }
 
+    private SiteModel convertOldToNewSiteModel(DecorationModel oldModel) {
+        SiteModel newModel = new SiteModel();
+        newModel.setName(oldModel.getName());
+        newModel.setCombineSelf(oldModel.getCombineSelf());
+        if (oldModel.getBannerLeft() != null) {
+            newModel.setBannerLeft(convertBanner(oldModel.getBannerLeft()));
+        }
+        if (oldModel.getBannerRight() != null) {
+            newModel.setBannerRight(convertBanner(oldModel.getBannerRight()));
+        }
+        if (!oldModel.isDefaultPublishDate()) {
+            PublishDate newPublishDate = new PublishDate();
+            newPublishDate.setFormat(oldModel.getPublishDate().getFormat());
+            
newPublishDate.setPosition(oldModel.getPublishDate().getPosition());
+            
newPublishDate.setTimezone(oldModel.getPublishDate().getTimezone());
+            newModel.setPublishDate(newPublishDate);
+        }
+        if (!oldModel.isDefaultVersion()) {
+            Version newVersion = new Version();
+            newVersion.setPosition(oldModel.getVersion().getPosition());
+            newModel.setVersion(newVersion);
+        }
+        newModel.setEdit(oldModel.getEdit());
+        if (oldModel.getSkin() != null) {
+            Skin newSkin = new Skin();
+            newSkin.setGroupId(oldModel.getSkin().getGroupId());
+            newSkin.setArtifactId(oldModel.getSkin().getArtifactId());
+            newSkin.setVersion(oldModel.getSkin().getVersion());
+            newModel.setSkin(newSkin);
+        }
+        // poweredBy
+        for (org.apache.maven.doxia.site.decoration.Logo oldLogo : 
oldModel.getPoweredBy()) {
+            Logo newLogo = new Logo();
+            newLogo.setName(oldLogo.getName());
+            newLogo.setHref(oldLogo.getHref());
+            newLogo.setTarget(oldLogo.getTarget());
+            if (oldLogo.getImg() != null) {
+                newLogo.setImage(convertImage(
+                        oldLogo.getImg(),
+                        oldLogo.getPosition(),
+                        oldLogo.getHeight(),
+                        oldLogo.getWidth(),
+                        oldLogo.getBorder(),
+                        oldLogo.getAlt()));
+            }
+            newModel.addPoweredBy(newLogo);
+        }
+        newModel.setLastModified(oldModel.getLastModified());
+        if (oldModel.getBody() != null) {
+            Body newBody = new Body();
+            newBody.setHead(oldModel.getBody().getHead());
+            for (org.apache.maven.doxia.site.decoration.LinkItem oldLink :
+                    oldModel.getBody().getLinks()) {
+                newBody.addLink(convertLinkItem(oldLink));
+            }
+            for (org.apache.maven.doxia.site.decoration.LinkItem oldBreadcrumb 
:
+                    oldModel.getBody().getBreadcrumbs()) {
+                newBody.addBreadcrumb(convertLinkItem(oldBreadcrumb));
+            }
+
+            for (org.apache.maven.doxia.site.decoration.Menu oldMenu :
+                    oldModel.getBody().getMenus()) {
+                Menu newMenu = new Menu();
+                newMenu.setName(oldMenu.getName());
+                newMenu.setInherit(oldMenu.getInherit());
+                newMenu.setInheritAsRef(oldMenu.isInheritAsRef());
+                newMenu.setRef(oldMenu.getRef());
+                if (oldMenu.getImg() != null) {
+                    newMenu.setImage(convertImage(
+                            oldMenu.getImg(),
+                            oldMenu.getPosition(),
+                            oldMenu.getHeight(),
+                            oldMenu.getWidth(),
+                            oldMenu.getBorder(),
+                            oldMenu.getAlt()));
+                }
+                newMenu.setItems(convertMenuItems(oldMenu.getItems()));
+                newBody.addMenu(newMenu);
+            }
+
+            newBody.setFooter(oldModel.getBody().getFooter());
+            newModel.setBody(newBody);
+        }
+        newModel.setCustom(oldModel.getCustom());
+
+        return newModel;
+    }
+
+    private Banner convertBanner(org.apache.maven.doxia.site.decoration.Banner 
oldBanner) {
+        Banner newBanner = new Banner();
+        newBanner.setName(oldBanner.getName());
+        newBanner.setHref(oldBanner.getHref());
+        if (oldBanner.getSrc() != null) {
+            newBanner.setImage(convertImage(
+                    oldBanner.getSrc(),
+                    null,
+                    oldBanner.getHeight(),
+                    oldBanner.getWidth(),
+                    oldBanner.getBorder(),
+                    oldBanner.getAlt()));
+        }
+
+        return newBanner;
+    }
+
+    private Image convertImage(String src, String position, String height, 
String width, String border, String alt) {
+        Image newImage = new Image();
+        newImage.setSrc(src);
+        newImage.setPosition(position);
+        newImage.setHeight(height);
+        newImage.setWidth(width);
+        if (border != null) {
+            newImage.setStyle("border: " + border + ";");
+        }
+        newImage.setAlt(alt);
+
+        return newImage;
+    }
+
+    private LinkItem 
convertLinkItem(org.apache.maven.doxia.site.decoration.LinkItem oldLinkItem) {
+        LinkItem newLinkItem = new LinkItem();
+        newLinkItem.setName(oldLinkItem.getName());
+        newLinkItem.setHref(oldLinkItem.getHref());
+        newLinkItem.setTarget(oldLinkItem.getTarget());
+        if (oldLinkItem.getImg() != null) {
+            newLinkItem.setImage(convertImage(
+                    oldLinkItem.getImg(),
+                    oldLinkItem.getPosition(),
+                    oldLinkItem.getHeight(),
+                    oldLinkItem.getWidth(),
+                    oldLinkItem.getBorder(),
+                    oldLinkItem.getAlt()));
+        }
+
+        return newLinkItem;
+    }
+
+    private List<MenuItem> 
convertMenuItems(List<org.apache.maven.doxia.site.decoration.MenuItem> 
oldMenuItems) {
+        List<MenuItem> newMenuItems = new ArrayList<>();
+        for (org.apache.maven.doxia.site.decoration.MenuItem oldMenuItem : 
oldMenuItems) {
+            MenuItem newMenuItem = new MenuItem();
+            newMenuItem.setName(oldMenuItem.getName());
+            newMenuItem.setHref(oldMenuItem.getHref());
+            newMenuItem.setTarget(oldMenuItem.getTarget());
+            newMenuItem.setCollapse(oldMenuItem.isCollapse());
+            newMenuItem.setRef(oldMenuItem.getRef());
+            newMenuItem.setItems(convertMenuItems(oldMenuItem.getItems()));
+            if (oldMenuItem.getImg() != null) {
+                newMenuItem.setImage(convertImage(
+                        oldMenuItem.getImg(),
+                        oldMenuItem.getPosition(),
+                        oldMenuItem.getHeight(),
+                        oldMenuItem.getWidth(),
+                        oldMenuItem.getBorder(),
+                        oldMenuItem.getAlt()));
+            }
+            newMenuItems.add(newMenuItem);
+        }
+
+        return newMenuItems;
+    }
+
+    private boolean isOldSiteModel(String siteDescriptorContent) throws 
XmlPullParserException, IOException {
+        XmlPullParser parser = new MXParser();
+        parser.setInput(new StringReader(siteDescriptorContent));
+
+        if (!(parser.getEventType() == XmlPullParser.START_DOCUMENT && 
parser.next() == XmlPullParser.START_TAG)) {
+            return false;
+        }
+        if ("project".equals(parser.getName())) {
+            return true;
+        }
+
+        return false;
+    }
+
     private SiteModel getDefaultSiteModel() throws SiteToolException {
         String siteDescriptorContent;
 
@@ -1094,7 +1293,7 @@ public class DefaultSiteTool implements SiteTool {
             IOUtil.close(reader);
         }
 
-        return readSiteModel(siteDescriptorContent);
+        return readSiteModel(siteDescriptorContent, null, 
SiteTool.DEFAULT_LOCALE);
     }
 
     private String siteModelToString(SiteModel siteModel) throws 
SiteToolException {
diff --git a/doxia-integration-tools/src/main/resources/default-site.xml 
b/doxia-integration-tools/src/main/resources/default-site.xml
index 7f7052f..b523ed9 100644
--- a/doxia-integration-tools/src/main/resources/default-site.xml
+++ b/doxia-integration-tools/src/main/resources/default-site.xml
@@ -18,10 +18,10 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="${project.name}">
-  <bannerLeft>
-    <name>${project.name}</name>
-  </bannerLeft>
+<site xmlns="http://maven.apache.org/SITE/2.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
https://maven.apache.org/xsd/site-2.0.0.xsd";
+  name="${project.name}">
+  <bannerLeft name="${project.name}" />
   <skin>
     <groupId>org.apache.maven.skins</groupId>
     <artifactId>maven-fluido-skin</artifactId>
@@ -35,4 +35,4 @@ under the License.
     <menu ref="modules" />
     <menu ref="reports" />
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
 
b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
index e4782e2..c4dd00b 100644
--- 
a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
+++ 
b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
@@ -22,6 +22,7 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import java.io.File;
+import java.io.StringReader;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -38,6 +39,7 @@ import 
org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.doxia.site.LinkItem;
 import org.apache.maven.doxia.site.SiteModel;
 import org.apache.maven.doxia.site.Skin;
+import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Reader;
 import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Writer;
 import org.apache.maven.doxia.tools.stubs.SiteToolMavenProjectStub;
 import org.apache.maven.project.MavenProject;
@@ -127,7 +129,7 @@ public class SiteToolTest {
         SiteToolMavenProjectStub project = new 
SiteToolMavenProjectStub("site-tool-test");
         Skin skin = new Skin();
         skin.setGroupId("org.apache.maven.skins");
-        skin.setArtifactId("maven-stylus-skin");
+        skin.setArtifactId("maven-fluido-skin");
         assertNotNull(
                 tool.getSkinArtifactFromRepository(newRepoSession(), 
project.getRemoteProjectRepositories(), skin));
     }
@@ -370,13 +372,13 @@ public class SiteToolTest {
         assertEquals("Maven Site", model.getBannerLeft().getName());
         assertEquals(
                 "http://maven.apache.org/images/apache-maven-project.png";,
-                model.getBannerLeft().getSrc());
+                model.getBannerLeft().getImage().getSrc());
         assertEquals("http://maven.apache.org/";, 
model.getBannerLeft().getHref());
         assertNotNull(model.getBannerRight());
         assertNull(model.getBannerRight().getName());
         assertEquals(
                 "http://maven.apache.org/images/maven-small.gif";,
-                model.getBannerRight().getSrc());
+                model.getBannerRight().getImage().getSrc());
         assertNull(model.getBannerRight().getHref());
 
         // model from repo: 
https://repo1.maven.org/maven2/org/apache/maven/maven/3.8.6/maven-3.8.6-site.xml
@@ -396,7 +398,7 @@ public class SiteToolTest {
         assertEquals("dummy", modelFromRepo.getBannerLeft().getName());
         assertEquals(
                 "https://maven.apache.org/images/apache-maven-project.png";,
-                modelFromRepo.getBannerLeft().getSrc());
+                modelFromRepo.getBannerLeft().getImage().getSrc());
         assertEquals("https://maven.apache.org/";, 
modelFromRepo.getBannerLeft().getHref());
         assertNull(modelFromRepo.getBannerRight());
     }
@@ -534,6 +536,37 @@ public class SiteToolTest {
         assertEquals("PATH = PATH property from pom", links.next().getName());
     }
 
+    /**
+     * @throws Exception
+     */
+    @Test
+    public void testConvertOldToNewSiteModel() throws Exception {
+        assertNotNull(tool);
+
+        SiteToolMavenProjectStub project = new 
SiteToolMavenProjectStub("old-to-new-site-model-conversion-test");
+        List<MavenProject> reactorProjects = new ArrayList<MavenProject>();
+
+        // model from current local build
+        SiteModel model = tool.getSiteModel(
+                new File(project.getBasedir(), "src/site"),
+                SiteTool.DEFAULT_LOCALE,
+                project,
+                reactorProjects,
+                newRepoSession(),
+                project.getRemoteProjectRepositories());
+        assertNotNull(model);
+
+        File descriptorFile =
+                
getTestFile("src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/new-site.xml");
+        assertNotNull(descriptorFile);
+        assertTrue(descriptorFile.exists());
+
+        String siteDescriptorContent = FileUtils.fileRead(descriptorFile);
+        SiteModel newModel = new SiteXpp3Reader().read(new 
StringReader(siteDescriptorContent));
+        assertNotNull(newModel);
+        assertEquals(newModel, model);
+    }
+
     private void writeModel(SiteModel model, String to) throws Exception {
         Writer writer = 
WriterFactory.newXmlWriter(getTestFile("target/test-classes/" + to));
         try {
diff --git 
a/doxia-integration-tools/src/test/resources/unit/interpolated-site/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/interpolated-site/src/site/site.xml
index db8aac9..118c544 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/interpolated-site/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/interpolated-site/src/site/site.xml
@@ -19,15 +19,20 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-fluido-skin</artifactId>
+  </skin>
   <body>
     <links>
       <item name="Maven" href="http://maven.apache.org/"/>
@@ -40,4 +45,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
index 091ed51..96beea9 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
@@ -1,24 +1,25 @@
-<?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.
--->
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
http://maven.apache.org/xsd/decoration-1.0.0.xsd";
-    name="${project.name}">
-</project>
\ No newline at end of file
+<?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.
+-->
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="${project.name}">
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
index 27a2913..7943471 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
@@ -19,16 +19,15 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.6.0";
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 
http://maven.apache.org/xsd/decoration-1.6.0.xsd";>
-  <bannerLeft>
-    <name>project.artifactId = ${project.artifactId}</name>
-  </bannerLeft>
-  <bannerRight>
-    <name>this.artifactId = ${this.artifactId}</name>
-  </bannerRight>
-
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd">
+  <bannerLeft name="project.artifactId = ${project.artifactId}" />
+  <bannerRight name="this.artifactId = ${this.artifactId}" />
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-fluido-skin</artifactId>
+  </skin>
   <body>
     <links>
       <!-- late interpolation from project model -->
@@ -49,4 +48,4 @@ under the License.
       <item name="project.name = ${project.name}" href="${this.url}" />
     </breadcrumbs>
   </body>
-</project>
+</site>
diff --git 
a/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/pom.xml
similarity index 52%
copy from 
doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml
copy to 
doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/pom.xml
index 64c545c..0382a76 100644
--- a/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/pom.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -9,7 +8,7 @@ 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
+    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
@@ -19,20 +18,23 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.6.0";
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.6.0.xsd"
-  name="Child No Inheritance"
-  combine.self="override">
-  <body>
-    <links>
-      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
-    </links>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.shared</groupId>
+  <artifactId>old-to-new-site-model-conversion-test</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
 
-    <menu name="Subproject menu">
-      <item name="Introduction" href="/indexChild.html"/>
-      <item name="Usage" href="/usageChild.html"/>
-    </menu>
+  <name>dummy</name>
 
-  </body>
-</project>
\ No newline at end of file
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/new-site.xml
 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/new-site.xml
new file mode 100644
index 0000000..3ad354b
--- /dev/null
+++ 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/new-site.xml
@@ -0,0 +1,80 @@
+<?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.
+-->
+
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; 
alt="banner left" height="200px" width="200px" style="border: solid;" />
+  </bannerLeft>
+  <bannerRight name="right" />
+  <publishDate position="top" format="yyyyMMdd" timezone="Europe/Berlin" />
+  <version position="bottom" />
+  <edit>foo</edit>
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-stylus-skin</artifactId>
+  </skin>
+  <poweredBy>
+    <logo name="first" />
+    <logo name="second" href="foo" target="_blank">
+      <image src="logo.png" position="left" alt="second logo" width="10px" 
height="10px" style="border: dotted;" />
+    </logo>
+  </poweredBy>
+  <body>
+    <head>head injection</head>
+    <links>
+      <item name="Maven" href="http://maven.apache.org/"; />
+      <item name="Maven" href="http://maven.apache.org/"; target="_blank">
+        <image src="link.jpeg" position="left" alt="second link" width="10px" 
height="10px" style="border: dotted;" />
+      </item>
+    </links>
+    <breadcrumbs>
+      <item name="Maven" href="http://maven.apache.org/"; />
+      <item name="Maven" href="http://maven.apache.org/"; target="_blank">
+        <image src="breadcrumb.jpeg" position="left" alt="second breadcrumb" 
width="10px" height="10px" style="border: dotted;" />
+      </item>
+    </breadcrumbs>
+
+    <menu name="Overview">
+      <item name="Test" href="/test.html" />
+    </menu>
+    <menu name="Details" inherit="bottom" inheritAsRef="false" ref="foo">
+      <image src="menu.jpeg" position="left" alt="second menu" width="10px" 
height="10px" style="border: dotted;" />
+      <item name="Test" href="/test.html" collapse="false" ref="foo">
+        <image src="item.jpeg" position="left" alt="second menu" width="10px" 
height="10px" style="border: dotted;" />
+        <item name="Nested Test" href="/test.html" collapse="false" ref="foo">
+          <image src="nested-item.jpeg" position="left" alt="second menu" 
width="10px" height="10px" style="border: dotted;" />
+        </item>
+      </item>
+    </menu>
+    <menu ref="reports" />
+
+    <footer>footer injection</footer>
+  </body>
+
+  <custom>
+    <options>
+      <foo>bar</foo>
+    </options>
+  </custom>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/site.xml
new file mode 100644
index 0000000..45a9688
--- /dev/null
+++ 
b/doxia-integration-tools/src/test/resources/unit/old-to-new-site-model-conversion-test/src/site/site.xml
@@ -0,0 +1,78 @@
+<?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.
+-->
+
+<project xmlns="http://maven.apache.org/DECORATION/1.8.1";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.1 
file:../../../target/generated-site/xsd/decoration-1.8.1.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft>
+    <name>Maven Site</name>
+    <href>http://maven.apache.org/</href>
+    <src>http://maven.apache.org/images/apache-maven-project.png</src>
+    <alt>banner left</alt>
+    <border>solid</border>
+    <height>200px</height>
+    <width>200px</width>
+  </bannerLeft>
+  <bannerRight>
+    <name>right</name>
+  </bannerRight>
+  <publishDate position="top" format="yyyyMMdd" timezone="Europe/Berlin" />
+  <version position="bottom" />
+  <edit>foo</edit>
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-stylus-skin</artifactId>
+  </skin>
+  <poweredBy>
+    <logo name="first" />
+    <logo name="second" href="foo" target="_blank" img="logo.png" 
position="left" alt="second logo" border="dotted" width="10px" height="10px" />
+  </poweredBy>
+  <body>
+    <head>head injection</head>
+    <links>
+      <item name="Maven" href="http://maven.apache.org/"; />
+      <item name="Maven" href="http://maven.apache.org/"; target="_blank" 
img="link.jpeg" position="left" alt="second link" border="dotted" width="10px" 
height="10px" />
+    </links>
+    <breadcrumbs>
+      <item name="Maven" href="http://maven.apache.org/"; />
+      <item name="Maven" href="http://maven.apache.org/"; target="_blank" 
img="breadcrumb.jpeg" position="left" alt="second breadcrumb" border="dotted" 
width="10px" height="10px" />
+    </breadcrumbs>
+
+    <menu name="Overview">
+      <item name="Test" href="/test.html"/>
+    </menu>
+    <menu name="Details" inherit="bottom" inheritAsRef="false" ref="foo" 
img="menu.jpeg" position="left" alt="second menu" border="dotted" width="10px" 
height="10px">
+      <item name="Test" href="/test.html" collapse="false" ref="foo" 
img="item.jpeg" position="left" alt="second menu" border="dotted" width="10px" 
height="10px">
+        <item name="Nested Test" href="/test.html" collapse="false" ref="foo" 
img="nested-item.jpeg" position="left" alt="second menu" border="dotted" 
width="10px" height="10px" />
+      </item>
+    </menu>
+    <menu ref="reports" />
+
+    <footer>footer injection</footer>
+  </body>
+
+  <custom>
+    <options>
+      <foo>bar</foo>
+    </options>
+  </custom>
+</project>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site.xml
index a65c9a9..37d75d8 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site_de_DE_BY.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site_de_DE_BY.xml
index 849863c..109905d 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site_de_DE_BY.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/full/src/site/site_de_DE_BY.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site.xml
index a65c9a9..37d75d8 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site_de.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site_de.xml
index e330ea1..c176934 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site_de.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language/src/site/site_de.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site.xml
index dec2ea7..150ee16 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site_de_DE.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site_de_DE.xml
index dec2ea7..150ee16 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site_de_DE.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-locales-test/language_country/src/site/site_de_DE.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git 
a/doxia-integration-tools/src/test/resources/unit/site-tool-test/src/site/site.xml
 
b/doxia-integration-tools/src/test/resources/unit/site-tool-test/src/site/site.xml
index dec2ea7..150ee16 100644
--- 
a/doxia-integration-tools/src/test/resources/unit/site-tool-test/src/site/site.xml
+++ 
b/doxia-integration-tools/src/test/resources/unit/site-tool-test/src/site/site.xml
@@ -19,18 +19,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project name="Maven Dummy Site">
-  <bannerLeft>
-    <name>Maven Site</name>
-    <src>http://maven.apache.org/images/apache-maven-project.png</src>
-    <href>http://maven.apache.org/</href>
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
+  name="Maven Dummy Site">
+  <bannerLeft name="Maven Site" href="http://maven.apache.org/";>
+    <image src="http://maven.apache.org/images/apache-maven-project.png"; />
   </bannerLeft>
   <bannerRight>
-    <src>http://maven.apache.org/images/maven-small.gif</src>
+    <image src="http://maven.apache.org/images/maven-small.gif"; />
   </bannerRight>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
+    <artifactId>maven-fluido-skin</artifactId>
   </skin>
   <body>
     <links>
@@ -42,4 +43,4 @@ under the License.
     </menu>
     <menu ref="reports"/>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/pom.xml b/doxia-site-model/pom.xml
index 2a392d9..610a13b 100644
--- a/doxia-site-model/pom.xml
+++ b/doxia-site-model/pom.xml
@@ -63,11 +63,6 @@ under the License.
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <configuration>
-          <models>
-            <model>src/main/mdo/site.mdo</model>
-          </models>
-          <!-- TODO Do not forget to update the version in the description. 
See DOXIASITETOOLS-98. -->
-          <version>2.0.0</version>
           <firstVersion>1.0.0</firstVersion>
         </configuration>
         <executions>
@@ -80,6 +75,28 @@ under the License.
               <goal>xsd</goal>
             </goals>
             <phase>generate-sources</phase>
+            <configuration>
+              <models>
+                <model>src/main/mdo/site.mdo</model>
+              </models>
+              <!-- TODO Do not forget to update the version in the 
description. See DOXIASITETOOLS-98. -->
+              <version>2.0.0</version>
+            </configuration>
+          </execution>
+          <execution>
+            <id>old-descriptor</id>
+            <goals>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xsd</goal>
+            </goals>
+            <phase>generate-sources</phase>
+            <configuration>
+              <models>
+                <model>src/main/mdo/decoration.mdo</model>
+              </models>
+              <version>1.8.1</version>
+            </configuration>
           </execution>
           <execution>
             <id>descriptor-xdoc</id>
@@ -87,6 +104,26 @@ under the License.
               <goal>xdoc</goal>
             </goals>
             <phase>pre-site</phase>
+            <configuration>
+              <models>
+                <model>src/main/mdo/site.mdo</model>
+              </models>
+              <!-- TODO Do not forget to update the version in the 
description. See DOXIASITETOOLS-98. -->
+              <version>2.0.0</version>
+            </configuration>
+          </execution>
+          <execution>
+            <id>old-descriptor-xdoc</id>
+            <goals>
+              <goal>xdoc</goal>
+            </goals>
+            <phase>pre-site</phase>
+            <configuration>
+              <models>
+                <model>src/main/mdo/decoration.mdo</model>
+              </models>
+              <version>1.8.1</version>
+            </configuration>
           </execution>
           <execution>
             <id>descriptor-xsd</id>
@@ -95,6 +132,25 @@ under the License.
             </goals>
             <phase>pre-site</phase>
             <configuration>
+              <models>
+                <model>src/main/mdo/site.mdo</model>
+              </models>
+              <!-- TODO Do not forget to update the version in the 
description. See DOXIASITETOOLS-98. -->
+              <version>2.0.0</version>
+              
<outputDirectory>${project.build.directory}/generated-site/resources/xsd</outputDirectory>
+            </configuration>
+          </execution>
+          <execution>
+            <id>old-descriptor-xsd</id>
+            <goals>
+              <goal>xsd</goal>
+            </goals>
+            <phase>pre-site</phase>
+            <configuration>
+              <models>
+                <model>src/main/mdo/decoration.mdo</model>
+              </models>
+              <version>1.8.1</version>
               
<outputDirectory>${project.build.directory}/generated-site/resources/xsd</outputDirectory>
             </configuration>
           </execution>
diff --git 
a/doxia-site-model/src/main/java/org/apache/maven/doxia/site/inheritance/DefaultSiteModelInheritanceAssembler.java
 
b/doxia-site-model/src/main/java/org/apache/maven/doxia/site/inheritance/DefaultSiteModelInheritanceAssembler.java
index ff758df..5a88135 100644
--- 
a/doxia-site-model/src/main/java/org/apache/maven/doxia/site/inheritance/DefaultSiteModelInheritanceAssembler.java
+++ 
b/doxia-site-model/src/main/java/org/apache/maven/doxia/site/inheritance/DefaultSiteModelInheritanceAssembler.java
@@ -24,7 +24,6 @@ import javax.inject.Singleton;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.maven.doxia.site.Banner;
 import org.apache.maven.doxia.site.Body;
 import org.apache.maven.doxia.site.LinkItem;
 import org.apache.maven.doxia.site.Logo;
@@ -55,12 +54,12 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
 
         if (child.getBannerLeft() == null && parent.getBannerLeft() != null) {
             child.setBannerLeft(parent.getBannerLeft().clone());
-            rebaseBannerPaths(child.getBannerLeft(), urlContainer);
+            rebaseLinkItemPaths(child.getBannerLeft(), urlContainer);
         }
 
         if (child.getBannerRight() == null && parent.getBannerRight() != null) 
{
             child.setBannerRight(parent.getBannerRight().clone());
-            rebaseBannerPaths(child.getBannerRight(), urlContainer);
+            rebaseLinkItemPaths(child.getBannerRight(), urlContainer);
         }
 
         if (child.isDefaultPublishDate() && parent.getPublishDate() != null) {
@@ -97,15 +96,15 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
         }
 
         if (siteModel.getBannerLeft() != null) {
-            relativizeBannerPaths(siteModel.getBannerLeft(), baseUrl);
+            relativizeLinkItemPaths(siteModel.getBannerLeft(), baseUrl);
         }
 
         if (siteModel.getBannerRight() != null) {
-            relativizeBannerPaths(siteModel.getBannerRight(), baseUrl);
+            relativizeLinkItemPaths(siteModel.getBannerRight(), baseUrl);
         }
 
         for (Logo logo : siteModel.getPoweredBy()) {
-            relativizeLogoPaths(logo, baseUrl);
+            relativizeLinkItemPaths(logo, baseUrl);
         }
 
         if (siteModel.getBody() != null) {
@@ -119,34 +118,13 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
 
             for (Menu menu : siteModel.getBody().getMenus()) {
                 relativizeMenuPaths(menu.getItems(), baseUrl);
+                if (menu.getImage() != null) {
+                    
menu.getImage().setSrc(relativizeLink(menu.getImage().getSrc(), baseUrl));
+                }
             }
         }
     }
 
-    /**
-     * Resolves all relative paths between the elements in a banner. The 
banner element might contain relative paths
-     * to the oldBaseUrl, these are changed to the newBannerUrl.
-     *
-     * @param banner
-     * @param baseUrl
-     */
-    private void relativizeBannerPaths(final Banner banner, final String 
baseUrl) {
-        // banner has been checked to be not null, both href and src may be 
empty or null
-        banner.setHref(relativizeLink(banner.getHref(), baseUrl));
-        banner.setSrc(relativizeLink(banner.getSrc(), baseUrl));
-    }
-
-    private void rebaseBannerPaths(final Banner banner, final URLRebaser 
urlContainer) {
-        if (banner.getHref() != null) // it may be empty
-        {
-            banner.setHref(urlContainer.rebaseLink(banner.getHref()));
-        }
-
-        if (banner.getSrc() != null) {
-            banner.setSrc(urlContainer.rebaseLink(banner.getSrc()));
-        }
-    }
-
     private void assembleCustomInheritance(final SiteModel child, final 
SiteModel parent) {
         if (child.getCustom() == null) {
             child.setCustom(parent.getCustom());
@@ -207,6 +185,10 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
                 final Menu clone = menu.clone();
 
                 rebaseMenuPaths(clone.getItems(), urlContainer);
+                if (clone.getImage() != null) {
+                    clone.getImage()
+                            
.setSrc(urlContainer.rebaseLink(clone.getImage().getSrc()));
+                }
 
                 menus.add(topCounter, clone);
                 topCounter++;
@@ -214,6 +196,10 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
                 final Menu clone = menu.clone();
 
                 rebaseMenuPaths(clone.getItems(), urlContainer);
+                if (clone.getImage() != null) {
+                    clone.getImage()
+                            
.setSrc(urlContainer.rebaseLink(clone.getImage().getSrc()));
+                }
 
                 menus.add(clone);
             }
@@ -238,20 +224,16 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
 
     private void relativizeLinkItemPaths(final LinkItem item, final String 
baseUrl) {
         item.setHref(relativizeLink(item.getHref(), baseUrl));
+        if (item.getImage() != null) {
+            item.getImage().setSrc(relativizeLink(item.getImage().getSrc(), 
baseUrl));
+        }
     }
 
     private void rebaseLinkItemPaths(final LinkItem item, final URLRebaser 
urlContainer) {
         item.setHref(urlContainer.rebaseLink(item.getHref()));
-    }
-
-    private void relativizeLogoPaths(final Logo logo, final String baseUrl) {
-        logo.setImg(relativizeLink(logo.getImg(), baseUrl));
-        relativizeLinkItemPaths(logo, baseUrl);
-    }
-
-    private void rebaseLogoPaths(final Logo logo, final URLRebaser 
urlContainer) {
-        logo.setImg(urlContainer.rebaseLink(logo.getImg()));
-        rebaseLinkItemPaths(logo, urlContainer);
+        if (item.getImage() != null) {
+            
item.getImage().setSrc(urlContainer.rebaseLink(item.getImage().getSrc()));
+        }
     }
 
     private List<LinkItem> mergeLinkItemLists(
@@ -293,7 +275,7 @@ public class DefaultSiteModelInheritanceAssembler 
implements SiteModelInheritanc
             if (!logos.contains(logo)) {
                 final Logo clone = logo.clone();
 
-                rebaseLogoPaths(clone, urlContainer);
+                rebaseLinkItemPaths(clone, urlContainer);
 
                 logos.add(clone);
             }
diff --git a/doxia-site-model/src/main/mdo/site.mdo 
b/doxia-site-model/src/main/mdo/decoration.mdo
similarity index 92%
copy from doxia-site-model/src/main/mdo/site.mdo
copy to doxia-site-model/src/main/mdo/decoration.mdo
index 531a7e9..aa0adbb 100644
--- a/doxia-site-model/src/main/mdo/site.mdo
+++ b/doxia-site-model/src/main/mdo/decoration.mdo
@@ -20,30 +20,30 @@ under the License.
 -->
 
 <model xmlns="http://codehaus-plexus.github.io/MODELLO/2.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/2.0.0 
https://codehaus-plexus.github.io/modello/xsd/modello-2.0.0.xsd";
-  xml.namespace="http://maven.apache.org/SITE/${version}";
-  xml.schemaLocation="http://maven.apache.org/xsd/site-${version}.xsd";>
-  <id>site</id>
-  <name>Site</name>
+  xml.namespace="http://maven.apache.org/DECORATION/${version}";
+  xml.schemaLocation="http://maven.apache.org/xsd/decoration-${version}.xsd";>
+  <id>decoration</id>
+  <name>Decoration</name>
   <description><![CDATA[
-    <p>This is a reference for the site descriptor used in Doxia Sitetools, 
also known as <code>site.xml</code>:
+    <p>This is a reference for the site decoration descriptor used in Doxia 
Sitetools, also known as <code>site.xml</code>:
     it is used to configure a site template (aka skin).</p>
     <p>An XSD is available at:</p>
     <ul>
       <!-- There is no property filtering in Modello, this has to be updated 
manually. See DOXIASITETOOLS-98. -->
-      <li><a 
href="https://maven.apache.org/xsd/site-2.0.0.xsd";>https://maven.apache.org/xsd/site-2.0.0.xsd</a></li>
+      <li><a 
href="https://maven.apache.org/xsd/decoration-1.8.1.xsd";>https://maven.apache.org/xsd/decoration-1.8.1.xsd</a></li>
     </ul>
     ]]></description>
 
   <defaults>
     <default>
       <key>package</key>
-      <value>org.apache.maven.doxia.site</value>
+      <value>org.apache.maven.doxia.site.decoration</value>
     </default>
   </defaults>
 
   <classes>
     <class rootElement="true" xml.tagName="project" java.clone="deep">
-      <name>SiteModel</name>
+      <name>DecorationModel</name>
       <description><![CDATA[
          The <code>&lt;project&gt;</code> element is the root of the site 
decoration descriptor.
       ]]></description>
@@ -51,7 +51,7 @@ under the License.
       <fields>
         <field xml.attribute="true">
           <name>name</name>
-          <description>The full name of the project site.</description>
+          <description>The full name of the project.</description>
           <version>1.0.0+</version>
           <type>String</type>
           <identifier>true</identifier>
@@ -133,7 +133,7 @@ under the License.
         </field>
         <field xdoc.separator="blank">
           <name>body</name>
-          <description>The main site content.</description>
+          <description>The main site content decoration.</description>
           <version>1.0.0+</version>
           <association>
             <type>Body</type>
@@ -144,8 +144,8 @@ under the License.
           <name>custom</name>
           <description><![CDATA[
             Custom configuration for use with customized Velocity templates. 
Data from this field are
-            accessible in Velocity template from <code>$site.custom</code> 
variable as DOM content.
-            Example: <code>$site.custom.getChild( 'customElement' 
).getValue()</code>
+            accessible in Velocity template from 
<code>$decoration.custom</code> variable as DOM content.
+            Example: <code>$decoration.custom.getChild( 'customElement' 
).getValue()</code>
           ]]></description>
           <version>1.0.0+</version>
           <type>DOM</type>
@@ -153,7 +153,7 @@ under the License.
         </field>
         <field xml.transient="true">
           <name>lastModified</name>
-          <description>Timestamp of the last modification of this site 
model.</description>
+          <description>Timestamp of the last modification of this decoration 
model.</description>
           <version>1.0.1+</version>
           <type>long</type>
         </field>
@@ -261,50 +261,6 @@ under the License.
             ]]>
           </code>
         </codeSegment>
-        <codeSegment>
-          <version>1.7.0+</version>
-          <code>
-    /**
-     * @since 1.7
-     * @see SiteUtils#isLink
-     */
-    public boolean isLink( String href )
-    {
-        return SiteUtils.isLink( href );
-    }
-          </code>
-        </codeSegment>
-        <codeSegment>
-          <version>1.8.0+</version>
-          <code>
-    /**
-     * @since 1.8
-     * @see SiteUtils#getCustomChild
-     */
-    public Object getCustomChild( String path )
-    {
-        return SiteUtils.getCustomChild( 
(org.codehaus.plexus.util.xml.Xpp3Dom) custom, path );
-    }
-
-    /**
-     * @since 1.8
-     * @see SiteUtils#getCustomValue
-     */
-    public String getCustomValue( String path )
-    {
-        return SiteUtils.getCustomValue( 
(org.codehaus.plexus.util.xml.Xpp3Dom) custom, path );
-    }
-
-    /**
-     * @since 1.8
-     * @see SiteUtils#getCustomValue
-     */
-    public String getCustomValue( String path, String defaultValue )
-    {
-        return SiteUtils.getCustomValue( 
(org.codehaus.plexus.util.xml.Xpp3Dom) custom, path, defaultValue );
-    }
-          </code>
-        </codeSegment>
       </codeSegments>
     </class>
 
@@ -402,7 +358,7 @@ under the License.
               of the Java Virtual Machine. Refer to 
<code>java.util.TimeZone</code> for details.
             ]]>
           </description>
-          <version>2.0.0+</version>
+          <version>1.8.1+</version>
           <type>String</type>
           <identifier>true</identifier>
           <defaultValue>Etc/UTC</defaultValue>
@@ -435,7 +391,7 @@ under the License.
 
     <class java.clone="deep" xsd.compositor="sequence">
       <name>Body</name>
-      <description>The main content.</description>
+      <description>The main content decoration.</description>
       <version>1.0.0+</version>
       <fields>
         <field>
diff --git a/doxia-site-model/src/main/mdo/site.mdo 
b/doxia-site-model/src/main/mdo/site.mdo
index 531a7e9..fc68742 100644
--- a/doxia-site-model/src/main/mdo/site.mdo
+++ b/doxia-site-model/src/main/mdo/site.mdo
@@ -21,7 +21,7 @@ under the License.
 
 <model xmlns="http://codehaus-plexus.github.io/MODELLO/2.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/2.0.0 
https://codehaus-plexus.github.io/modello/xsd/modello-2.0.0.xsd";
   xml.namespace="http://maven.apache.org/SITE/${version}";
-  xml.schemaLocation="http://maven.apache.org/xsd/site-${version}.xsd";>
+  xml.schemaLocation="https://maven.apache.org/xsd/site-${version}.xsd";>
   <id>site</id>
   <name>Site</name>
   <description><![CDATA[
@@ -42,10 +42,10 @@ under the License.
   </defaults>
 
   <classes>
-    <class rootElement="true" xml.tagName="project" java.clone="deep">
+    <class rootElement="true" xml.tagName="site" java.clone="deep">
       <name>SiteModel</name>
       <description><![CDATA[
-         The <code>&lt;project&gt;</code> element is the root of the site 
decoration descriptor.
+         The <code>&lt;site&gt;</code> element is the root of the site 
decoration descriptor.
       ]]></description>
       <version>1.0.0+</version>
       <fields>
@@ -312,65 +312,7 @@ under the License.
       <name>Banner</name>
       <description>Banner logo on the masthead of the site.</description>
       <version>1.0.0+</version>
-      <fields>
-        <!-- Ideally we want attributes DOXIA-335 -->
-        <field>
-          <name>name</name>
-          <version>1.0.0+</version>
-          <description>The name of the banner.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>src</name>
-          <version>1.0.0+</version>
-          <description>The source location of an image for the 
banner.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>alt</name>
-          <version>1.0.0+</version>
-          <description>The alt description for the banner image.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>href</name>
-          <version>1.0.0+</version>
-          <description>The href of a link to be used for the banner 
image.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>border</name>
-          <description>The border to use for the banner image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>width</name>
-          <description>The width to use for the banner image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>height</name>
-          <description>The height to use for the banner image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>title</name>
-          <version>1.3.0+</version>
-          <description>The title for the banner image.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-      </fields>
+      <superClass>LinkItem</superClass>
     </class>
 
     <class java.clone="deep">
@@ -402,7 +344,7 @@ under the License.
               of the Java Virtual Machine. Refer to 
<code>java.util.TimeZone</code> for details.
             ]]>
           </description>
-          <version>2.0.0+</version>
+          <version>1.8.1+</version>
           <type>String</type>
           <identifier>true</identifier>
           <defaultValue>Etc/UTC</defaultValue>
@@ -438,13 +380,6 @@ under the License.
       <description>The main content.</description>
       <version>1.0.0+</version>
       <fields>
-        <field>
-          <name>head</name>
-          <description>Additional content (like JavaScript) to include in the 
HEAD block of the generated pages.</description>
-          <version>1.0.0/1.6.0</version>
-          <type>DOM</type>
-          <identifier>true</identifier>
-        </field>
         <field>
           <name>head</name>
           <description>Additional content (like JavaScript) to include in the 
HEAD block of the generated pages.</description>
@@ -489,13 +424,6 @@ under the License.
           <type>String</type>
           <identifier>true</identifier>
         </field>
-        <field>
-          <name>footer</name>
-          <description>If present, the contained text will be used instead of 
the generated copyright text.</description>
-          <version>1.1.0/1.6.0</version>
-          <type>DOM</type>
-          <identifier>true</identifier>
-        </field>
       </fields>
     </class>
 
@@ -518,49 +446,6 @@ under the License.
           <type>String</type>
           <identifier>true</identifier>
         </field>
-        <field xml.attribute="true">
-          <name>img</name>
-          <description>The source location of an image.</description>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>position</name>
-          <description>Where to place the image regarding the displayed name 
(left or right).</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-          <defaultValue>left</defaultValue>
-        </field>
-        <field xml.attribute="true">
-          <name>alt</name>
-          <description>The alt to use for the image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>border</name>
-          <description>The border to use for the image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>width</name>
-          <description>The width to use for the image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>height</name>
-          <description>The height to use for the image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
         <field xml.attribute="true">
           <name>target</name>
           <description>Where the new document will be displayed when the user 
follows a link, i.e. _blank opens the new document in a new 
window.</description>
@@ -568,11 +453,13 @@ under the License.
           <type>String</type>
           <identifier>true</identifier>
         </field>
-        <field xml.attribute="true">
-          <name>title</name>
-          <description>The title to use for the image.</description>
-          <version>1.3.0+</version>
-          <type>String</type>
+        <field>
+          <name>image</name>
+          <version>2.0.0+</version>
+          <description>The image for the link.</description>
+          <association>
+            <type>Image</type>
+          </association>
           <identifier>true</identifier>
         </field>
       </fields>
@@ -603,7 +490,7 @@ under the License.
           <name>inheritAsRef</name>
           <description><![CDATA[
             If this is a reference, setting to <code>true</code> means that it 
will be populated
-            in the project, whereas if it is <code>false</code>, it is 
populated in the parent and then inherited.
+            in the site, whereas if it is <code>false</code>, it is populated 
in the parent and then inherited.
           ]]></description>
           <version>1.0.0+</version>
           <type>boolean</type>
@@ -618,54 +505,13 @@ under the License.
           <type>String</type>
           <identifier>true</identifier>
         </field>
-        <field xml.attribute="true">
-          <name>img</name>
-          <description>The source location of an menu image.</description>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>alt</name>
-          <version>1.0.1+</version>
-          <description>The alt description for the image.</description>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>position</name>
-          <description>Where to place the image regarding the displayed name 
(left or right).</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-          <defaultValue>left</defaultValue>
-        </field>
-        <field xml.attribute="true">
-          <name>border</name>
-          <description>The border to use for the menu image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>width</name>
-          <description>The width to use for the menu image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>height</name>
-          <description>The height to use for the menu image.</description>
-          <version>1.0.1+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field xml.attribute="true">
-          <name>title</name>
-          <version>1.3.0+</version>
-          <description>The title for the image.</description>
-          <type>String</type>
+        <field>
+          <name>image</name>
+          <version>2.0.0+</version>
+          <description>The image for the menu.</description>
+          <association>
+            <type>Image</type>
+          </association>
           <identifier>true</identifier>
         </field>
         <field>
@@ -687,13 +533,6 @@ under the License.
       <version>1.0.0+</version>
       <superClass>LinkItem</superClass>
       <fields>
-        <field>
-          <name>description</name>
-          <description>A description of the menu item. This is used on any 
summary pages for a menu.</description>
-          <version>1.0.0+</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
         <field xml.attribute="true">
           <name>collapse</name>
           <description>Whether to collapse children elements of an item menu 
(by default).</description>
@@ -722,6 +561,58 @@ under the License.
       </fields>
     </class>
 
+    <class java.clone="deep">
+      <name>Image</name>
+      <description>An image.</description>
+      <version>2.0.0+</version>
+      <fields>
+        <field xml.attribute="true">
+          <name>src</name>
+          <description>The source location.</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <required>true</required>
+          <identifier>true</identifier>
+        </field>
+        <field xml.attribute="true">
+          <name>position</name>
+          <description>Where to place the image relative to the displayed name 
(left or right).</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <identifier>true</identifier>
+          <defaultValue>left</defaultValue>
+        </field>
+        <field xml.attribute="true">
+          <name>alt</name>
+          <description>The alternative text to use.</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field xml.attribute="true">
+          <name>width</name>
+          <description>The width to use.</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field xml.attribute="true">
+          <name>height</name>
+          <description>The height to use.</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field xml.attribute="true">
+          <name>style</name>
+          <description>The style to use.</description>
+          <version>2.0.0+</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+      </fields>
+    </class>
+
     <class java.clone="deep">
       <name>Skin</name>
       <description>A skin artifact declaration.</description>
diff --git 
a/doxia-site-model/src/test/java/org/apache/maven/doxia/site/inheritance/SiteModelInheritanceAssemblerTest.java
 
b/doxia-site-model/src/test/java/org/apache/maven/doxia/site/inheritance/SiteModelInheritanceAssemblerTest.java
index cbfbf28..fedd624 100644
--- 
a/doxia-site-model/src/test/java/org/apache/maven/doxia/site/inheritance/SiteModelInheritanceAssemblerTest.java
+++ 
b/doxia-site-model/src/test/java/org/apache/maven/doxia/site/inheritance/SiteModelInheritanceAssemblerTest.java
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.maven.doxia.site.Banner;
 import org.apache.maven.doxia.site.Body;
+import org.apache.maven.doxia.site.Image;
 import org.apache.maven.doxia.site.LinkItem;
 import org.apache.maven.doxia.site.Logo;
 import org.apache.maven.doxia.site.Menu;
@@ -169,7 +170,7 @@ public class SiteModelInheritanceAssemblerTest {
         assertEquals("http://jakarta.apache.org/";, 
childModel.getBannerLeft().getHref(), "check left banner href");
         assertEquals(
                 "http://jakarta.apache.org/images/jakarta-logo.gif";,
-                childModel.getBannerLeft().getSrc(),
+                childModel.getBannerLeft().getImage().getSrc(),
                 "check left banner image");
 
         assertEquals(
@@ -178,12 +179,12 @@ public class SiteModelInheritanceAssemblerTest {
                 "check right banner href");
         assertEquals(
                 "http://jakarta.apache.org/commons/images/logo.png";,
-                childModel.getBannerRight().getSrc(),
+                childModel.getBannerRight().getImage().getSrc(),
                 "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("http://tomcat.apache.org/";, poweredBy.getHref(), "check 
powered by logo href");
-        assertEquals("http://tomcat.apache.org/logo.gif";, poweredBy.getImg(), 
"check powered by logo image");
+        assertEquals("http://tomcat.apache.org/logo.gif";, 
poweredBy.getImage().getSrc(), "check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("http://www.apache.org/";, breadcrumb.getHref(), "check 
breadcrumb href");
@@ -221,14 +222,20 @@ public class SiteModelInheritanceAssemblerTest {
 
     private static void assertPathsResolvedForRelativeUrls(final SiteModel 
childModel) {
         assertEquals("../banner/left", childModel.getBannerLeft().getHref(), 
"check left banner href");
-        assertEquals("../images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc(), "check left banner image");
+        assertEquals(
+                "../images/jakarta-logo.gif",
+                childModel.getBannerLeft().getImage().getSrc(),
+                "check left banner image");
 
         assertEquals("../banner/right/", 
childModel.getBannerRight().getHref(), "check right banner href");
-        assertEquals("../commons/images/logo.png", 
childModel.getBannerRight().getSrc(), "check right banner image");
+        assertEquals(
+                "../commons/images/logo.png",
+                childModel.getBannerRight().getImage().getSrc(),
+                "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("../tomcat", poweredBy.getHref(), "check powered by logo 
href");
-        assertEquals("../tomcat/logo.gif", poweredBy.getImg(), "check powered 
by logo image");
+        assertEquals("../tomcat/logo.gif", poweredBy.getImage().getSrc(), 
"check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("../apache", breadcrumb.getHref(), "check breadcrumb 
href");
@@ -269,14 +276,20 @@ public class SiteModelInheritanceAssemblerTest {
 
     private static void assertPathsResolvedForSubsiteUrls(final SiteModel 
childModel) {
         assertEquals("../banner/left", childModel.getBannerLeft().getHref(), 
"check left banner href");
-        assertEquals("../images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc(), "check left banner image");
+        assertEquals(
+                "../images/jakarta-logo.gif",
+                childModel.getBannerLeft().getImage().getSrc(),
+                "check left banner image");
 
         assertEquals("../banner/right/", 
childModel.getBannerRight().getHref(), "check right banner href");
-        assertEquals("../commons/images/logo.png", 
childModel.getBannerRight().getSrc(), "check right banner image");
+        assertEquals(
+                "../commons/images/logo.png",
+                childModel.getBannerRight().getImage().getSrc(),
+                "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("../tomcat", poweredBy.getHref(), "check powered by logo 
href");
-        assertEquals("../tomcat/logo.gif", poweredBy.getImg(), "check powered 
by logo image");
+        assertEquals("../tomcat/logo.gif", poweredBy.getImage().getSrc(), 
"check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("../apache", breadcrumb.getHref(), "check breadcrumb 
href");
@@ -314,15 +327,20 @@ public class SiteModelInheritanceAssemblerTest {
 
     private static void assertPathsResolvedForRelativeUrlsDepthOfTwo(final 
SiteModel childModel) {
         assertEquals("../../banner/left", 
childModel.getBannerLeft().getHref(), "check left banner href");
-        assertEquals("../../images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc(), "check left banner image");
+        assertEquals(
+                "../../images/jakarta-logo.gif",
+                childModel.getBannerLeft().getImage().getSrc(),
+                "check left banner image");
 
         assertEquals("../../banner/right/", 
childModel.getBannerRight().getHref(), "check right banner href");
         assertEquals(
-                "../../commons/images/logo.png", 
childModel.getBannerRight().getSrc(), "check right banner image");
+                "../../commons/images/logo.png",
+                childModel.getBannerRight().getImage().getSrc(),
+                "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("../../tomcat", poweredBy.getHref(), "check powered by 
logo href");
-        assertEquals("../../tomcat/logo.gif", poweredBy.getImg(), "check 
powered by logo image");
+        assertEquals("../../tomcat/logo.gif", poweredBy.getImage().getSrc(), 
"check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("../../apache", breadcrumb.getHref(), "check breadcrumb 
href");
@@ -360,15 +378,20 @@ public class SiteModelInheritanceAssemblerTest {
 
     private static void assertPathsResolvedForReverseRelativeUrls(final 
SiteModel childModel) {
         assertEquals("doxia/banner/left", 
childModel.getBannerLeft().getHref(), "check left banner href");
-        assertEquals("doxia/images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc(), "check left banner image");
+        assertEquals(
+                "doxia/images/jakarta-logo.gif",
+                childModel.getBannerLeft().getImage().getSrc(),
+                "check left banner image");
 
         assertEquals("doxia/banner/right/", 
childModel.getBannerRight().getHref(), "check right banner href");
         assertEquals(
-                "doxia/commons/images/logo.png", 
childModel.getBannerRight().getSrc(), "check right banner image");
+                "doxia/commons/images/logo.png",
+                childModel.getBannerRight().getImage().getSrc(),
+                "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("doxia/tomcat", poweredBy.getHref(), "check powered by 
logo href");
-        assertEquals("doxia/tomcat/logo.gif", poweredBy.getImg(), "check 
powered by logo image");
+        assertEquals("doxia/tomcat/logo.gif", poweredBy.getImage().getSrc(), 
"check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("doxia/apache", breadcrumb.getHref(), "check breadcrumb 
href");
@@ -407,17 +430,19 @@ public class SiteModelInheritanceAssemblerTest {
     private static void 
assertPathsResolvedForReverseRelativeUrlsDepthOfTwo(final SiteModel childModel) 
{
         assertEquals("doxia/core/banner/left", 
childModel.getBannerLeft().getHref(), "check left banner href");
         assertEquals(
-                "doxia/core/images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc(), "check left banner image");
+                "doxia/core/images/jakarta-logo.gif",
+                childModel.getBannerLeft().getImage().getSrc(),
+                "check left banner image");
 
         assertEquals("doxia/core/banner/right/", 
childModel.getBannerRight().getHref(), "check right banner href");
         assertEquals(
                 "doxia/core/commons/images/logo.png",
-                childModel.getBannerRight().getSrc(),
+                childModel.getBannerRight().getImage().getSrc(),
                 "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("doxia/core/tomcat", poweredBy.getHref(), "check powered 
by logo href");
-        assertEquals("doxia/core/tomcat/logo.gif", poweredBy.getImg(), "check 
powered by logo image");
+        assertEquals("doxia/core/tomcat/logo.gif", 
poweredBy.getImage().getSrc(), "check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("doxia/core/apache", breadcrumb.getHref(), "check 
breadcrumb href");
@@ -460,7 +485,7 @@ public class SiteModelInheritanceAssemblerTest {
                 "check left banner href");
         assertEquals(
                 "http://jakarta.apache.org/images/jakarta-logo.gif";,
-                childModel.getBannerLeft().getSrc(),
+                childModel.getBannerLeft().getImage().getSrc(),
                 "check left banner image");
 
         assertEquals(
@@ -469,12 +494,15 @@ public class SiteModelInheritanceAssemblerTest {
                 "check right banner href");
         assertEquals(
                 "http://jakarta.apache.org/commons/images/logo.png";,
-                childModel.getBannerRight().getSrc(),
+                childModel.getBannerRight().getImage().getSrc(),
                 "check right banner image");
 
         Logo poweredBy = childModel.getPoweredBy().get(0);
         assertEquals("http://jakarta.apache.org/tomcat";, poweredBy.getHref(), 
"check powered by logo href");
-        assertEquals("http://jakarta.apache.org/tomcat/logo.gif";, 
poweredBy.getImg(), "check powered by logo image");
+        assertEquals(
+                "http://jakarta.apache.org/tomcat/logo.gif";,
+                poweredBy.getImage().getSrc(),
+                "check powered by logo image");
 
         LinkItem breadcrumb = childModel.getBody().getBreadcrumbs().get(0);
         assertEquals("http://jakarta.apache.org/apache";, breadcrumb.getHref(), 
"check breadcrumb href");
@@ -877,16 +905,20 @@ public class SiteModelInheritanceAssemblerTest {
         Banner banner = new Banner();
         banner.setName(name);
         banner.setHref(href);
-        banner.setSrc(src);
-        banner.setAlt(alt);
+        Image image = new Image();
+        image.setSrc(src);
+        image.setAlt(alt);
+        banner.setImage(image);
         return banner;
     }
 
-    private Logo createLogo(String name, String href, String img) {
+    private Logo createLogo(String name, String href, String src) {
         Logo logo = new Logo();
-        logo.setHref(href);
-        logo.setImg(img);
         logo.setName(name);
+        logo.setHref(href);
+        Image image = new Image();
+        image.setSrc(src);
+        logo.setImage(image);
         return logo;
     }
 
diff --git a/doxia-site-model/src/test/resources/empty.xml 
b/doxia-site-model/src/test/resources/empty.xml
index 182b9dd..02563f9 100644
--- a/doxia-site-model/src/test/resources/empty.xml
+++ b/doxia-site-model/src/test/resources/empty.xml
@@ -19,8 +19,8 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Empty">
-</project>
\ No newline at end of file
+</site>
diff --git a/doxia-site-model/src/test/resources/external-urls.xml 
b/doxia-site-model/src/test/resources/external-urls.xml
index 0791a96..841c4df 100644
--- a/doxia-site-model/src/test/resources/external-urls.xml
+++ b/doxia-site-model/src/test/resources/external-urls.xml
@@ -19,23 +19,21 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>http://jakarta.apache.org/images/jakarta-logo.gif</src>
-    <href>http://jakarta.apache.org/</href>
+  <bannerLeft name="The Jakarta Project" href="http://jakarta.apache.org/";>
+    <image src="http://jakarta.apache.org/images/jakarta-logo.gif"; />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>http://jakarta.apache.org/commons/images/logo.png</src>
-    <href>http://jakarta.apache.org/commons/sandbox</href>
+  <bannerRight name="Jakarta Commons Sandbox" 
href="http://jakarta.apache.org/commons/sandbox";>
+    <image src="http://jakarta.apache.org/commons/images/logo.png"; />
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="http://tomcat.apache.org/"; 
img="http://tomcat.apache.org/logo.gif"/>
+    <logo name="Tomcat" href="http://tomcat.apache.org/";>
+      <image src="http://tomcat.apache.org/logo.gif"; />
+    </logo>
   </poweredBy>
 
   <body>
@@ -51,4 +49,4 @@ under the License.
       <item name="Special" href="http://www.apache.org/special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/fully-populated-child.xml 
b/doxia-site-model/src/test/resources/fully-populated-child.xml
index 09208b7..fcae863 100644
--- a/doxia-site-model/src/test/resources/fully-populated-child.xml
+++ b/doxia-site-model/src/test/resources/fully-populated-child.xml
@@ -19,26 +19,24 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Child">
-  <bannerLeft>
-    <name>name</name>
-    <src>src</src>
-    <href>href</href>
+  <bannerLeft name="name" href="href">
+    <image src="src" />
   </bannerLeft>
-  <bannerRight>
-    <name>name</name>
-    <src>src</src>
-    <href>href</href>
+  <bannerRight name="name" href="href">
+    <image src="src" />
   </bannerRight>
 
   <publishDate format="fmt" position="top"/>
   <version position="right" />
 
   <poweredBy>
-    <logo name="Maven" href="http://maven.apache.org"; 
img="http://maven.apache.org/images/maven-feather.png"/>
+    <logo name="Maven" href="http://maven.apache.org";>
+      <image src="http://maven.apache.org/images/maven-feather.png"; />
+    </logo>
   </poweredBy>
 
   <skin>
@@ -66,4 +64,4 @@ under the License.
   <custom>
     <junk>junk</junk>
   </custom>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/fully-populated-merged.xml 
b/doxia-site-model/src/test/resources/fully-populated-merged.xml
index 47e6858..f26ba15 100644
--- a/doxia-site-model/src/test/resources/fully-populated-merged.xml
+++ b/doxia-site-model/src/test/resources/fully-populated-merged.xml
@@ -19,26 +19,24 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Empty">
-  <bannerLeft>
-    <name>name</name>
-    <src>../src</src>
-    <href>../href</href>
+  <bannerLeft name="name" href="../href">
+    <image src="../src" />
   </bannerLeft>
-  <bannerRight>
-    <name>name</name>
-    <src>../src</src>
-    <href>../href</href>
+  <bannerRight name="name" href="../href">
+    <image src="../src" />
   </bannerRight>
 
   <publishDate format="fmt" position="top"/>
   <version position="right" />
 
   <poweredBy>
-    <logo name="Maven" href=".." img="../images/maven-feather.png"/>
+    <logo name="Maven" href="..">
+      <image src="../images/maven-feather.png" />
+    </logo>
   </poweredBy>
 
   <skin>
@@ -61,4 +59,4 @@ under the License.
   <custom>
     <junk>junk</junk>
   </custom>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/fully-populated-unresolved.xml 
b/doxia-site-model/src/test/resources/fully-populated-unresolved.xml
index 0f9c66d..9094cbb 100644
--- a/doxia-site-model/src/test/resources/fully-populated-unresolved.xml
+++ b/doxia-site-model/src/test/resources/fully-populated-unresolved.xml
@@ -19,26 +19,24 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Empty">
-  <bannerLeft>
-    <name>name</name>
-    <src>../src</src>
-    <href>../href</href>
+  <bannerLeft name="name" href="../href">
+    <image src="../src" />
   </bannerLeft>
-  <bannerRight>
-    <name>name</name>
-    <src>../src</src>
-    <href>../href</href>
+  <bannerRight name="name" href="../href">
+    <image src="../src" />
   </bannerRight>
 
   <publishDate format="fmt" position="top"/>
   <version position="right" />
 
   <poweredBy>
-    <logo name="Maven" href="http://maven.apache.org"; 
img="http://maven.apache.org/images/maven-feather.png"/>
+    <logo name="Maven" href="http://maven.apache.org";>
+      <image src="http://maven.apache.org/images/maven-feather.png"; />
+    </logo>
   </poweredBy>
 
   <skin>
@@ -61,4 +59,4 @@ under the License.
   <custom>
     <junk>junk</junk>
   </custom>
-</project>
+</site>
diff --git 
a/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml 
b/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml
index 64c545c..83eeda5 100644
--- a/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml
+++ b/doxia-site-model/src/test/resources/inheritance-child-no-inheritance.xml
@@ -19,9 +19,9 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.6.0";
+<site xmlns="http://maven.apache.org/DECORATION/1.6.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.6.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.6.0.xsd"
   name="Child No Inheritance"
   combine.self="override">
   <body>
@@ -35,4 +35,4 @@ under the License.
     </menu>
 
   </body>
-</project>
\ No newline at end of file
+</site>
\ No newline at end of file
diff --git a/doxia-site-model/src/test/resources/inheritance-child.xml 
b/doxia-site-model/src/test/resources/inheritance-child.xml
index 30482a8..55db3e4 100644
--- a/doxia-site-model/src/test/resources/inheritance-child.xml
+++ b/doxia-site-model/src/test/resources/inheritance-child.xml
@@ -19,9 +19,9 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Child">
   <body>
     <links>
@@ -34,4 +34,4 @@ under the License.
     </menu>
 
   </body>
-</project>
\ No newline at end of file
+</site>
\ No newline at end of file
diff --git a/doxia-site-model/src/test/resources/inheritance-expected.xml 
b/doxia-site-model/src/test/resources/inheritance-expected.xml
index 355e775..2f30d4a 100644
--- a/doxia-site-model/src/test/resources/inheritance-expected.xml
+++ b/doxia-site-model/src/test/resources/inheritance-expected.xml
@@ -19,21 +19,18 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.8.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 
file:../../../target/generated-site/xsd/decoration-1.8.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Child">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <href>http://jakarta.apache.org/</href>
-  </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>http://jakarta.apache.org/commons/images/logo.png</src>
-    <href>http://jakarta.apache.org/commons/sandbox</href>
+  <bannerLeft name="The Jakarta Project" href="http://jakarta.apache.org/"; />
+  <bannerRight name="Jakarta Commons Sandbox" 
href="http://jakarta.apache.org/commons/sandbox";>
+    <image src="http://jakarta.apache.org/commons/images/logo.png"; />
   </bannerRight>
   <poweredBy>
-    <logo name="Maven" href="http://maven.apache.org"; 
img="../images/maven-feather.png"/>
+    <logo name="Maven" href="http://maven.apache.org";>
+      <image src="../images/maven-feather.png" />
+    </logo>
   </poweredBy>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
@@ -66,4 +63,4 @@ under the License.
       <item name="Copyright" href="../copyrightParent.html"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/inheritance-parent.xml 
b/doxia-site-model/src/test/resources/inheritance-parent.xml
index 8965e2b..019d859 100644
--- a/doxia-site-model/src/test/resources/inheritance-parent.xml
+++ b/doxia-site-model/src/test/resources/inheritance-parent.xml
@@ -19,21 +19,18 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.8.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 
file:../../../target/generated-site/xsd/decoration-1.8.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <href>http://jakarta.apache.org/</href>
-  </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>http://jakarta.apache.org/commons/images/logo.png</src>
-    <href>http://jakarta.apache.org/commons/sandbox</href>
+  <bannerLeft name="The Jakarta Project" href="http://jakarta.apache.org/"; />
+  <bannerRight name="Jakarta Commons Sandbox" 
href="http://jakarta.apache.org/commons/sandbox";>
+    <image src="http://jakarta.apache.org/commons/images/logo.png"; />
   </bannerRight>
   <poweredBy>
-    <logo name="Maven" href="http://maven.apache.org"; 
img="images/maven-feather.png"/>
+    <logo name="Maven" href="http://maven.apache.org";>
+      <image src="images/maven-feather.png" />
+    </logo>
   </poweredBy>
   <skin>
     <groupId>org.apache.maven.skins</groupId>
@@ -61,4 +58,4 @@ under the License.
       <item name="Copyright" href="/copyrightParent.html"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/relative-urls-resolved.xml 
b/doxia-site-model/src/test/resources/relative-urls-resolved.xml
index 5493373..c9e7617 100644
--- a/doxia-site-model/src/test/resources/relative-urls-resolved.xml
+++ b/doxia-site-model/src/test/resources/relative-urls-resolved.xml
@@ -19,23 +19,21 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>images/jakarta-logo.gif</src>
-    <href>banner/left</href>
+  <bannerLeft name="The Jakarta Project" href="banner/left">
+    <image src="images/jakarta-logo.gif" />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>commons/images/logo.png</src>
-    <href>banner/right/</href>
+  <bannerRight name="Jakarta Commons Sandbox" href="banner/right/">
+    <image src="commons/images/logo.png" />
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="tomcat" img="tomcat/logo.gif"/>
+    <logo name="Tomcat" href="tomcat">
+      <image src="tomcat/logo.gif" />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +48,4 @@ under the License.
       <item name="Special" href="special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/relative-urls.xml 
b/doxia-site-model/src/test/resources/relative-urls.xml
index 8353486..92097f4 100644
--- a/doxia-site-model/src/test/resources/relative-urls.xml
+++ b/doxia-site-model/src/test/resources/relative-urls.xml
@@ -19,23 +19,21 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>/images/jakarta-logo.gif</src>
-    <href>banner/left</href>
+  <bannerLeft name="The Jakarta Project" href="banner/left">
+    <image src="images/jakarta-logo.gif" />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>commons/images/logo.png</src>
-    <href>/banner/right/</href>
+  <bannerRight name="Jakarta Commons Sandbox" href="/banner/right/">
+    <image src="commons/images/logo.png" />
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="tomcat" img="tomcat/logo.gif"/>
+    <logo name="Tomcat" href="tomcat">
+      <image src="tomcat/logo.gif" />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +48,4 @@ under the License.
       <item name="Special" href="/special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git 
a/doxia-site-model/src/test/resources/subsite-relative-urls-multiple-resolved.xml
 
b/doxia-site-model/src/test/resources/subsite-relative-urls-multiple-resolved.xml
index 71b50e4..f021a61 100644
--- 
a/doxia-site-model/src/test/resources/subsite-relative-urls-multiple-resolved.xml
+++ 
b/doxia-site-model/src/test/resources/subsite-relative-urls-multiple-resolved.xml
@@ -19,23 +19,21 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>../../images/jakarta-logo.gif</src>
-    <href>../left</href>
+  <bannerLeft name="The Jakarta Project" href="../left">
+    <image src="../../images/jakarta-logo.gif" />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>../../commons/images/logo.png</src>
-    <href></href>
+  <bannerRight name="Jakarta Commons Sandbox" href="">
+    <image src="../../commons/images/logo.png" />
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="../../tomcat" img="../../tomcat/logo.gif"/>
+    <logo name="Tomcat" href="../../tomcat">
+      <image src="../../tomcat/logo.gif" />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +48,4 @@ under the License.
       <item name="Special" href="../../special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git 
a/doxia-site-model/src/test/resources/subsite-relative-urls-resolved.xml 
b/doxia-site-model/src/test/resources/subsite-relative-urls-resolved.xml
index 68d894d..6c0a13e 100644
--- a/doxia-site-model/src/test/resources/subsite-relative-urls-resolved.xml
+++ b/doxia-site-model/src/test/resources/subsite-relative-urls-resolved.xml
@@ -19,23 +19,21 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>../images/jakarta-logo.gif</src>
-    <href>../banner/left</href>
+  <bannerLeft name="The Jakarta Project" href="../banner/left">
+    <image src="../images/jakarta-logo.gif" />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>../commons/images/logo.png</src>
-    <href>../banner/right/</href>
+  <bannerRight name="Jakarta Commons Sandbox" href="../banner/right/">
+    <image src="../commons/images/logo.png" />
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="../tomcat" img="../tomcat/logo.gif"/>
+    <logo name="Tomcat" href="../tomcat">
+      <image src="../tomcat/logo.gif" />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +48,4 @@ under the License.
       <item name="Special" href="../special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/subsite-urls-file.xml 
b/doxia-site-model/src/test/resources/subsite-urls-file.xml
index de3c78a..811c8c8 100644
--- a/doxia-site-model/src/test/resources/subsite-urls-file.xml
+++ b/doxia-site-model/src/test/resources/subsite-urls-file.xml
@@ -19,23 +19,22 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>file:///www/maven.apache.org/images/jakarta-logo.gif</src>
-    <href>file:///www/maven.apache.org/banner/left</href>
+  <bannerLeft name="The Jakarta Project" 
href="file:///www/maven.apache.org/banner/left">
+    <image src="file:///www/maven.apache.org/images/jakarta-logo.gif" />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>file:///www/maven.apache.org/commons/images/logo.png</src>
-    <href>file:///www/maven.apache.org/banner/right/</href>
+  <bannerRight name="Jakarta Commons Sandbox" 
href="file:///www/maven.apache.org/banner/right/">
+    <image src="file:///www/maven.apache.org/commons/images/logo.png" />
   </bannerRight>
 
+
   <poweredBy>
-    <logo name="Tomcat" href="tomcat" 
img="file:///www/maven.apache.org/tomcat/logo.gif"/>
+    <logo name="Tomcat" href="tomcat">
+      <image src="file:///www/maven.apache.org/tomcat/logo.gif" />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +49,4 @@ under the License.
       <item name="Special" href="file:///www/maven.apache.org/special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-model/src/test/resources/subsite-urls.xml 
b/doxia-site-model/src/test/resources/subsite-urls.xml
index 5452755..f8f30fe 100644
--- a/doxia-site-model/src/test/resources/subsite-urls.xml
+++ b/doxia-site-model/src/test/resources/subsite-urls.xml
@@ -19,23 +19,22 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Parent Name">
-  <bannerLeft>
-    <name>The Jakarta Project</name>
-    <src>http://maven.apache.org/images/jakarta-logo.gif</src>
-    <href>http://maven.apache.org/banner/left</href>
+  <bannerLeft name="The Jakarta Project" 
href="http://maven.apache.org/banner/left";>
+    <image src="http://maven.apache.org/images/jakarta-logo.gif"; />
   </bannerLeft>
-  <bannerRight>
-    <name>Jakarta Commons Sandbox</name>
-    <src>http://maven.apache.org/commons/images/logo.png</src>
-    <href>http://maven.apache.org/banner/right/</href>
+  <bannerRight name="Jakarta Commons Sandbox" 
href="http://maven.apache.org/banner/right/";>
+    <image src="http://maven.apache.org/commons/images/logo.png"; />
   </bannerRight>
 
+
   <poweredBy>
-    <logo name="Tomcat" href="tomcat" 
img="http://maven.apache.org/tomcat/logo.gif"/>
+    <logo name="Tomcat" href="tomcat">
+      <image src="http://maven.apache.org/tomcat/logo.gif"; />
+    </logo>
   </poweredBy>
 
   <body>
@@ -50,4 +49,4 @@ under the License.
       <item name="Special" href="http://maven.apache.org/special/"/>
     </menu>
   </body>
-</project>
+</site>
diff --git a/doxia-site-renderer/src/test/resources/site/site.xml 
b/doxia-site-renderer/src/test/resources/site/site.xml
index d18c154..f154b72 100644
--- a/doxia-site-renderer/src/test/resources/site/site.xml
+++ b/doxia-site-renderer/src/test/resources/site/site.xml
@@ -22,19 +22,20 @@ under the License.
       <!-- A test snippet... -->
 <!-- END SNIPPET: macrotest -->
 
-<project xmlns="http://maven.apache.org/DECORATION/1.0.0";
+<site xmlns="http://maven.apache.org/SITE/2.0.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 
file:../../../../../doxia-decoration-model/target/generated-site/xsd/decoration-1.0.0.xsd"
+  xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 
file:../../../target/generated-site/xsd/site-2.0.0.xsd"
   name="Plexus">
-  <bannerLeft>
-    <name>Plexus</name>
-    <src>http://plexus.codehaus.org/images/plexus-logo.png</src>
-    <href>http://plexus.codehaus.org</href>
+  <bannerLeft name="Plexus" href="http://plexus.codehaus.org";>
+    <image src="http://plexus.codehaus.org/images/plexus-logo.png"; />
   </bannerLeft>
-  <bannerRight>
-    <src>http://media.codehaus.org/images/unity-codehaus-logo.png</src>
-    <href>http://www.codehaus.org</href>
+  <bannerRight href="http://www.codehaus.org";>
+    <image src="http://media.codehaus.org/images/unity-codehaus-logo.png"; />
   </bannerRight>
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-fluido-skin</artifactId>
+  </skin>
   <body>
     <links>
       <item name="Plexus" href="http://plexus.codehaus.org"/>
@@ -54,4 +55,4 @@ under the License.
       </item>
     </menu>
   </body>
-</project>
+</site>

Reply via email to