You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/03/26 10:50:27 UTC

[causeway] branch release-2.0.0-RC1-RC1 updated (64d2821034 -> 0d7f4c8dab)

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

danhaywood pushed a change to branch release-2.0.0-RC1-RC1
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from 64d2821034 updates relnotes for RC1
     new 184ee4aa7c CAUSEWAY-3253: updates release notes, STATUS and doap_causeway.rdf
     new 0d7f4c8dab CAUSEWAY-3253: updates published xsd schemas

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


Summary of changes:
 STATUS                                             |   2 +
 .../ROOT/pages/post-release-successful.adoc        |   2 +-
 .../ROOT/pages/2023/2.0.0-RC1/relnotes.adoc        |   1 -
 .../ROOT/pages/2023/2.0.0-RC2/relnotes.adoc}       |  39 +-
 .../relnotes/modules/ROOT/pages/about.adoc         |   6 +-
 antora/supplemental-ui/doap_causeway.rdf           |   8 +
 antora/supplemental-ui/schema/chg/chg-2.0.xsd      |  11 +-
 antora/supplemental-ui/schema/chg/chg.xsd          |  11 +-
 antora/supplemental-ui/schema/cmd/cmd-2.0.xsd      |  39 +-
 antora/supplemental-ui/schema/cmd/cmd.xsd          |  39 +-
 .../supplemental-ui/schema/common/common-2.0.xsd   | 556 ++++++------
 antora/supplemental-ui/schema/common/common.xsd    | 556 ++++++------
 antora/supplemental-ui/schema/ixn/ixn-2.0.xsd      |  40 +-
 antora/supplemental-ui/schema/ixn/ixn.xsd          |  40 +-
 .../schema/metamodel/metamodel-2.0.xsd             | 889 ++++++++++--------
 .../supplemental-ui/schema/metamodel/metamodel.xsd | 889 ++++++++++--------
 .../resources/schema/metamodel/metamodel-2.0.xsd   | 995 +++++++++++----------
 17 files changed, 2337 insertions(+), 1786 deletions(-)
 copy antora/components/{userguide/modules/btb/pages/other-techniques.adoc => relnotes/modules/ROOT/pages/2023/2.0.0-RC2/relnotes.adoc} (69%)


[causeway] 02/02: CAUSEWAY-3253: updates published xsd schemas

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

danhaywood pushed a commit to branch release-2.0.0-RC1-RC1
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 0d7f4c8dab5e42bfa4e8dadf710327300847614f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Mar 26 11:49:51 2023 +0100

    CAUSEWAY-3253: updates published xsd schemas
---
 .../ROOT/pages/post-release-successful.adoc        |   2 +-
 .../ROOT/pages/2023/2.0.0-RC1/relnotes.adoc        |   1 -
 .../ROOT/pages/2023/2.0.0-RC2/relnotes.adoc        |  49 +
 antora/supplemental-ui/schema/chg/chg-2.0.xsd      |  11 +-
 antora/supplemental-ui/schema/chg/chg.xsd          |  11 +-
 antora/supplemental-ui/schema/cmd/cmd-2.0.xsd      |  39 +-
 antora/supplemental-ui/schema/cmd/cmd.xsd          |  39 +-
 .../supplemental-ui/schema/common/common-2.0.xsd   | 556 ++++++------
 antora/supplemental-ui/schema/common/common.xsd    | 556 ++++++------
 antora/supplemental-ui/schema/ixn/ixn-2.0.xsd      |  40 +-
 antora/supplemental-ui/schema/ixn/ixn.xsd          |  40 +-
 .../schema/metamodel/metamodel-2.0.xsd             | 889 ++++++++++--------
 .../supplemental-ui/schema/metamodel/metamodel.xsd | 889 ++++++++++--------
 .../resources/schema/metamodel/metamodel-2.0.xsd   | 995 +++++++++++----------
 14 files changed, 2338 insertions(+), 1779 deletions(-)

diff --git a/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc b/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc
index 6ba94b57d0..456de668bf 100644
--- a/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc
+++ b/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc
@@ -233,7 +233,7 @@ done
 
 [source,bash,subs="attributes+"]
 ----
-sh upd.sh{page-causewayrel}
+sh upd.sh {page-causewayrel}
 ----
 
 The script downloads the artifacts from the Nexus release repository and adds the artifacts to subversion.
diff --git a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/relnotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/relnotes.adoc
index 1c048b5130..0ed55860cc 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/relnotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/relnotes.adoc
@@ -110,7 +110,6 @@ is experimental and not recommended for production.
 == Tasks: Rename project
 
 * link:https://issues.apache.org/jira/browse/CAUSEWAY-3382[CAUSEWAY-3382] - Rename script needs to handle layout schemas correctly, also for their location to "layout-v1"
-* link:https://issues.apache.org/jira/browse/CAUSEWAY-3370[CAUSEWAY-3370] - OpenJDK Quality Outreach
 * link:https://issues.apache.org/jira/browse/CAUSEWAY-3367[CAUSEWAY-3367] - update descriptoin on github repo.
 * link:https://issues.apache.org/jira/browse/CAUSEWAY-3359[CAUSEWAY-3359] - Update helloworld, simpleapp and demo : docker image, frontpage logo + banner
 * link:https://issues.apache.org/jira/browse/CAUSEWAY-3354[CAUSEWAY-3354] - Rename XML namespace identifiers in antora/supplemental-ui/applib/layout XSD files
diff --git a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC2/relnotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC2/relnotes.adoc
new file mode 100644
index 0000000000..9fd19e47d4
--- /dev/null
+++ b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC2/relnotes.adoc
@@ -0,0 +1,49 @@
+[[r2.0.0-RC2]]
+= 2.0.0-RC2
+
+:Notice: 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 ag [...]
+:page-partial:
+
+
+
+== New Feature
+
+
+
+
+== Improvement
+
+
+
+
+== Bug
+
+
+
+
+== Tasks: Rename project
+
+
+
+== Deprecation/Removal of features
+
+
+
+== Docs and Website
+
+
+
+== Dependency Upgrades
+
+We use Githb Dependabot to automate dependency upgrades as a matter of routine.
+
+
+== Demo and Starter Apps
+
+
+== Tooling
+
+
+
+== Won't Fix / Not a Problem / Duplicates
+
diff --git a/antora/supplemental-ui/schema/chg/chg-2.0.xsd b/antora/supplemental-ui/schema/chg/chg-2.0.xsd
index 6e00bbb18f..38bc8dc623 100644
--- a/antora/supplemental-ui/schema/chg/chg-2.0.xsd
+++ b/antora/supplemental-ui/schema/chg/chg-2.0.xsd
@@ -22,7 +22,10 @@
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns="https://causeway.apache.org/schema/chg"
            xmlns:com="https://causeway.apache.org/schema/common"
->
+
+          xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
 
@@ -30,6 +33,9 @@
         <xs:annotation>
             <xs:documentation>Represents v2.0 of this schema (as per majorVersion.minorVersion @default attribute, below).  The changes (create/update/delete) to one or more domain objects within a transaction.  (nb: only published objects are included in these lists).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.chg.v2.ChangesDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -77,6 +83,9 @@
     <xs:complexType name="objectsDto">
         <xs:annotation>
             <xs:documentation>A set of changes to domain objects.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.chg.v2.ObjectsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="loaded" type="xs:int">
diff --git a/antora/supplemental-ui/schema/chg/chg.xsd b/antora/supplemental-ui/schema/chg/chg.xsd
index 6e00bbb18f..38bc8dc623 100644
--- a/antora/supplemental-ui/schema/chg/chg.xsd
+++ b/antora/supplemental-ui/schema/chg/chg.xsd
@@ -22,7 +22,10 @@
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns="https://causeway.apache.org/schema/chg"
            xmlns:com="https://causeway.apache.org/schema/common"
->
+
+          xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
 
@@ -30,6 +33,9 @@
         <xs:annotation>
             <xs:documentation>Represents v2.0 of this schema (as per majorVersion.minorVersion @default attribute, below).  The changes (create/update/delete) to one or more domain objects within a transaction.  (nb: only published objects are included in these lists).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.chg.v2.ChangesDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -77,6 +83,9 @@
     <xs:complexType name="objectsDto">
         <xs:annotation>
             <xs:documentation>A set of changes to domain objects.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.chg.v2.ObjectsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="loaded" type="xs:int">
diff --git a/antora/supplemental-ui/schema/cmd/cmd-2.0.xsd b/antora/supplemental-ui/schema/cmd/cmd-2.0.xsd
index 78a9d61099..a84bc559ec 100644
--- a/antora/supplemental-ui/schema/cmd/cmd-2.0.xsd
+++ b/antora/supplemental-ui/schema/cmd/cmd-2.0.xsd
@@ -21,13 +21,20 @@
            elementFormDefault="qualified"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns="https://causeway.apache.org/schema/cmd"
-           xmlns:com="https://causeway.apache.org/schema/common">
+           xmlns:com="https://causeway.apache.org/schema/common"
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
 
     <xs:element name="commandsDto">
         <xs:annotation>
             <xs:documentation>Collection of commandDto's</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.CommandsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -55,6 +62,9 @@
             <xs:documentation>Represents the intention to invoke an action or to edit a property, usually on one target object but possibly on multiple targets (all of the same type).
                 Commands can also be deferred, which is to say that they can be scheduled to be invoked in the background.  In such cases the originating command/action which schedules the background commands is called the _parent_ of the background commands.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.CommandDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -92,7 +102,10 @@
                 </xs:element>
                 <xs:element name="targets" type="com:oidsDto">
                     <xs:annotation>
-                        <xs:documentation>For regular actions, represents the entity/entities or view model(s) upon which the action is to be invoked.  For mixin actions, is the object(s) being mixed-into (the constructor arg to the mixin).  For contributed actions, is the domain service (the contributee object will be one of the action arguments within the payload).  Note that this means that bulk contributed actions cannot be reified as a memento (for this use case, implement as a mixi [...]
+                        <xs:documentation>For regular actions, represents the entity or view model upon which the action is to be invoked / property is to be edited.
+                            For mixin actions, is the contributee object (also called the mixee, or the subject of the action); in other words the constructor arg to the mixin).
+
+                            Note that although this schema allows multiple targets to be specified, this feature is unused by the framework; only a single target is ever specified.
                         </xs:documentation>
                     </xs:annotation>
                 </xs:element>
@@ -121,6 +134,9 @@
         <xs:annotation>
             <xs:documentation>Represents the information required to be able to invoke an action or modify a property on the target(s).  Specifically, is the identifier of the action/property, along with the parameter arguments.  Is subclassed by 'actionDto' and 'propertyDto'.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.MemberDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="logicalMemberIdentifier" type="xs:string">
@@ -142,6 +158,9 @@
         <xs:annotation>
             <xs:documentation>Captures the information required to be able to invoke an action on the target(s).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ActionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberDto">
@@ -161,6 +180,9 @@
         <xs:annotation>
             <xs:documentation>Captures the information required to be able to modify a property on the target(s).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.PropertyDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberDto">
@@ -175,6 +197,9 @@
         <xs:annotation>
             <xs:documentation>A list of of parameter/argument values.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ParamsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence minOccurs="0" maxOccurs="unbounded">
             <xs:element name="parameter" type="paramDto"/>
@@ -185,6 +210,9 @@
         <xs:annotation>
             <xs:documentation>Defines an action parameter: its name, type and value (ie provided argument).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ParamDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="com:namedValueWithTypeDto">
@@ -193,6 +221,13 @@
     </xs:complexType>
 
     <xs:complexType name="mapDto">
+        <xs:annotation>
+            <xs:documentation>Key value mapping.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.MapDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
                 <xs:complexType>
diff --git a/antora/supplemental-ui/schema/cmd/cmd.xsd b/antora/supplemental-ui/schema/cmd/cmd.xsd
index 78a9d61099..a84bc559ec 100644
--- a/antora/supplemental-ui/schema/cmd/cmd.xsd
+++ b/antora/supplemental-ui/schema/cmd/cmd.xsd
@@ -21,13 +21,20 @@
            elementFormDefault="qualified"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns="https://causeway.apache.org/schema/cmd"
-           xmlns:com="https://causeway.apache.org/schema/common">
+           xmlns:com="https://causeway.apache.org/schema/common"
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
 
     <xs:element name="commandsDto">
         <xs:annotation>
             <xs:documentation>Collection of commandDto's</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.CommandsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -55,6 +62,9 @@
             <xs:documentation>Represents the intention to invoke an action or to edit a property, usually on one target object but possibly on multiple targets (all of the same type).
                 Commands can also be deferred, which is to say that they can be scheduled to be invoked in the background.  In such cases the originating command/action which schedules the background commands is called the _parent_ of the background commands.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.CommandDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -92,7 +102,10 @@
                 </xs:element>
                 <xs:element name="targets" type="com:oidsDto">
                     <xs:annotation>
-                        <xs:documentation>For regular actions, represents the entity/entities or view model(s) upon which the action is to be invoked.  For mixin actions, is the object(s) being mixed-into (the constructor arg to the mixin).  For contributed actions, is the domain service (the contributee object will be one of the action arguments within the payload).  Note that this means that bulk contributed actions cannot be reified as a memento (for this use case, implement as a mixi [...]
+                        <xs:documentation>For regular actions, represents the entity or view model upon which the action is to be invoked / property is to be edited.
+                            For mixin actions, is the contributee object (also called the mixee, or the subject of the action); in other words the constructor arg to the mixin).
+
+                            Note that although this schema allows multiple targets to be specified, this feature is unused by the framework; only a single target is ever specified.
                         </xs:documentation>
                     </xs:annotation>
                 </xs:element>
@@ -121,6 +134,9 @@
         <xs:annotation>
             <xs:documentation>Represents the information required to be able to invoke an action or modify a property on the target(s).  Specifically, is the identifier of the action/property, along with the parameter arguments.  Is subclassed by 'actionDto' and 'propertyDto'.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.MemberDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="logicalMemberIdentifier" type="xs:string">
@@ -142,6 +158,9 @@
         <xs:annotation>
             <xs:documentation>Captures the information required to be able to invoke an action on the target(s).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ActionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberDto">
@@ -161,6 +180,9 @@
         <xs:annotation>
             <xs:documentation>Captures the information required to be able to modify a property on the target(s).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.PropertyDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberDto">
@@ -175,6 +197,9 @@
         <xs:annotation>
             <xs:documentation>A list of of parameter/argument values.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ParamsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence minOccurs="0" maxOccurs="unbounded">
             <xs:element name="parameter" type="paramDto"/>
@@ -185,6 +210,9 @@
         <xs:annotation>
             <xs:documentation>Defines an action parameter: its name, type and value (ie provided argument).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.ParamDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexContent>
             <xs:extension base="com:namedValueWithTypeDto">
@@ -193,6 +221,13 @@
     </xs:complexType>
 
     <xs:complexType name="mapDto">
+        <xs:annotation>
+            <xs:documentation>Key value mapping.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.cmd.v2.MapDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
                 <xs:complexType>
diff --git a/antora/supplemental-ui/schema/common/common-2.0.xsd b/antora/supplemental-ui/schema/common/common-2.0.xsd
index 89b90c0ae1..fa37763889 100644
--- a/antora/supplemental-ui/schema/common/common-2.0.xsd
+++ b/antora/supplemental-ui/schema/common/common-2.0.xsd
@@ -1,252 +1,304 @@
-<?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
-  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.
--->
-<xs:schema targetNamespace="https://causeway.apache.org/schema/common"
-           elementFormDefault="qualified"
-           xmlns="https://causeway.apache.org/schema/common"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           
-           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
-           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
-           jaxb:extensionBindingPrefixes="xjc"
-           jaxb:version="1.0">
-           
-	<xs:annotation>
-	   <xs:appinfo>
-	      <jaxb:globalBindings generateIsSetMethod="false">
-	          <xjc:serializable uid="1"/>
-	      </jaxb:globalBindings>
-	   </xs:appinfo>
-	</xs:annotation>
-
-    <xs:complexType name="valueDto">
-        <xs:choice minOccurs="0" maxOccurs="1">
-            <xs:element name="string" type="xs:string"/>
-            <xs:element name="byte" type="xs:byte"/>
-            <xs:element name="short" type="xs:short"/>
-            <xs:element name="int" type="xs:int"/>
-            <xs:element name="long" type="xs:long"/>
-            <xs:element name="float" type="xs:float"/>
-            <xs:element name="double" type="xs:double"/>
-            <xs:element name="boolean" type="xs:boolean"/>
-            <xs:element name="char" type="xs:string"/>
-            <xs:element name="bigInteger" type="xs:integer"/>
-            <xs:element name="bigDecimal" type="xs:decimal"/>
-
-            <!-- temporal types -->
-            <xs:element name="localDate" type="xs:date"/>
-            <xs:element name="localDateTime" type="xs:dateTime"/>
-            <xs:element name="localTime" type="xs:time"/>
-            <xs:element name="offsetTime" type="xs:time"/>
-            <xs:element name="offsetDateTime" type="xs:dateTime"/>
-            <xs:element name="zonedDateTime" type="xs:dateTime"/>
-            
-            <!-- complex types -->
            <xs:element name="enum" type="enumDto"/>
-            <xs:element name="reference" type="oidDto"/>
-            <xs:element name="collection" type="collectionDto"/>
-            <xs:element name="composite" type="typedTupleDto"/>
-            <xs:element name="blob" type="blobDto"/>
-            <xs:element name="clob" type="clobDto"/>
-        </xs:choice>
-    </xs:complexType>
-
-	<xs:complexType name="typedTupleDto">
-        <xs:annotation>
-            <xs:documentation>A fixed-size ordered list of named type/value pairs.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="xs:string"/>
-        <xs:attribute name="cardinality" use="required" type="xs:int"/>
-    </xs:complexType>
-
-    <xs:complexType name="oidDto">
-        <xs:attribute name="type" type="xs:string"/>
-        <xs:attribute name="id" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="collectionDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="valueType"/>
-        <xs:attribute name="null" use="optional" type="xs:boolean"/>
-    </xs:complexType>
-
-    <xs:complexType name="blobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="bytes" type="xs:hexBinary"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="clobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="chars" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="oidsDto">
-        <xs:annotation>
-            <xs:documentation>A list of OIDs
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="enumDto">
-        <xs:sequence>
-            <xs:element name="enumType" type="xs:string"/>
-            <xs:element name="enumName" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:simpleType name="valueType">
-        <xs:restriction base="xs:string">
-        	<xs:enumeration value="void">
-                <xs:annotation>
-                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="string"/>
-            <xs:enumeration value="byte"/>
-            <xs:enumeration value="short"/>
-            <xs:enumeration value="int"/>
-            <xs:enumeration value="long"/>
-            <xs:enumeration value="float"/>
-            <xs:enumeration value="double"/>
-            <xs:enumeration value="boolean"/>
-            <xs:enumeration value="char"/>
-            <xs:enumeration value="bigInteger"/>
-            <xs:enumeration value="bigDecimal"/>
-            <!-- temporal types -->
-            <xs:enumeration value="localDateTime"/>
-            <xs:enumeration value="localDate"/>
-            <xs:enumeration value="localTime"/>
-            <xs:enumeration value="offsetDateTime"/>
-            <xs:enumeration value="offsetTime"/>
-            <xs:enumeration value="zonedDateTime"/>
-            <!-- complex types -->
-            <xs:enumeration value="enum"/>
-            <xs:enumeration value="reference"/>
-            <xs:enumeration value="collection"/>
-            <xs:enumeration value="composite"/>
-            <xs:enumeration value="blob"/>
-            <xs:enumeration value="clob"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:complexType name="periodDto">
-        <xs:annotation>
-            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="startedAt" type="xs:dateTime">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time started.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="differenceDto">
-        <xs:annotation>
-            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-        </xs:sequence>
-        <xs:attribute name="before" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The initial quantity.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="after" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="valueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueDto">
-                <xs:attribute name="type" use="required" type="valueType"/>
-                <xs:attribute name="null" use="optional" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-    
-    <xs:complexType name="namedValueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Defines a named value, a tuple of: name, type and value.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueWithTypeDto">
-                <xs:attribute name="name" use="required" type="xs:string"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:simpleType name="interactionType" >
-        <xs:annotation>
-            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="action_invocation" />
-            <xs:enumeration value="property_edit" />
-        </xs:restriction>
-    </xs:simpleType>
-
-</xs:schema>
\ No newline at end of file
+<?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
+  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.
+-->
+<xs:schema targetNamespace="https://causeway.apache.org/schema/common"
+           elementFormDefault="qualified"
+           xmlns="https://causeway.apache.org/schema/common"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="xjc annox">
+
+    <xs:annotation>
+        <xs:appinfo>
+            <jaxb:globalBindings generateIsSetMethod="false">
+                <xjc:serializable uid="1"/>
+            </jaxb:globalBindings>
+        </xs:appinfo>
+    </xs:annotation>
+
+    <xs:complexType name="valueDto">
+        <xs:annotation>
+            <xs:documentation>Represents a value of fundamental type.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:choice minOccurs="0" maxOccurs="1">
+            <xs:element name="string" type="xs:string"/>
+            <xs:element name="byte" type="xs:byte"/>
+            <xs:element name="short" type="xs:short"/>
+            <xs:element name="int" type="xs:int"/>
+            <xs:element name="long" type="xs:long"/>
+            <xs:element name="float" type="xs:float"/>
+            <xs:element name="double" type="xs:double"/>
+            <xs:element name="boolean" type="xs:boolean"/>
+            <xs:element name="char" type="xs:string"/>
+            <xs:element name="bigInteger" type="xs:integer"/>
+            <xs:element name="bigDecimal" type="xs:decimal"/>
+
+            <!-- temporal types -->
+            <xs:element name="localDate" type="xs:date"/>
+            <xs:element name="localDateTime" type="xs:dateTime"/>
+            <xs:element name="localTime" type="xs:time"/>
+            <xs:element name="offsetTime" type="xs:time"/>
+            <xs:element name="offsetDateTime" type="xs:dateTime"/>
+            <xs:element name="zonedDateTime" type="xs:dateTime"/>
+
+            <!-- complex types -->
+            <xs:element name="enum" type="enumDto"/>
+            <xs:element name="reference" type="oidDto"/>
+            <xs:element name="collection" type="collectionDto"/>
+            <xs:element name="composite" type="typedTupleDto"/>
+            <xs:element name="blob" type="blobDto"/>
+            <xs:element name="clob" type="clobDto"/>
+        </xs:choice>
+    </xs:complexType>
+
+    <xs:complexType name="typedTupleDto">
+        <xs:annotation>
+            <xs:documentation>A fixed-size ordered list of named type/value pairs.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.TypedTupleDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="xs:string"/>
+        <xs:attribute name="cardinality" use="required" type="xs:int"/>
+    </xs:complexType>
+
+    <xs:complexType name="oidDto">
+        <xs:annotation>
+            <xs:documentation>Object identifier.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.OidDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:attribute name="type" type="xs:string"/>
+        <xs:attribute name="id" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="collectionDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.CollectionDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="valueType"/>
+        <xs:attribute name="null" use="optional" type="xs:boolean"/>
+    </xs:complexType>
+
+    <xs:complexType name="blobDto">
+        <xs:annotation>
+            <xs:documentation>Data type that stores binary data.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.BlobDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="bytes" type="xs:hexBinary"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="clobDto">
+        <xs:annotation>
+            <xs:documentation>Data type that stores textual data.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ClobDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="chars" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="oidsDto">
+        <xs:annotation>
+            <xs:documentation>A list of OIDs</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.OidsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="enumDto">
+        <xs:annotation>
+            <xs:documentation>Enumeration</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.EnumDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="enumType" type="xs:string"/>
+            <xs:element name="enumName" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:simpleType name="valueType">
+        <xs:annotation>
+            <xs:documentation>Value type</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="void">
+                <xs:annotation>
+                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="string"/>
+            <xs:enumeration value="byte"/>
+            <xs:enumeration value="short"/>
+            <xs:enumeration value="int"/>
+            <xs:enumeration value="long"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="double"/>
+            <xs:enumeration value="boolean"/>
+            <xs:enumeration value="char"/>
+            <xs:enumeration value="bigInteger"/>
+            <xs:enumeration value="bigDecimal"/>
+            <!-- temporal types -->
+            <xs:enumeration value="localDateTime"/>
+            <xs:enumeration value="localDate"/>
+            <xs:enumeration value="localTime"/>
+            <xs:enumeration value="offsetDateTime"/>
+            <xs:enumeration value="offsetTime"/>
+            <xs:enumeration value="zonedDateTime"/>
+            <!-- complex types -->
+            <xs:enumeration value="enum"/>
+            <xs:enumeration value="reference"/>
+            <xs:enumeration value="collection"/>
+            <xs:enumeration value="composite"/>
+            <xs:enumeration value="blob"/>
+            <xs:enumeration value="clob"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:complexType name="periodDto">
+        <xs:annotation>
+            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.PeriodDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="startedAt" type="xs:dateTime">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time started.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="differenceDto">
+        <xs:annotation>
+            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.DifferenceType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+        </xs:sequence>
+        <xs:attribute name="before" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The initial quantity.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="after" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="valueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueWithTypeDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueDto">
+                <xs:attribute name="type" use="required" type="valueType"/>
+                <xs:attribute name="null" use="optional" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="namedValueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Defines a named value, a tuple of: name, type and value.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.NamedValueWithTypeDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:simpleType name="interactionType" >
+        <xs:annotation>
+            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.InteractionType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="action_invocation" />
+            <xs:enumeration value="property_edit" />
+        </xs:restriction>
+    </xs:simpleType>
+
+</xs:schema>
diff --git a/antora/supplemental-ui/schema/common/common.xsd b/antora/supplemental-ui/schema/common/common.xsd
index 89b90c0ae1..fa37763889 100644
--- a/antora/supplemental-ui/schema/common/common.xsd
+++ b/antora/supplemental-ui/schema/common/common.xsd
@@ -1,252 +1,304 @@
-<?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
-  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.
--->
-<xs:schema targetNamespace="https://causeway.apache.org/schema/common"
-           elementFormDefault="qualified"
-           xmlns="https://causeway.apache.org/schema/common"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           
-           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
-           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
-           jaxb:extensionBindingPrefixes="xjc"
-           jaxb:version="1.0">
-           
-	<xs:annotation>
-	   <xs:appinfo>
-	      <jaxb:globalBindings generateIsSetMethod="false">
-	          <xjc:serializable uid="1"/>
-	      </jaxb:globalBindings>
-	   </xs:appinfo>
-	</xs:annotation>
-
-    <xs:complexType name="valueDto">
-        <xs:choice minOccurs="0" maxOccurs="1">
-            <xs:element name="string" type="xs:string"/>
-            <xs:element name="byte" type="xs:byte"/>
-            <xs:element name="short" type="xs:short"/>
-            <xs:element name="int" type="xs:int"/>
-            <xs:element name="long" type="xs:long"/>
-            <xs:element name="float" type="xs:float"/>
-            <xs:element name="double" type="xs:double"/>
-            <xs:element name="boolean" type="xs:boolean"/>
-            <xs:element name="char" type="xs:string"/>
-            <xs:element name="bigInteger" type="xs:integer"/>
-            <xs:element name="bigDecimal" type="xs:decimal"/>
-
-            <!-- temporal types -->
-            <xs:element name="localDate" type="xs:date"/>
-            <xs:element name="localDateTime" type="xs:dateTime"/>
-            <xs:element name="localTime" type="xs:time"/>
-            <xs:element name="offsetTime" type="xs:time"/>
-            <xs:element name="offsetDateTime" type="xs:dateTime"/>
-            <xs:element name="zonedDateTime" type="xs:dateTime"/>
-            
-            <!-- complex types -->
            <xs:element name="enum" type="enumDto"/>
-            <xs:element name="reference" type="oidDto"/>
-            <xs:element name="collection" type="collectionDto"/>
-            <xs:element name="composite" type="typedTupleDto"/>
-            <xs:element name="blob" type="blobDto"/>
-            <xs:element name="clob" type="clobDto"/>
-        </xs:choice>
-    </xs:complexType>
-
-	<xs:complexType name="typedTupleDto">
-        <xs:annotation>
-            <xs:documentation>A fixed-size ordered list of named type/value pairs.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="xs:string"/>
-        <xs:attribute name="cardinality" use="required" type="xs:int"/>
-    </xs:complexType>
-
-    <xs:complexType name="oidDto">
-        <xs:attribute name="type" type="xs:string"/>
-        <xs:attribute name="id" type="xs:string"/>
-    </xs:complexType>
-
-    <xs:complexType name="collectionDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-        <xs:attribute name="type" use="required" type="valueType"/>
-        <xs:attribute name="null" use="optional" type="xs:boolean"/>
-    </xs:complexType>
-
-    <xs:complexType name="blobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="bytes" type="xs:hexBinary"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="clobDto">
-        <xs:annotation>
-            <xs:documentation>A collection of (argument) values
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="name" type="xs:string"/>
-            <xs:element name="mimeType" type="xs:string"/>
-            <xs:element name="chars" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="oidsDto">
-        <xs:annotation>
-            <xs:documentation>A list of OIDs
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="enumDto">
-        <xs:sequence>
-            <xs:element name="enumType" type="xs:string"/>
-            <xs:element name="enumName" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:simpleType name="valueType">
-        <xs:restriction base="xs:string">
-        	<xs:enumeration value="void">
-                <xs:annotation>
-                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="string"/>
-            <xs:enumeration value="byte"/>
-            <xs:enumeration value="short"/>
-            <xs:enumeration value="int"/>
-            <xs:enumeration value="long"/>
-            <xs:enumeration value="float"/>
-            <xs:enumeration value="double"/>
-            <xs:enumeration value="boolean"/>
-            <xs:enumeration value="char"/>
-            <xs:enumeration value="bigInteger"/>
-            <xs:enumeration value="bigDecimal"/>
-            <!-- temporal types -->
-            <xs:enumeration value="localDateTime"/>
-            <xs:enumeration value="localDate"/>
-            <xs:enumeration value="localTime"/>
-            <xs:enumeration value="offsetDateTime"/>
-            <xs:enumeration value="offsetTime"/>
-            <xs:enumeration value="zonedDateTime"/>
-            <!-- complex types -->
-            <xs:enumeration value="enum"/>
-            <xs:enumeration value="reference"/>
-            <xs:enumeration value="collection"/>
-            <xs:enumeration value="composite"/>
-            <xs:enumeration value="blob"/>
-            <xs:enumeration value="clob"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:complexType name="periodDto">
-        <xs:annotation>
-            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="startedAt" type="xs:dateTime">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time started.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
-                <xs:annotation>
-                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="differenceDto">
-        <xs:annotation>
-            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-        </xs:sequence>
-        <xs:attribute name="before" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The initial quantity.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="after" type="xs:int">
-            <xs:annotation>
-                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="valueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueDto">
-                <xs:attribute name="type" use="required" type="valueType"/>
-                <xs:attribute name="null" use="optional" type="xs:boolean"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-    
-    <xs:complexType name="namedValueWithTypeDto">
-        <xs:annotation>
-            <xs:documentation>Defines a named value, a tuple of: name, type and value.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="valueWithTypeDto">
-                <xs:attribute name="name" use="required" type="xs:string"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:simpleType name="interactionType" >
-        <xs:annotation>
-            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="action_invocation" />
-            <xs:enumeration value="property_edit" />
-        </xs:restriction>
-    </xs:simpleType>
-
-</xs:schema>
\ No newline at end of file
+<?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
+  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.
+-->
+<xs:schema targetNamespace="https://causeway.apache.org/schema/common"
+           elementFormDefault="qualified"
+           xmlns="https://causeway.apache.org/schema/common"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="xjc annox">
+
+    <xs:annotation>
+        <xs:appinfo>
+            <jaxb:globalBindings generateIsSetMethod="false">
+                <xjc:serializable uid="1"/>
+            </jaxb:globalBindings>
+        </xs:appinfo>
+    </xs:annotation>
+
+    <xs:complexType name="valueDto">
+        <xs:annotation>
+            <xs:documentation>Represents a value of fundamental type.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:choice minOccurs="0" maxOccurs="1">
+            <xs:element name="string" type="xs:string"/>
+            <xs:element name="byte" type="xs:byte"/>
+            <xs:element name="short" type="xs:short"/>
+            <xs:element name="int" type="xs:int"/>
+            <xs:element name="long" type="xs:long"/>
+            <xs:element name="float" type="xs:float"/>
+            <xs:element name="double" type="xs:double"/>
+            <xs:element name="boolean" type="xs:boolean"/>
+            <xs:element name="char" type="xs:string"/>
+            <xs:element name="bigInteger" type="xs:integer"/>
+            <xs:element name="bigDecimal" type="xs:decimal"/>
+
+            <!-- temporal types -->
+            <xs:element name="localDate" type="xs:date"/>
+            <xs:element name="localDateTime" type="xs:dateTime"/>
+            <xs:element name="localTime" type="xs:time"/>
+            <xs:element name="offsetTime" type="xs:time"/>
+            <xs:element name="offsetDateTime" type="xs:dateTime"/>
+            <xs:element name="zonedDateTime" type="xs:dateTime"/>
+
+            <!-- complex types -->
+            <xs:element name="enum" type="enumDto"/>
+            <xs:element name="reference" type="oidDto"/>
+            <xs:element name="collection" type="collectionDto"/>
+            <xs:element name="composite" type="typedTupleDto"/>
+            <xs:element name="blob" type="blobDto"/>
+            <xs:element name="clob" type="clobDto"/>
+        </xs:choice>
+    </xs:complexType>
+
+    <xs:complexType name="typedTupleDto">
+        <xs:annotation>
+            <xs:documentation>A fixed-size ordered list of named type/value pairs.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.TypedTupleDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="elements" type="namedValueWithTypeDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="xs:string"/>
+        <xs:attribute name="cardinality" use="required" type="xs:int"/>
+    </xs:complexType>
+
+    <xs:complexType name="oidDto">
+        <xs:annotation>
+            <xs:documentation>Object identifier.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.OidDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:attribute name="type" type="xs:string"/>
+        <xs:attribute name="id" type="xs:string"/>
+    </xs:complexType>
+
+    <xs:complexType name="collectionDto">
+        <xs:annotation>
+            <xs:documentation>A collection of (argument) values
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.CollectionDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="value" type="valueDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="type" use="required" type="valueType"/>
+        <xs:attribute name="null" use="optional" type="xs:boolean"/>
+    </xs:complexType>
+
+    <xs:complexType name="blobDto">
+        <xs:annotation>
+            <xs:documentation>Data type that stores binary data.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.BlobDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="bytes" type="xs:hexBinary"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="clobDto">
+        <xs:annotation>
+            <xs:documentation>Data type that stores textual data.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ClobDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="chars" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="oidsDto">
+        <xs:annotation>
+            <xs:documentation>A list of OIDs</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.OidsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="oid" type="oidDto" minOccurs="1" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="enumDto">
+        <xs:annotation>
+            <xs:documentation>Enumeration</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.EnumDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="enumType" type="xs:string"/>
+            <xs:element name="enumName" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:simpleType name="valueType">
+        <xs:annotation>
+            <xs:documentation>Value type</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="void">
+                <xs:annotation>
+                    <xs:documentation>Not valid to be used as the parameter type of an action; can be used as its return type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:enumeration>
+            <xs:enumeration value="string"/>
+            <xs:enumeration value="byte"/>
+            <xs:enumeration value="short"/>
+            <xs:enumeration value="int"/>
+            <xs:enumeration value="long"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="double"/>
+            <xs:enumeration value="boolean"/>
+            <xs:enumeration value="char"/>
+            <xs:enumeration value="bigInteger"/>
+            <xs:enumeration value="bigDecimal"/>
+            <!-- temporal types -->
+            <xs:enumeration value="localDateTime"/>
+            <xs:enumeration value="localDate"/>
+            <xs:enumeration value="localTime"/>
+            <xs:enumeration value="offsetDateTime"/>
+            <xs:enumeration value="offsetTime"/>
+            <xs:enumeration value="zonedDateTime"/>
+            <!-- complex types -->
+            <xs:enumeration value="enum"/>
+            <xs:enumeration value="reference"/>
+            <xs:enumeration value="collection"/>
+            <xs:enumeration value="composite"/>
+            <xs:enumeration value="blob"/>
+            <xs:enumeration value="clob"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:complexType name="periodDto">
+        <xs:annotation>
+            <xs:documentation>Captures a period of time, eg for capturing metrics/timings.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.PeriodDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="startedAt" type="xs:dateTime">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time started.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>The point in time that this period of time completed.  The duration is the difference between 'start' and 'complete'.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="differenceDto">
+        <xs:annotation>
+            <xs:documentation>Captures a pair of numbers representing a difference.  Used for example to capture metrics (number objects modified before and after).
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.DifferenceType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+        </xs:sequence>
+        <xs:attribute name="before" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The initial quantity.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="after" type="xs:int">
+            <xs:annotation>
+                <xs:documentation>The final quantity, once known.  The difference is therefore the computation of (after - before).
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="valueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Captures both a value and its corresponding type.  Used for the return value of action invocations, and for the new value in property edits.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.ValueWithTypeDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueDto">
+                <xs:attribute name="type" use="required" type="valueType"/>
+                <xs:attribute name="null" use="optional" type="xs:boolean"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="namedValueWithTypeDto">
+        <xs:annotation>
+            <xs:documentation>Defines a named value, a tuple of: name, type and value.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.NamedValueWithTypeDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:simpleType name="interactionType" >
+        <xs:annotation>
+            <xs:documentation>Whether this interaction with a member is invoking an action, or editing a property.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.common.v2.InteractionType")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="action_invocation" />
+            <xs:enumeration value="property_edit" />
+        </xs:restriction>
+    </xs:simpleType>
+
+</xs:schema>
diff --git a/antora/supplemental-ui/schema/ixn/ixn-2.0.xsd b/antora/supplemental-ui/schema/ixn/ixn-2.0.xsd
index 92f68a4e4c..976b88e15f 100644
--- a/antora/supplemental-ui/schema/ixn/ixn-2.0.xsd
+++ b/antora/supplemental-ui/schema/ixn/ixn-2.0.xsd
@@ -23,15 +23,20 @@
            xmlns="https://causeway.apache.org/schema/ixn"
            xmlns:cmd="https://causeway.apache.org/schema/cmd"
            xmlns:com="https://causeway.apache.org/schema/common"
->
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
     <xs:import namespace="https://causeway.apache.org/schema/cmd" schemaLocation="../cmd/cmd-2.0.xsd"/>
 
     <xs:element name="interactionsDto">
         <xs:annotation>
-            <xs:documentation>A collection of interactions.
-            </xs:documentation>
+            <xs:documentation>A collection of interactions.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.InteractionsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -59,6 +64,9 @@
             <xs:documentation>Represents an interaction, that is the execution of a command on a target object.
                 There is typically just a single execution per command.  In more complex cases though executions can be nested, whereby a top-level execution causes other executions, as invoked through a wrapper (Wrapperproxy obtained from the WrapperFactory service).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.InteractionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -95,6 +103,9 @@
         <xs:annotation>
             <xs:documentation>Represents either an action invocation or a property edit.  Is subclassed by both.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.MemberExecutionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="sequence" type="xs:int">
@@ -155,6 +166,11 @@
     </xs:complexType>
 
     <xs:complexType name="actionInvocationDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ActionInvocationDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberExecutionDto">
                 <xs:sequence>
@@ -176,6 +192,11 @@
     </xs:complexType>
 
     <xs:complexType name="propertyEditDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.PropertyEditDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberExecutionDto">
                 <xs:sequence>
@@ -186,6 +207,11 @@
     </xs:complexType>
 
     <xs:complexType name="metricsDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.MetricsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="timings" type="com:periodDto">
                 <xs:annotation>
@@ -203,6 +229,11 @@
     </xs:complexType>
 
     <xs:complexType name="objectCountsDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ObjectCountsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="loaded" type="com:differenceDto">
                 <xs:annotation>
@@ -223,6 +254,9 @@
         <xs:annotation>
             <xs:documentation>Captures any exception thrown by an action invocation.  Use as the xsd:type of the 'threw' element.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ExceptionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="message" type="xs:string"/>
diff --git a/antora/supplemental-ui/schema/ixn/ixn.xsd b/antora/supplemental-ui/schema/ixn/ixn.xsd
index 92f68a4e4c..976b88e15f 100644
--- a/antora/supplemental-ui/schema/ixn/ixn.xsd
+++ b/antora/supplemental-ui/schema/ixn/ixn.xsd
@@ -23,15 +23,20 @@
            xmlns="https://causeway.apache.org/schema/ixn"
            xmlns:cmd="https://causeway.apache.org/schema/cmd"
            xmlns:com="https://causeway.apache.org/schema/common"
->
+
+           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+           xmlns:annox="http://annox.dev.java.net"
+           jaxb:extensionBindingPrefixes="annox">
 
     <xs:import namespace="https://causeway.apache.org/schema/common" schemaLocation="../common/common-2.0.xsd"/>
     <xs:import namespace="https://causeway.apache.org/schema/cmd" schemaLocation="../cmd/cmd-2.0.xsd"/>
 
     <xs:element name="interactionsDto">
         <xs:annotation>
-            <xs:documentation>A collection of interactions.
-            </xs:documentation>
+            <xs:documentation>A collection of interactions.</xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.InteractionsDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -59,6 +64,9 @@
             <xs:documentation>Represents an interaction, that is the execution of a command on a target object.
                 There is typically just a single execution per command.  In more complex cases though executions can be nested, whereby a top-level execution causes other executions, as invoked through a wrapper (Wrapperproxy obtained from the WrapperFactory service).
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.InteractionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
@@ -95,6 +103,9 @@
         <xs:annotation>
             <xs:documentation>Represents either an action invocation or a property edit.  Is subclassed by both.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.MemberExecutionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="sequence" type="xs:int">
@@ -155,6 +166,11 @@
     </xs:complexType>
 
     <xs:complexType name="actionInvocationDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ActionInvocationDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberExecutionDto">
                 <xs:sequence>
@@ -176,6 +192,11 @@
     </xs:complexType>
 
     <xs:complexType name="propertyEditDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.PropertyEditDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:complexContent>
             <xs:extension base="memberExecutionDto">
                 <xs:sequence>
@@ -186,6 +207,11 @@
     </xs:complexType>
 
     <xs:complexType name="metricsDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.MetricsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="timings" type="com:periodDto">
                 <xs:annotation>
@@ -203,6 +229,11 @@
     </xs:complexType>
 
     <xs:complexType name="objectCountsDto">
+        <xs:annotation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ObjectCountsDto")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
         <xs:sequence>
             <xs:element name="loaded" type="com:differenceDto">
                 <xs:annotation>
@@ -223,6 +254,9 @@
         <xs:annotation>
             <xs:documentation>Captures any exception thrown by an action invocation.  Use as the xsd:type of the 'threw' element.
             </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.ixn.v2.ExceptionDto")</annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
         <xs:sequence>
             <xs:element name="message" type="xs:string"/>
diff --git a/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd b/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
index a3af830699..66048b1551 100644
--- a/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
+++ b/antora/supplemental-ui/schema/metamodel/metamodel-2.0.xsd
@@ -1,386 +1,507 @@
-<?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
-  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.
--->
-<xs:schema targetNamespace="https://causeway.apache.org/schema/metamodel"
-           elementFormDefault="qualified"
-           xmlns="https://causeway.apache.org/schema/metamodel"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:element name="metamodelDto">
-        <xs:complexType>
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">
-                <xs:element ref="domainClassDto"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="domainClassDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a domain class.
-                    Corresponds to ObjectSpecification in the internal metamodel.
-                </xs:documentation>
-            </xs:annotation>
-            <xs:complexContent>
-                <xs:extension base="facetHolder">
-                    <xs:sequence>
-                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
-                            <xs:annotation>
-                                <xs:documentation>The major version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
-                            <xs:annotation>
-                                <xs:documentation>The minor version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="properties" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="collections" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="actions" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                    </xs:sequence>
-                    <xs:attribute name="id" type="xs:ID">
-                        <xs:annotation>
-                            <xs:documentation>The fully qualified class name of the underlying Java class.
-                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
-
-                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                    <xs:attribute name="service" type="xs:boolean">
-                        <xs:annotation>
-                            <xs:documentation>Whether this is a domain service</xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                </xs:extension>
-            </xs:complexContent>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:complexType name="member">
-    	<xs:annotation>
-    		<xs:documentation>
-    			Represents a member of a class (property, collection or
-    			action). Corresponds to ObjectMember in the internal
-    			metamodel.
-    		</xs:documentation>
-    	</xs:annotation>
-    	<xs:complexContent>
-    		<xs:extension base="facetHolder">
-    			<xs:attribute name="id" type="xs:string">
-    				<xs:annotation>
-    					<xs:documentation>
-    						The id of the member, which should be unique
-    						within the domain class. NB: this assumes no
-    						overloading of method names.
-    					</xs:documentation>
-    				</xs:annotation>
-    			</xs:attribute>
-    			<xs:attribute name="mixedIn" type="xs:boolean" use="required">
-    				<xs:annotation>
-    					<xs:documentation>
-    						Whether the member (action, property or collection) is mixed in.
-    					</xs:documentation>
-    				</xs:annotation>
-    			</xs:attribute>
-    		</xs:extension>
-    	</xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="property">
-        <xs:annotation>
-            <xs:documentation>Represents a property of a domain class.
-                Corresponds to OneToOneAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="collection">
-        <xs:annotation>
-            <xs:documentation>Represents a collection of a domain class.
-                Corresponds to OneToManyAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:annotation>
-            <xs:documentation>Represents an action of a domain class.
-                Corresponds to ObjectAction in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="returnType" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
-                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="params">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="param">
-        <xs:annotation>
-            <xs:documentation>Represents the parameter of an action
-                Corresponds to ObjectActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
-                                For vector parameters, this is the element types of the collection parameter.
-                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the parameter, which should be unique within the action.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="scalarParam">
-        <xs:annotation>
-            <xs:documentation>Represents a parameter of an action
-                Corresponds to OneToOneActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="vectorParam">
-        <xs:annotation>
-            <xs:documentation>Represents a multi-valued parameter of an action
-                Corresponds to OneToManyActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-	<xs:complexType name="facetHolder">
-		<xs:annotation>
-			<xs:documentation>
-				Corresponds to FacetHolder interface in the internal metamodel.
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:sequence>
-					<xs:element name="facets" minOccurs="0">
-						<xs:complexType>
-							<xs:sequence>
-								<xs:element name="facet" type="facet" minOccurs="0"
-									maxOccurs="unbounded" />
-							</xs:sequence>
-						</xs:complexType>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="facet">
-		<xs:annotation>
-			<xs:documentation>
-				Describes a facet of the metamodel, for example whether
-				an action can be disabled, or the name of a class.
-				Corresponds to Facet interface in the internal
-				metamodel.
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:sequence>
-					<xs:element name="attr" type="facetAttr" minOccurs="0"
-						maxOccurs="unbounded" />
				</xs:sequence>
-				<xs:attribute name="id" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The facet type (fqcn) that is common to a set of
-							concrete facet implementations. These ids are
-							usually known to the framework for there well
-							defined semantics within the programming model.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-				<xs:attribute name="fqcn" type="xs:string" />
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="facetAttr">
-		<xs:annotation>
-			<xs:documentation>
-				Describes an attribute of a facet of the metamodel, as a
-				simple key/value pair of strings (the key is modelled as
-				an attribute of the value).
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:attribute name="name" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The name of the attribute, unique across all
-							facet attributes of a facet.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-				<xs:attribute name="value" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The value of the attribute.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="annotation">
-        <xs:annotation>
-            <xs:documentation>Not part of the metamodel. Enables export tools to add arbitrary meta data.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The value of the annotation.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name annotation.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-
-	<xs:complexType name="metamodelElement">
+<?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
+  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.
+-->
+<xs:schema
+        targetNamespace="https://causeway.apache.org/schema/metamodel"
+        elementFormDefault="qualified"
+        xmlns="https://causeway.apache.org/schema/metamodel"
+        xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+        xmlns:annox="http://annox.dev.java.net"
+        jaxb:extensionBindingPrefixes="annox">
+
+    <xs:element name="metamodelDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a collection of domain
+                    classes, the metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelDto")</annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">
+                <xs:element ref="domainClassDto" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="domainClassDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a domain class.
+                    Corresponds
+                    to ObjectSpecification in the internal metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.DomainClassDto")
+                    </annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="facetHolder">
+                    <xs:sequence>
+                        <xs:element name="majorVersion"
+                                    type="xs:string" minOccurs="0" maxOccurs="1"
+                                    default="2">
+                            <xs:annotation>
+                                <xs:documentation>The major version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="minorVersion"
+                                    type="xs:string" minOccurs="0" maxOccurs="1"
+                                    default="0">
+                            <xs:annotation>
+                                <xs:documentation>The minor version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="properties"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The properties, if
+                                    any, of this domain class. This will
+                                    include any mixin properties.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="prop"
+                                                type="property" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="collections"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The collections, if
+                                    any, of this domain class. This will
+                                    include any mixin collections.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="coll"
+                                                type="collection" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="actions"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The actions, if any,
+                                    of this domain class. This will
+                                    include any mixin actions.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="act"
+                                                type="action" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                    <xs:attribute name="id" type="xs:ID">
+                        <xs:annotation>
+                            <xs:documentation>The fully qualified class
+                                name of the underlying Java class.
+                                This
+                                is declared as 'xs:ID' so can be
+                                referenced elsewhere (using 'xs:IDREF')
+
+                                In the internal metamodel, corresponds
+                                to
+                                ObjectSpecification#getFullIdentifier()
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                    <xs:attribute name="service"
+                                  type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Whether this is a domain
+                                service</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+
+    <xs:complexType name="member">
         <xs:annotation>
-        	<xs:documentation>Common ancestor of facet and facetHolder.</xs:documentation>
+            <xs:documentation>
+                Represents a member of a class (property, collection or
+                action). Corresponds to ObjectMember in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Member")
+                </annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
-        <xs:sequence>
-			<xs:element name="annotations" minOccurs="0">
-				<xs:annotation>
-					<xs:documentation>Not part of the metamodel. Enables export tools
-						to add arbitrary meta data.</xs:documentation>
-				</xs:annotation>
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element name="asList" type="annotation"
-							minOccurs="0" maxOccurs="unbounded" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-    
-</xs:schema>
\ No newline at end of file
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The id of the member, which should be unique
+                            within the domain class. NB: this assumes no
+                            overloading of method names.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="mixedIn"
+                              type="xs:boolean" use="required">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Whether the member (action, property or collection) is mixed in.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:annotation>
+            <xs:documentation>Represents a property of a domain class.
+                Corresponds to OneToOneAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Property")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the type
+                                of this property, eg a String or a
+                                Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="collection">
+        <xs:annotation>
+            <xs:documentation>Represents a collection of a domain class.
+                Corresponds to OneToManyAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Collection")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the
+                                _element_ type of this collection, eg a
+                                String or a Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="action">
+        <xs:annotation>
+            <xs:documentation>Represents an action of a domain class.
+                Corresponds to ObjectAction in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Action")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="returnType"
+                                type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to) the
+                                return type of this action, eg a String
+                                or a Customer.
+                                Corresponds to
+                                ObjectAction#getReturnType() in the
+                                internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="params">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="param"
+                                            type="param" minOccurs="0"
+                                            maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="param">
+        <xs:annotation>
+            <xs:documentation>Represents the parameter of an action
+                Corresponds to ObjectActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Param")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>(A reference to) the type
+                                of this action parameter, eg a String or
+                                a Customer.
+                                For vector parameters, this
+                                is the element types of the collection
+                                parameter.
+                                Corresponds to
+                                ObjectActionParameter#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The id of the parameter, which
+                            should be unique within the action.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="scalarParam">
+        <xs:annotation>
+            <xs:documentation>Represents a parameter of an action
+                Corresponds to OneToOneActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.ScalarParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="vectorParam">
+        <xs:annotation>
+            <xs:documentation>Represents a multi-valued parameter of an
+                action
+                Corresponds to OneToManyActionParameter in the
+                internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.VectorParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetHolder">
+        <xs:annotation>
+            <xs:documentation>
+                Corresponds to FacetHolder interface in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetHolder")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="facets" minOccurs="0">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="facet"
+                                            type="facet" minOccurs="0"
+                                            maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facet">
+        <xs:annotation>
+            <xs:documentation>
+                Describes a facet of the metamodel, for example whether
+                an action can be disabled, or the name of a class.
+                Corresponds to Facet interface in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Facet")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="attr" type="facetAttr"
+                                minOccurs="0" maxOccurs="unbounded" />
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The facet type (fqcn) that is common to a set of
+                            concrete facet implementations. These ids are
+                            usually known to the framework for there well
+                            defined semantics within the programming model.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="fqcn" type="xs:string" />
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetAttr">
+        <xs:annotation>
+            <xs:documentation>
+                Describes an attribute of a facet of the metamodel, as a
+                simple key/value pair of strings (the key is modelled as
+                an attribute of the value).
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetAttr")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of the attribute, unique across all
+                            facet attributes of a facet.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="value" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The value of the attribute.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="annotation">
+        <xs:annotation>
+            <xs:documentation>Not part of the metamodel. Enables export
+                tools to add arbitrary meta data.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Annotation")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The value of the annotation.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name annotation.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="metamodelElement">
+        <xs:annotation>
+            <xs:documentation>Common ancestor of facet and facetHolder.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelElement")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="annotations" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>Not part of the metamodel. Enables
+                        export tools
+                        to add arbitrary meta data.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="asList"
+                                    type="annotation" minOccurs="0"
+                                    maxOccurs="unbounded" />
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>
diff --git a/antora/supplemental-ui/schema/metamodel/metamodel.xsd b/antora/supplemental-ui/schema/metamodel/metamodel.xsd
index a3af830699..66048b1551 100644
--- a/antora/supplemental-ui/schema/metamodel/metamodel.xsd
+++ b/antora/supplemental-ui/schema/metamodel/metamodel.xsd
@@ -1,386 +1,507 @@
-<?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
-  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.
--->
-<xs:schema targetNamespace="https://causeway.apache.org/schema/metamodel"
-           elementFormDefault="qualified"
-           xmlns="https://causeway.apache.org/schema/metamodel"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:element name="metamodelDto">
-        <xs:complexType>
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">
-                <xs:element ref="domainClassDto"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="domainClassDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a domain class.
-                    Corresponds to ObjectSpecification in the internal metamodel.
-                </xs:documentation>
-            </xs:annotation>
-            <xs:complexContent>
-                <xs:extension base="facetHolder">
-                    <xs:sequence>
-                        <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
-                            <xs:annotation>
-                                <xs:documentation>The major version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
-                            <xs:annotation>
-                                <xs:documentation>The minor version of the schema that an XML instance was created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="properties" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The properties, if any, of this domain class.  This will include any mixin properties.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="prop" type="property" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="collections" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The collections, if any, of this domain class.  This will include any mixin collections.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="coll" type="collection" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="actions" minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The actions, if any, of this domain class.  This will include any mixin actions.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="act" type="action" minOccurs="0" maxOccurs="unbounded"/>
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                    </xs:sequence>
-                    <xs:attribute name="id" type="xs:ID">
-                        <xs:annotation>
-                            <xs:documentation>The fully qualified class name of the underlying Java class.
-                                This is declared as 'xs:ID' so can be referenced elsewhere (using 'xs:IDREF')
-
-                                In the internal metamodel, corresponds to ObjectSpecification#getFullIdentifier()
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                    <xs:attribute name="service" type="xs:boolean">
-                        <xs:annotation>
-                            <xs:documentation>Whether this is a domain service</xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                </xs:extension>
-            </xs:complexContent>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:complexType name="member">
-    	<xs:annotation>
-    		<xs:documentation>
-    			Represents a member of a class (property, collection or
-    			action). Corresponds to ObjectMember in the internal
-    			metamodel.
-    		</xs:documentation>
-    	</xs:annotation>
-    	<xs:complexContent>
-    		<xs:extension base="facetHolder">
-    			<xs:attribute name="id" type="xs:string">
-    				<xs:annotation>
-    					<xs:documentation>
-    						The id of the member, which should be unique
-    						within the domain class. NB: this assumes no
-    						overloading of method names.
-    					</xs:documentation>
-    				</xs:annotation>
-    			</xs:attribute>
-    			<xs:attribute name="mixedIn" type="xs:boolean" use="required">
-    				<xs:annotation>
-    					<xs:documentation>
-    						Whether the member (action, property or collection) is mixed in.
-    					</xs:documentation>
-    				</xs:annotation>
-    			</xs:attribute>
-    		</xs:extension>
-    	</xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="property">
-        <xs:annotation>
-            <xs:documentation>Represents a property of a domain class.
-                Corresponds to OneToOneAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the type of this property, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="collection">
-        <xs:annotation>
-            <xs:documentation>Represents a collection of a domain class.
-                Corresponds to OneToManyAssociation in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the _element_ type of this collection, eg a String or a Customer.
-                                Corresponds to OneToOneAssociation#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:annotation>
-            <xs:documentation>Represents an action of a domain class.
-                Corresponds to ObjectAction in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="returnType" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to) the return type of this action, eg a String or a Customer.
-                                Corresponds to ObjectAction#getReturnType() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="params">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="param" type="param" minOccurs="0" maxOccurs="unbounded"/>
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="param">
-        <xs:annotation>
-            <xs:documentation>Represents the parameter of an action
-                Corresponds to ObjectActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>(A reference to) the type of this action parameter, eg a String or a Customer.
-                                For vector parameters, this is the element types of the collection parameter.
-                                Corresponds to ObjectActionParameter#getSpecification() in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the parameter, which should be unique within the action.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="scalarParam">
-        <xs:annotation>
-            <xs:documentation>Represents a parameter of an action
-                Corresponds to OneToOneActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="vectorParam">
-        <xs:annotation>
-            <xs:documentation>Represents a multi-valued parameter of an action
-                Corresponds to OneToManyActionParameter in the internal metamodel.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-	<xs:complexType name="facetHolder">
-		<xs:annotation>
-			<xs:documentation>
-				Corresponds to FacetHolder interface in the internal metamodel.
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:sequence>
-					<xs:element name="facets" minOccurs="0">
-						<xs:complexType>
-							<xs:sequence>
-								<xs:element name="facet" type="facet" minOccurs="0"
-									maxOccurs="unbounded" />
-							</xs:sequence>
-						</xs:complexType>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="facet">
-		<xs:annotation>
-			<xs:documentation>
-				Describes a facet of the metamodel, for example whether
-				an action can be disabled, or the name of a class.
-				Corresponds to Facet interface in the internal
-				metamodel.
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:sequence>
-					<xs:element name="attr" type="facetAttr" minOccurs="0"
-						maxOccurs="unbounded" />
				</xs:sequence>
-				<xs:attribute name="id" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The facet type (fqcn) that is common to a set of
-							concrete facet implementations. These ids are
-							usually known to the framework for there well
-							defined semantics within the programming model.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-				<xs:attribute name="fqcn" type="xs:string" />
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="facetAttr">
-		<xs:annotation>
-			<xs:documentation>
-				Describes an attribute of a facet of the metamodel, as a
-				simple key/value pair of strings (the key is modelled as
-				an attribute of the value).
-			</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="metamodelElement">
-				<xs:attribute name="name" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The name of the attribute, unique across all
-							facet attributes of a facet.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-				<xs:attribute name="value" type="xs:string">
-					<xs:annotation>
-						<xs:documentation>
-							The value of the attribute.
-						</xs:documentation>
-					</xs:annotation>
-				</xs:attribute>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-
-	<xs:complexType name="annotation">
-        <xs:annotation>
-            <xs:documentation>Not part of the metamodel. Enables export tools to add arbitrary meta data.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The value of the annotation.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name annotation.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-
-	<xs:complexType name="metamodelElement">
+<?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
+  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.
+-->
+<xs:schema
+        targetNamespace="https://causeway.apache.org/schema/metamodel"
+        elementFormDefault="qualified"
+        xmlns="https://causeway.apache.org/schema/metamodel"
+        xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+        xmlns:annox="http://annox.dev.java.net"
+        jaxb:extensionBindingPrefixes="annox">
+
+    <xs:element name="metamodelDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a collection of domain
+                    classes, the metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelDto")</annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">
+                <xs:element ref="domainClassDto" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="domainClassDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a domain class.
+                    Corresponds
+                    to ObjectSpecification in the internal metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.DomainClassDto")
+                    </annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="facetHolder">
+                    <xs:sequence>
+                        <xs:element name="majorVersion"
+                                    type="xs:string" minOccurs="0" maxOccurs="1"
+                                    default="2">
+                            <xs:annotation>
+                                <xs:documentation>The major version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="minorVersion"
+                                    type="xs:string" minOccurs="0" maxOccurs="1"
+                                    default="0">
+                            <xs:annotation>
+                                <xs:documentation>The minor version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="properties"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The properties, if
+                                    any, of this domain class. This will
+                                    include any mixin properties.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="prop"
+                                                type="property" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="collections"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The collections, if
+                                    any, of this domain class. This will
+                                    include any mixin collections.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="coll"
+                                                type="collection" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="actions"
+                                    minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The actions, if any,
+                                    of this domain class. This will
+                                    include any mixin actions.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="act"
+                                                type="action" minOccurs="0"
+                                                maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                    <xs:attribute name="id" type="xs:ID">
+                        <xs:annotation>
+                            <xs:documentation>The fully qualified class
+                                name of the underlying Java class.
+                                This
+                                is declared as 'xs:ID' so can be
+                                referenced elsewhere (using 'xs:IDREF')
+
+                                In the internal metamodel, corresponds
+                                to
+                                ObjectSpecification#getFullIdentifier()
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                    <xs:attribute name="service"
+                                  type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Whether this is a domain
+                                service</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+
+    <xs:complexType name="member">
         <xs:annotation>
-        	<xs:documentation>Common ancestor of facet and facetHolder.</xs:documentation>
+            <xs:documentation>
+                Represents a member of a class (property, collection or
+                action). Corresponds to ObjectMember in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Member")
+                </annox:annotate>
+            </xs:appinfo>
         </xs:annotation>
-        <xs:sequence>
-			<xs:element name="annotations" minOccurs="0">
-				<xs:annotation>
-					<xs:documentation>Not part of the metamodel. Enables export tools
-						to add arbitrary meta data.</xs:documentation>
-				</xs:annotation>
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element name="asList" type="annotation"
-							minOccurs="0" maxOccurs="unbounded" />
-					</xs:sequence>
-				</xs:complexType>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-    
-</xs:schema>
\ No newline at end of file
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The id of the member, which should be unique
+                            within the domain class. NB: this assumes no
+                            overloading of method names.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="mixedIn"
+                              type="xs:boolean" use="required">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Whether the member (action, property or collection) is mixed in.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:annotation>
+            <xs:documentation>Represents a property of a domain class.
+                Corresponds to OneToOneAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Property")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the type
+                                of this property, eg a String or a
+                                Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="collection">
+        <xs:annotation>
+            <xs:documentation>Represents a collection of a domain class.
+                Corresponds to OneToManyAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Collection")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the
+                                _element_ type of this collection, eg a
+                                String or a Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="action">
+        <xs:annotation>
+            <xs:documentation>Represents an action of a domain class.
+                Corresponds to ObjectAction in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Action")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="returnType"
+                                type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to) the
+                                return type of this action, eg a String
+                                or a Customer.
+                                Corresponds to
+                                ObjectAction#getReturnType() in the
+                                internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="params">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="param"
+                                            type="param" minOccurs="0"
+                                            maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="param">
+        <xs:annotation>
+            <xs:documentation>Represents the parameter of an action
+                Corresponds to ObjectActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Param")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>(A reference to) the type
+                                of this action parameter, eg a String or
+                                a Customer.
+                                For vector parameters, this
+                                is the element types of the collection
+                                parameter.
+                                Corresponds to
+                                ObjectActionParameter#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The id of the parameter, which
+                            should be unique within the action.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="scalarParam">
+        <xs:annotation>
+            <xs:documentation>Represents a parameter of an action
+                Corresponds to OneToOneActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.ScalarParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="vectorParam">
+        <xs:annotation>
+            <xs:documentation>Represents a multi-valued parameter of an
+                action
+                Corresponds to OneToManyActionParameter in the
+                internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.VectorParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetHolder">
+        <xs:annotation>
+            <xs:documentation>
+                Corresponds to FacetHolder interface in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetHolder")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="facets" minOccurs="0">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="facet"
+                                            type="facet" minOccurs="0"
+                                            maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facet">
+        <xs:annotation>
+            <xs:documentation>
+                Describes a facet of the metamodel, for example whether
+                an action can be disabled, or the name of a class.
+                Corresponds to Facet interface in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Facet")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="attr" type="facetAttr"
+                                minOccurs="0" maxOccurs="unbounded" />
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The facet type (fqcn) that is common to a set of
+                            concrete facet implementations. These ids are
+                            usually known to the framework for there well
+                            defined semantics within the programming model.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="fqcn" type="xs:string" />
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetAttr">
+        <xs:annotation>
+            <xs:documentation>
+                Describes an attribute of a facet of the metamodel, as a
+                simple key/value pair of strings (the key is modelled as
+                an attribute of the value).
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetAttr")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of the attribute, unique across all
+                            facet attributes of a facet.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="value" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The value of the attribute.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="annotation">
+        <xs:annotation>
+            <xs:documentation>Not part of the metamodel. Enables export
+                tools to add arbitrary meta data.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Annotation")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The value of the annotation.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name annotation.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="metamodelElement">
+        <xs:annotation>
+            <xs:documentation>Common ancestor of facet and facetHolder.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelElement")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="annotations" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>Not part of the metamodel. Enables
+                        export tools
+                        to add arbitrary meta data.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="asList"
+                                    type="annotation" minOccurs="0"
+                                    maxOccurs="unbounded" />
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>
diff --git a/api/schema/src/main/resources/schema/metamodel/metamodel-2.0.xsd b/api/schema/src/main/resources/schema/metamodel/metamodel-2.0.xsd
index 33f452b8c9..4e64a3358a 100644
--- a/api/schema/src/main/resources/schema/metamodel/metamodel-2.0.xsd
+++ b/api/schema/src/main/resources/schema/metamodel/metamodel-2.0.xsd
@@ -1,498 +1,507 @@
-<?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 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. -->
-<xs:schema
-    targetNamespace="https://causeway.apache.org/schema/metamodel"
-    elementFormDefault="qualified"
-    xmlns="https://causeway.apache.org/schema/metamodel"
-    xmlns:xs="http://www.w3.org/2001/XMLSchema"
-
-    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
-    xmlns:annox="http://annox.dev.java.net"
-    jaxb:extensionBindingPrefixes="annox">
-
-    <xs:element name="metamodelDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a collection of domain
-                    classes, the metamodel.
-                </xs:documentation>
-                <xs:appinfo>
-                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelDto")</annox:annotate>
-                </xs:appinfo>
-            </xs:annotation>
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">
-                <xs:element ref="domainClassDto" />
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="domainClassDto">
-        <xs:complexType>
-            <xs:annotation>
-                <xs:documentation>Represents a domain class.
-                    Corresponds
-                    to ObjectSpecification in the internal metamodel.
-                </xs:documentation>
-                <xs:appinfo>
-                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.DomainClassDto")
-                    </annox:annotate>
-                </xs:appinfo>
-            </xs:annotation>
-            <xs:complexContent>
-                <xs:extension base="facetHolder">
-                    <xs:sequence>
-                        <xs:element name="majorVersion"
-                            type="xs:string" minOccurs="0" maxOccurs="1"
-                            default="2">
-                            <xs:annotation>
-                                <xs:documentation>The major version of
-                                    the schema that an XML instance was
-                                    created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="minorVersion"
-                            type="xs:string" minOccurs="0" maxOccurs="1"
-                            default="0">
-                            <xs:annotation>
-                                <xs:documentation>The minor version of
-                                    the schema that an XML instance was
-                                    created using.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                        <xs:element name="properties"
-                            minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The properties, if
-                                    any, of this domain class. This will
-                                    include any mixin properties.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="prop"
-                                        type="property" minOccurs="0"
-                                        maxOccurs="unbounded" />
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="collections"
-                            minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The collections, if
-                                    any, of this domain class. This will
-                                    include any mixin collections.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="coll"
-                                        type="collection" minOccurs="0"
-                                        maxOccurs="unbounded" />
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                        <xs:element name="actions"
-                            minOccurs="0">
-                            <xs:annotation>
-                                <xs:documentation>The actions, if any,
-                                    of this domain class. This will
-                                    include any mixin actions.
-                                </xs:documentation>
-                            </xs:annotation>
-                            <xs:complexType>
-                                <xs:sequence>
-                                    <xs:element name="act"
-                                        type="action" minOccurs="0"
-                                        maxOccurs="unbounded" />
-                                </xs:sequence>
-                            </xs:complexType>
-                        </xs:element>
-                    </xs:sequence>
-                    <xs:attribute name="id" type="xs:ID">
-                        <xs:annotation>
-                            <xs:documentation>The fully qualified class
-                                name of the underlying Java class.
-                                This
-                                is declared as 'xs:ID' so can be
-                                referenced elsewhere (using 'xs:IDREF')
-
-                                In the internal metamodel, corresponds
-                                to
-                                ObjectSpecification#getFullIdentifier()
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                    <xs:attribute name="service"
-                        type="xs:boolean">
-                        <xs:annotation>
-                            <xs:documentation>Whether this is a domain
-                                service</xs:documentation>
-                        </xs:annotation>
-                    </xs:attribute>
-                </xs:extension>
-            </xs:complexContent>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:complexType name="member">
-        <xs:annotation>
-            <xs:documentation>
-                Represents a member of a class (property, collection or
-                action). Corresponds to ObjectMember in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Member")
-                </annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>
-                            The id of the member, which should be unique
-                            within the domain class. NB: this assumes no
-                            overloading of method names.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-                <xs:attribute name="mixedIn"
-                    type="xs:boolean" use="required">
-                    <xs:annotation>
-                        <xs:documentation>
-                            Whether the member (action, property or collection) is mixed in.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="property">
-        <xs:annotation>
-            <xs:documentation>Represents a property of a domain class.
-                Corresponds to OneToOneAssociation in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Property")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the type
-                                of this property, eg a String or a
-                                Customer.
-                                Corresponds to
-                                OneToOneAssociation#getSpecification()
-                                in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="collection">
-        <xs:annotation>
-            <xs:documentation>Represents a collection of a domain class.
-                Corresponds to OneToManyAssociation in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Collection")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to ) the
-                                _element_ type of this collection, eg a
-                                String or a Customer.
-                                Corresponds to
-                                OneToOneAssociation#getSpecification()
-                                in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:annotation>
-            <xs:documentation>Represents an action of a domain class.
-                Corresponds to ObjectAction in the internal metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Action")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="member">
-                <xs:sequence>
-                    <xs:element name="returnType"
-                        type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>A (reference to) the
-                                return type of this action, eg a String
-                                or a Customer.
-                                Corresponds to
-                                ObjectAction#getReturnType() in the
-                                internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="params">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="param"
-                                    type="param" minOccurs="0"
-                                    maxOccurs="unbounded" />
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="param">
-        <xs:annotation>
-            <xs:documentation>Represents the parameter of an action
-                Corresponds to ObjectActionParameter in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Param")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="facetHolder">
-                <xs:sequence>
-                    <xs:element name="type" type="xs:IDREF">
-                        <xs:annotation>
-                            <xs:documentation>(A reference to) the type
-                                of this action parameter, eg a String or
-                                a Customer.
-                                For vector parameters, this
-                                is the element types of the collection
-                                parameter.
-                                Corresponds to
-                                ObjectActionParameter#getSpecification()
-                                in the internal metamodel.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The id of the parameter, which
-                            should be unique within the action.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="scalarParam">
-        <xs:annotation>
-            <xs:documentation>Represents a parameter of an action
-                Corresponds to OneToOneActionParameter in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.ScalarParam")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="vectorParam">
-        <xs:annotation>
-            <xs:documentation>Represents a multi-valued parameter of an
-                action
-                Corresponds to OneToManyActionParameter in the
-                internal metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.VectorParam")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="param">
-                <xs:sequence>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="facetHolder">
-        <xs:annotation>
-            <xs:documentation>
-                Corresponds to FacetHolder interface in the internal metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetHolder")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="metamodelElement">
-                <xs:sequence>
-                    <xs:element name="facets" minOccurs="0">
-                        <xs:complexType>
-                            <xs:sequence>
-                                <xs:element name="facet"
-                                    type="facet" minOccurs="0"
-                                    maxOccurs="unbounded" />
-                            </xs:sequence>
-                        </xs:complexType>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="facet">
-        <xs:annotation>
-            <xs:documentation>
-                Describes a facet of the metamodel, for example whether
-                an action can be disabled, or the name of a class.
-                Corresponds to Facet interface in the internal
-                metamodel.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Facet")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="metamodelElement">
-                <xs:sequence>
-                    <xs:element name="attr" type="facetAttr"
-                        minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
-                <xs:attribute name="id" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>
-                            The facet type (fqcn) that is common to a set of
-                            concrete facet implementations. These ids are
-                            usually known to the framework for there well
-                            defined semantics within the programming model.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-                <xs:attribute name="fqcn" type="xs:string" />
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="facetAttr">
-        <xs:annotation>
-            <xs:documentation>
-                Describes an attribute of a facet of the metamodel, as a
-                simple key/value pair of strings (the key is modelled as
-                an attribute of the value).
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetAttr")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="metamodelElement">
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>
-                            The name of the attribute, unique across all
-                            facet attributes of a facet.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-                <xs:attribute name="value" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>
-                            The value of the attribute.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="annotation">
-        <xs:annotation>
-            <xs:documentation>Not part of the metamodel. Enables export
-                tools to add arbitrary meta data.
-            </xs:documentation>
-            <xs:appinfo>
-                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Annotation")</annox:annotate>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The value of the annotation.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:attribute name="name" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name annotation.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:attribute>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-
+<?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
+  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.
+-->
+<xs:schema
+    targetNamespace="https://causeway.apache.org/schema/metamodel"
+    elementFormDefault="qualified"
+    xmlns="https://causeway.apache.org/schema/metamodel"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
+    xmlns:annox="http://annox.dev.java.net"
+    jaxb:extensionBindingPrefixes="annox">
+
+    <xs:element name="metamodelDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a collection of domain
+                    classes, the metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelDto")</annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">
+                <xs:element ref="domainClassDto" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="domainClassDto">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation>Represents a domain class.
+                    Corresponds
+                    to ObjectSpecification in the internal metamodel.
+                </xs:documentation>
+                <xs:appinfo>
+                    <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.DomainClassDto")
+                    </annox:annotate>
+                </xs:appinfo>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="facetHolder">
+                    <xs:sequence>
+                        <xs:element name="majorVersion"
+                            type="xs:string" minOccurs="0" maxOccurs="1"
+                            default="2">
+                            <xs:annotation>
+                                <xs:documentation>The major version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="minorVersion"
+                            type="xs:string" minOccurs="0" maxOccurs="1"
+                            default="0">
+                            <xs:annotation>
+                                <xs:documentation>The minor version of
+                                    the schema that an XML instance was
+                                    created using.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                        <xs:element name="properties"
+                            minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The properties, if
+                                    any, of this domain class. This will
+                                    include any mixin properties.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="prop"
+                                        type="property" minOccurs="0"
+                                        maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="collections"
+                            minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The collections, if
+                                    any, of this domain class. This will
+                                    include any mixin collections.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="coll"
+                                        type="collection" minOccurs="0"
+                                        maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="actions"
+                            minOccurs="0">
+                            <xs:annotation>
+                                <xs:documentation>The actions, if any,
+                                    of this domain class. This will
+                                    include any mixin actions.
+                                </xs:documentation>
+                            </xs:annotation>
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="act"
+                                        type="action" minOccurs="0"
+                                        maxOccurs="unbounded" />
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                    <xs:attribute name="id" type="xs:ID">
+                        <xs:annotation>
+                            <xs:documentation>The fully qualified class
+                                name of the underlying Java class.
+                                This
+                                is declared as 'xs:ID' so can be
+                                referenced elsewhere (using 'xs:IDREF')
+
+                                In the internal metamodel, corresponds
+                                to
+                                ObjectSpecification#getFullIdentifier()
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                    <xs:attribute name="service"
+                        type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Whether this is a domain
+                                service</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+
+    <xs:complexType name="member">
+        <xs:annotation>
+            <xs:documentation>
+                Represents a member of a class (property, collection or
+                action). Corresponds to ObjectMember in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Member")
+                </annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The id of the member, which should be unique
+                            within the domain class. NB: this assumes no
+                            overloading of method names.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="mixedIn"
+                    type="xs:boolean" use="required">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Whether the member (action, property or collection) is mixed in.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:annotation>
+            <xs:documentation>Represents a property of a domain class.
+                Corresponds to OneToOneAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Property")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the type
+                                of this property, eg a String or a
+                                Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="collection">
+        <xs:annotation>
+            <xs:documentation>Represents a collection of a domain class.
+                Corresponds to OneToManyAssociation in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Collection")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to ) the
+                                _element_ type of this collection, eg a
+                                String or a Customer.
+                                Corresponds to
+                                OneToOneAssociation#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="action">
+        <xs:annotation>
+            <xs:documentation>Represents an action of a domain class.
+                Corresponds to ObjectAction in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Action")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="member">
+                <xs:sequence>
+                    <xs:element name="returnType"
+                        type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>A (reference to) the
+                                return type of this action, eg a String
+                                or a Customer.
+                                Corresponds to
+                                ObjectAction#getReturnType() in the
+                                internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="params">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="param"
+                                    type="param" minOccurs="0"
+                                    maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="param">
+        <xs:annotation>
+            <xs:documentation>Represents the parameter of an action
+                Corresponds to ObjectActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Param")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="facetHolder">
+                <xs:sequence>
+                    <xs:element name="type" type="xs:IDREF">
+                        <xs:annotation>
+                            <xs:documentation>(A reference to) the type
+                                of this action parameter, eg a String or
+                                a Customer.
+                                For vector parameters, this
+                                is the element types of the collection
+                                parameter.
+                                Corresponds to
+                                ObjectActionParameter#getSpecification()
+                                in the internal metamodel.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The id of the parameter, which
+                            should be unique within the action.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="scalarParam">
+        <xs:annotation>
+            <xs:documentation>Represents a parameter of an action
+                Corresponds to OneToOneActionParameter in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.ScalarParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="vectorParam">
+        <xs:annotation>
+            <xs:documentation>Represents a multi-valued parameter of an
+                action
+                Corresponds to OneToManyActionParameter in the
+                internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.VectorParam")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="param">
+                <xs:sequence>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetHolder">
+        <xs:annotation>
+            <xs:documentation>
+                Corresponds to FacetHolder interface in the internal metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetHolder")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="facets" minOccurs="0">
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element name="facet"
+                                    type="facet" minOccurs="0"
+                                    maxOccurs="unbounded" />
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facet">
+        <xs:annotation>
+            <xs:documentation>
+                Describes a facet of the metamodel, for example whether
+                an action can be disabled, or the name of a class.
+                Corresponds to Facet interface in the internal
+                metamodel.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Facet")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:sequence>
+                    <xs:element name="attr" type="facetAttr"
+                        minOccurs="0" maxOccurs="unbounded" />
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The facet type (fqcn) that is common to a set of
+                            concrete facet implementations. These ids are
+                            usually known to the framework for there well
+                            defined semantics within the programming model.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="fqcn" type="xs:string" />
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="facetAttr">
+        <xs:annotation>
+            <xs:documentation>
+                Describes an attribute of a facet of the metamodel, as a
+                simple key/value pair of strings (the key is modelled as
+                an attribute of the value).
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.FacetAttr")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="metamodelElement">
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of the attribute, unique across all
+                            facet attributes of a facet.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="value" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The value of the attribute.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="annotation">
+        <xs:annotation>
+            <xs:documentation>Not part of the metamodel. Enables export
+                tools to add arbitrary meta data.
+            </xs:documentation>
+            <xs:appinfo>
+                <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.Annotation")</annox:annotate>
+            </xs:appinfo>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The value of the annotation.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:attribute name="name" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name annotation.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
     <xs:complexType name="metamodelElement">
         <xs:annotation>
             <xs:documentation>Common ancestor of facet and facetHolder.
-            </xs:documentation>
-            <xs:appinfo>
-            <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelElement")</annox:annotate>
+            </xs:documentation>
+            <xs:appinfo>
+            <annox:annotate>@javax.inject.Named("causeway.schema.metamodel.v2.MetamodelElement")</annox:annotate>
         </xs:appinfo>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="annotations" minOccurs="0">
-                <xs:annotation>
-                    <xs:documentation>Not part of the metamodel. Enables
-                        export tools
-                        to add arbitrary meta data.
-                    </xs:documentation>
-                </xs:annotation>
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="asList"
-                            type="annotation" minOccurs="0"
-                            maxOccurs="unbounded" />
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="annotations" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>Not part of the metamodel. Enables
+                        export tools
+                        to add arbitrary meta data.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="asList"
+                            type="annotation" minOccurs="0"
+                            maxOccurs="unbounded" />
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
 </xs:schema>


[causeway] 01/02: CAUSEWAY-3253: updates release notes, STATUS and doap_causeway.rdf

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

danhaywood pushed a commit to branch release-2.0.0-RC1-RC1
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 184ee4aa7c83a83bcf1fe6cc4d02e6d19dc742af
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Mar 25 18:16:00 2023 +0000

    CAUSEWAY-3253: updates release notes, STATUS and doap_causeway.rdf
---
 STATUS                                                   | 2 ++
 antora/components/relnotes/modules/ROOT/pages/about.adoc | 6 ++----
 antora/supplemental-ui/doap_causeway.rdf                 | 8 ++++++++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/STATUS b/STATUS
index 3c17dcafc0..ba629f3506 100644
--- a/STATUS
+++ b/STATUS
@@ -24,6 +24,8 @@ Description
 
 TLP releases:
 
+  * causeway-2.0.0-RC1                             : 25 Mar 2023
+
   * isis-2.0.0-M9                                  : 18 Oct 2022
 
   * isis-2.0.0-M8                                  : 06 Oct 2022
diff --git a/antora/components/relnotes/modules/ROOT/pages/about.adoc b/antora/components/relnotes/modules/ROOT/pages/about.adoc
index e09d24c2ab..412109e60c 100644
--- a/antora/components/relnotes/modules/ROOT/pages/about.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/about.adoc
@@ -6,8 +6,6 @@
 
 This table summarises all releases of Apache Causeway v2.0 to date.
 
-////
-////
 
 [cols="2,2,4a,>1,>1,>1,3a"]
 |===
@@ -20,8 +18,8 @@ This table summarises all releases of Apache Causeway v2.0 to date.
 | Detail
 
 | 2.0.0-RC1
-|
-| First release candidate for Apache Causeway 2.0.0
+| 25-Mar-2023
+| First release candidate for Apache Causeway 2.0.0.  Project renamed.
 | 16
 | 13
 | 39
diff --git a/antora/supplemental-ui/doap_causeway.rdf b/antora/supplemental-ui/doap_causeway.rdf
index 0d284e074c..96699cd898 100644
--- a/antora/supplemental-ui/doap_causeway.rdf
+++ b/antora/supplemental-ui/doap_causeway.rdf
@@ -36,6 +36,14 @@
     <category rdf:resource="http://projects.apache.org/category/web-framework" />
 
 
+    <release>
+      <Version>
+        <name>causeway</name>
+        <created>2023-03-25</created>
+        <revision>2.0.0-RC1</revision>
+      </Version>
+    </release>
+
     <release>
       <Version>
         <name>isis</name>