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/02/28 13:30:28 UTC
[causeway] 03/03: CAUSEWAY-3354 : makes old layout files available also
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit b14291ce184b85f3864ddfb3cb6b41c734614aeb
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Feb 28 13:30:08 2023 +0000
CAUSEWAY-3354 : makes old layout files available also
---
.../ROOT/pages/2023/2.0.0-RC1/mignotes.adoc | 65 +++++-
.../applib/layout-v1/component/component.xsd | 218 +++++++++++++++++++++
.../layout-v1/grid/bootstrap3/bootstrap3.xsd | 167 ++++++++++++++++
.../applib/layout-v1/links/links.xsd | 26 +++
.../layout-v1/menubars/bootstrap3/menubars.xsd | 61 ++++++
5 files changed, 536 insertions(+), 1 deletion(-)
diff --git a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
index bc4152a879..d9ebe96071 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2023/2.0.0-RC1/mignotes.adoc
@@ -22,9 +22,72 @@ The namespace and location of XSDs has changed:
Note the change from `http` to `https`.
+To update your app:
+
+* the `menubars.layout.xml` should now declare the following namespaces and locations:
++
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:menuBars
+ xsi:schemaLocation="https://causeway.apache.org/applib/layout/menubars/bootstrap3 https://causeway.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd"
+ xmlns:mb3="https://causeway.apache.org/applib/layout/menubars/bootstrap3"
+ xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ ...
+</mb3:menuBars>
+----
+
+* while any `Xxx.layout.xml` files (for `Xxx` domain object) should declare:
++
+[source,xml]
+.Xxx.layout.xml
+----
+<bs3:grid
+ xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+ xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
+ xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ ...
+</bs3:grid>
+----
+
+
+If you are still using the "isis" artifacts, then the old schemas are still available, but have moved to the `layout-v1` directory.
+Adjust the locations in your `.layout.xml` files accordingly:
+
+* the `menubars.layout.xml` should now declare the following locations (namespace unchanged):
++
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:menuBars
+ xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 https://causeway.apache.org/applib/layout-v1/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component https://causeway.apache.org/applib/layout-v1/component/component.xsd"
+ xmlns:mb3="http://isis.apache.org/applib/layout/menubars/bootstrap3"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ ...
+</mb3:menuBars>
+----
+
+* while any `Xxx.layout.xml` files (for `Xxx` domain object) should declare:
++
+[source,xml]
+.Xxx.layout.xml
+----
+<bs3:grid
+ xsi:schemaLocation="http://isis.apache.org/applib/layout/component https://causeway.apache.org/applib/layout-v1/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout-v1/grid/bootstrap3/bootstrap3.xsd"
+ xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ ...
+</bs3:grid>
+----
+
== Configuration
-The following changed:
+The following configuration properties have been changed:
+
[cols="2a,3a", options="header"]
|===
diff --git a/antora/supplemental-ui/applib/layout-v1/component/component.xsd b/antora/supplemental-ui/applib/layout-v1/component/component.xsd
new file mode 100644
index 0000000000..306880d918
--- /dev/null
+++ b/antora/supplemental-ui/applib/layout-v1/component/component.xsd
@@ -0,0 +1,218 @@
+<?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 xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:lnk="http://isis.apache.org/applib/layout/links"
+ xmlns:tns="http://isis.apache.org/applib/layout/component"
+ elementFormDefault="qualified"
+ targetNamespace="http://isis.apache.org/applib/layout/component"
+ version="1.0">
+
+ <xs:import
+ namespace="http://isis.apache.org/applib/layout/links"
+ schemaLocation="../links/links.xsd"/>
+
+ <xs:element name="action" type="tns:action"/>
+
+ <xs:element name="collection" type="tns:collection"/>
+
+ <xs:element name="domainObject" type="tns:domainObject"/>
+
+ <xs:element name="fieldSet" type="tns:fieldSet"/>
+
+ <xs:element name="serviceAction" type="tns:serviceAction"/>
+
+ <xs:element name="property" type="tns:property"/>
+
+ <xs:complexType name="domainObject">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="named" type="xs:string"/>
+ <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+ <xs:element minOccurs="0" name="plural" type="xs:string"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ <xs:element minOccurs="0" name="link" type="lnk:link"/>
+ </xs:sequence>
+ <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ <xs:attribute name="cssClassFa" type="xs:string"/>
+ <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
+ <xs:attribute name="namedEscaped" type="xs:boolean"/>
+ <xs:attribute name="tableDecoration" type="tns:tableDecoration"/>
+ </xs:complexType>
+
+ <xs:complexType name="action">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="named" type="xs:string"/>
+ <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ <xs:element minOccurs="0" name="link" type="lnk:link"/>
+ </xs:sequence>
+ <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ <xs:attribute name="cssClassFa" type="xs:string"/>
+ <xs:attribute name="cssClassFaPosition" type="tns:cssClassFaPosition"/>
+ <xs:attribute name="hidden" type="tns:where"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="namedEscaped" type="xs:boolean"/>
+ <xs:attribute name="position" type="tns:position"/>
+ <xs:attribute name="promptStyle" type="tns:promptStyle"/>
+ <xs:attribute name="redirect" type="tns:redirect"/>
+ </xs:complexType>
+
+ <xs:complexType name="serviceAction">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="named" type="xs:string"/>
+ <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ <xs:element minOccurs="0" name="link" type="lnk:link"/>
+ </xs:sequence>
+ <xs:attribute name="objectType" type="xs:string" use="required"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="namedEscaped" type="xs:boolean"/>
+ <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ <xs:attribute name="cssClassFa" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="fieldSet">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:action"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:property"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"/>
+ <xs:attribute name="id" type="xs:string"/>
+ <xs:attribute name="unreferencedActions" type="xs:boolean"/>
+ <xs:attribute name="unreferencedProperties" type="xs:boolean"/>
+ </xs:complexType>
+
+ <xs:complexType name="property">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="named" type="xs:string"/>
+ <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:action"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ <xs:element minOccurs="0" name="link" type="lnk:link"/>
+ </xs:sequence>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ <xs:attribute name="hidden" type="tns:where"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="labelPosition" type="tns:labelPosition"/>
+ <xs:attribute name="multiLine" type="xs:int"/>
+ <xs:attribute name="namedEscaped" type="xs:boolean"/>
+ <xs:attribute name="promptStyle" type="tns:promptStyle"/>
+ <xs:attribute name="renderedAsDayBefore" type="xs:boolean"/>
+ <xs:attribute name="typicalLength" type="xs:int"/>
+ <xs:attribute name="repainting" type="xs:boolean"/>
+ </xs:complexType>
+
+ <xs:complexType name="collection">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="named" type="xs:string"/>
+ <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+ <xs:element minOccurs="0" name="sortedBy" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:action"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ <xs:element minOccurs="0" name="link" type="lnk:link"/>
+ </xs:sequence>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ <xs:attribute name="defaultView" type="xs:string"/>
+ <xs:attribute name="hidden" type="tns:where"/>
+ <xs:attribute name="id" type="xs:string" use="required"/>
+ <xs:attribute name="namedEscaped" type="xs:boolean"/>
+ <xs:attribute name="paged" type="xs:int"/>
+ <xs:attribute name="tableDecoration" type="tns:tableDecoration"/>
+ </xs:complexType>
+
+
+ <xs:simpleType name="bookmarkPolicy">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="AS_ROOT"/>
+ <xs:enumeration value="AS_CHILD"/>
+ <xs:enumeration value="NEVER"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="cssClassFaPosition">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="LEFT"/>
+ <xs:enumeration value="RIGHT"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="where">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="EVERYWHERE"/>
+ <xs:enumeration value="ANYWHERE"/>
+ <xs:enumeration value="OBJECT_FORMS"/>
+ <xs:enumeration value="REFERENCES_PARENT"/>
+ <xs:enumeration value="PARENTED_TABLES"/>
+ <xs:enumeration value="STANDALONE_TABLES"/>
+ <xs:enumeration value="ALL_TABLES"/>
+ <xs:enumeration value="ALL_EXCEPT_STANDALONE_TABLES"/>
+ <xs:enumeration value="NOWHERE"/>
+ <xs:enumeration value="NOT_SPECIFIED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="position">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="BELOW"/>
+ <xs:enumeration value="RIGHT"/>
+ <xs:enumeration value="PANEL"/>
+ <xs:enumeration value="PANEL_DROPDOWN"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="promptStyle">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="AS_CONFIGURED"/>
+ <xs:enumeration value="DIALOG"/>
+ <xs:enumeration value="DIALOG_SIDEBAR"/>
+ <xs:enumeration value="DIALOG_MODAL"/>
+ <xs:enumeration value="INLINE"/>
+ <xs:enumeration value="INLINE_AS_IF_EDIT"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="redirect">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="AS_CONFIGURED"/>
+ <xs:enumeration value="EVEN_IF_SAME"/>
+ <xs:enumeration value="ONLY_IF_DIFFERS"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="labelPosition">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="LEFT"/>
+ <xs:enumeration value="RIGHT"/>
+ <xs:enumeration value="TOP"/>
+ <xs:enumeration value="NONE"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="tableDecoration">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="NONE"/>
+ <xs:enumeration value="DATATABLES_NET"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="repainting">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="REPAINT"/>
+ <xs:enumeration value="NO_REPAINT"/>
+ <xs:enumeration value="NOT_SPECIFIED"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/antora/supplemental-ui/applib/layout-v1/grid/bootstrap3/bootstrap3.xsd b/antora/supplemental-ui/applib/layout-v1/grid/bootstrap3/bootstrap3.xsd
new file mode 100644
index 0000000000..8380f737d0
--- /dev/null
+++ b/antora/supplemental-ui/applib/layout-v1/grid/bootstrap3/bootstrap3.xsd
@@ -0,0 +1,167 @@
+<?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
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:tns="http://isis.apache.org/applib/layout/grid/bootstrap3"
+ elementFormDefault="qualified"
+ targetNamespace="http://isis.apache.org/applib/layout/grid/bootstrap3"
+ version="1.0">
+
+ <xs:import
+ namespace="http://isis.apache.org/applib/layout/component"
+ schemaLocation="../../component/component.xsd"/>
+
+ <xs:import
+ namespace="http://isis.apache.org/applib/layout/links"
+ schemaLocation="../../links/links.xsd"/>
+
+ <xs:element name="clearFixHidden" type="tns:clearFixHidden"/>
+
+ <xs:element name="clearFixVisible" type="tns:clearFixVisible"/>
+
+ <xs:element name="col" type="tns:col"/>
+
+ <xs:element name="grid" type="tns:grid"/>
+
+ <xs:complexType name="grid">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="row" type="tns:row"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="row">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ElementAbstract">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:element ref="tns:col"/>
+ <xs:element ref="tns:clearFixVisible"/>
+ <xs:element ref="tns:clearFixHidden"/>
+ </xs:choice>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:string"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType abstract="true" name="bs3ElementAbstract">
+ <xs:sequence/>
+ <xs:attribute name="cssClass" type="xs:string"/>
+ </xs:complexType>
+
+ <xs:complexType name="col">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3RowContent">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="sizeSpan" type="tns:sizeSpan"/>
+ <xs:element minOccurs="0" ref="cpt:domainObject"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="cpt:action"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="row" type="tns:row"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="tabGroup" type="tns:tabGroup"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="cpt:fieldSet"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="cpt:collection"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:string"/>
+ <xs:attribute name="span" type="xs:int" use="required"/>
+ <xs:attribute name="unreferencedActions" type="xs:boolean"/>
+ <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType abstract="true" name="bs3RowContent">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ElementAbstract">
+ <xs:sequence/>
+ <xs:attribute name="size" type="tns:size"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="sizeSpan">
+ <xs:all/>
+ <xs:attribute name="offset" type="xs:boolean"/>
+ <xs:attribute name="size" type="tns:size" use="required"/>
+ <xs:attribute name="span" type="xs:int" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="tabGroup">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ElementAbstract">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="tab" type="tns:tab"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="collapseIfOne" type="xs:boolean"/>
+ <xs:attribute name="unreferencedCollections" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="tab">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ElementAbstract">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="row" type="tns:row"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="clearFixVisible">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ClearFix">
+ <xs:sequence/>
+ <xs:attribute name="cssDisplay" type="tns:cssDisplay" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType abstract="true" name="bs3ClearFix">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3RowContent">
+ <xs:sequence/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="clearFixHidden">
+ <xs:complexContent>
+ <xs:extension base="tns:bs3ClearFix">
+ <xs:sequence/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="size">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="XS"/>
+ <xs:enumeration value="SM"/>
+ <xs:enumeration value="MD"/>
+ <xs:enumeration value="LG"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="cssDisplay">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="BLOCK"/>
+ <xs:enumeration value="INLINE"/>
+ <xs:enumeration value="INLINE_BLOCK"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/antora/supplemental-ui/applib/layout-v1/links/links.xsd b/antora/supplemental-ui/applib/layout-v1/links/links.xsd
new file mode 100644
index 0000000000..fe5d1f1ab9
--- /dev/null
+++ b/antora/supplemental-ui/applib/layout-v1/links/links.xsd
@@ -0,0 +1,26 @@
+<?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
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://isis.apache.org/applib/layout/links"
+ version="1.0">
+
+ <xs:complexType name="link">
+ <xs:sequence>
+ <xs:element name="rel" type="xs:string"/>
+ <xs:element name="method" type="xs:string"/>
+ <xs:element name="href" type="xs:string"/>
+ <xs:element name="type" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
diff --git a/antora/supplemental-ui/applib/layout-v1/menubars/bootstrap3/menubars.xsd b/antora/supplemental-ui/applib/layout-v1/menubars/bootstrap3/menubars.xsd
new file mode 100644
index 0000000000..a9f52ecee1
--- /dev/null
+++ b/antora/supplemental-ui/applib/layout-v1/menubars/bootstrap3/menubars.xsd
@@ -0,0 +1,61 @@
+<?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
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:mb3="http://isis.apache.org/applib/layout/menubars/bootstrap3"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:lnk="http://isis.apache.org/applib/layout/links"
+ xmlns:tns="http://isis.apache.org/applib/layout/menubars/bootstrap3"
+ elementFormDefault="qualified"
+ targetNamespace="http://isis.apache.org/applib/layout/menubars/bootstrap3" version="1.0">
+
+ <xs:import
+ namespace="http://isis.apache.org/applib/layout/component"
+ schemaLocation="../../component/component.xsd"/>
+
+ <xs:import
+ namespace="http://isis.apache.org/applib/layout/links"
+ schemaLocation="../../links/links.xsd"/>
+
+ <xs:element name="menuBars" type="tns:menuBars"/>
+
+ <xs:complexType name="menuBars">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="primary" type="tns:menuBar"/>
+ <xs:element minOccurs="0" name="secondary" type="tns:menuBar"/>
+ <xs:element minOccurs="0" name="tertiary" type="tns:menuBar"/>
+ <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="menuBar">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="menu" type="tns:menu"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="menu">
+ <xs:sequence>
+ <xs:element name="named" type="xs:string"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="section" type="tns:section"/>
+ </xs:sequence>
+ <xs:attribute name="cssClassFa" type="xs:string"/>
+ <xs:attribute name="unreferencedActions" type="xs:boolean"/>
+ </xs:complexType>
+
+ <xs:complexType name="section">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="named" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" name="serviceAction" type="cpt:serviceAction"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>