fix broken links in xmlb spec

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/spec/src/main/asciidoc/appB-runtime_processing.adoc b/spec/src/main/asciidoc/appB-runtime_processing.adoc
index 1209086..c060efb 100644
--- a/spec/src/main/asciidoc/appB-runtime_processing.adoc
+++ b/spec/src/main/asciidoc/appB-runtime_processing.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 [appendix]
@@ -120,11 +120,11 @@
 ----
 The unmarshal methods that do not take
 declaredType as parameter must be unmarshalled as specified in
-link:jaxb.html#a3902[See Globally Declared Root Element].
+<<globally-declared-root-element>>.
 
 The unmarshal methods that take a
 `declaredType` as a parameter must be unmarshalled as specified in
-link:jaxb.html#a3953[See Declared Type].
+<<declared-type>>.
 
 ==== Globally Declared Root Element
 
@@ -245,7 +245,7 @@
 mapped to a JAXB mapped type set the _valueType_ to the javatype to which
 xsi:type is mapped.
 .. otherwise, `xsi:type` is not specified; _valueType_ is unchanged.
-. Unmarshal _valueType_ as specified in link:jaxb.html#a3960[See Value Type].
+. Unmarshal _valueType_ as specified in <<value-type>>.
 . If the element factory method is annotated
 with @XmlJavaTypeAdapter, then convert the _valueType_ into a _boundType_
 +
@@ -282,8 +282,7 @@
 .. otherwise _valueType_ is the argument passed
 to `declaredType` parameter in the
 `unmarshal(..., java.lang.Class<T>declaredType)` call.
-. Unmarshal _valueType_ as specified in
-link:jaxb.html#a3960[See Value Type].
+. Unmarshal _valueType_ as specified in <<value-type>>.
 
 ==== Value Type
 
@@ -330,16 +329,13 @@
 If EII.valueType being unmarshalled
 
 .. unmarshal each child element information
-item in EII.[children] as specified in link:jaxb.html#a3978[See
-Element Information Item].
+item in EII.[children] as specified in <<element-information-item>>.
 .. unmarshal each attribute information item
-in EII.[attributes] as specified in link:jaxb.html#a4002[See
-Attribute Information Item].
+in EII.[attributes] as specified in <<attribute-information-item>>.
 . Unmarshal the value of EII.schematype or
 AII.schematype following the Java to XML Schema rules defined in Chapter
 8, "Java Types to XML". If the value in XML instance is unparseable,
-then it must be handled as specified in link:jaxb.html#a4086[See
-Unparseable Data for Simple types].
+then it must be handled as specified in <<Unparseable Data for Simple types>>.
 . Invoke any event callbacks in the following order as follows:
 .. If _valueType_ implements an unmarshal event
 callback `afterUnmarshal(..)` as specified in Section 4.4.1,"Unmarshal
@@ -354,9 +350,7 @@
 
 An EII must be unmarshalled as follows:
 
-. infer EII.property as specified in
-link:jaxb.html#a4023[See Property Inference - Element
-Information Item].
+. infer EII.property as specified in <<property-inference-element-information-item>>.
 . if EII.property is null, then there is no
 property to hold the value of the element. If validation is on (i.e.
 Unmarshaller.getSchema() is not null), then report a
@@ -364,14 +358,12 @@
 elements to be ignored.
 +
 If EII.property is not null and there is no
-setter method as specified in section link:jaxb.html#a4259[See
-Getters/Setters] then report a jakarta.xml.bind.ValidationEvent.
+setter method as specified in section <<getterssetters>>
+then report a jakarta.xml.bind.ValidationEvent.
 +
 Goto step 8.
 
-. infer the EII.valuetype as described in
-link:jaxb.html#a4043[See Type Inference - Element Information
-Item].
+. infer the EII.valuetype as described in <<type-inference-element-information-item>>.
 . if EII.valuetype is null, then go to step 8.
 +
 [NOTE]
@@ -380,8 +372,7 @@
 EII.valuetype = null implies that there
 was problem. so don't attempt to unmarshal the element.
 ====
-. Unmarshal EII.valuetype as specified in
-link:jaxb.html#a3960[See Value Type].
+. Unmarshal EII.valuetype as specified in <<value-type>>.
 . if there is a @XmlJavaTypeAdapter
 associated with EII.property, then adapt the EII.valuetype as follows:
 +
@@ -436,8 +427,7 @@
 An attribute information item must be unmarshalled as follows:
 
 . infer AII.property as described in section
-link:jaxb.html#a4033[See Property Inference - Attribute
-Information Item].
+<<property-inference-attribute-information-item>>.
 . if AII.property is null, then the attribute
 is invalid with respect to the XML schema. This is possible if for e.g.
 schema has evolved. If validation is on (i.e. Unmarshaller.getSchema()
@@ -445,14 +435,13 @@
 this will cause any unknown elements to be ignored.
 +
 If AII.property is not null and there is no
-setter method as specified in section link:jaxb.html#a4259[See
-Getters/Setters] then report a jakarta.xml.bind.ValidationEvent.
+setter method as specified in section <<getterssetters>>
+then report a jakarta.xml.bind.ValidationEvent.
 +
 Goto step 8.
 
 . infer the AII.valuetype as described in
-link:jaxb.html#a4079[See Type Inference - Attribute Information
-Item].
+<<type-inference-attribute-information-item>>.
 . if AII.valuetype is null, then go to step 8.
 +
 [NOTE]
@@ -461,8 +450,7 @@
 AII.valuetype = null implies that there
 was problem. so don't attempt to unmarshal the attribute.
 ====
-. Unmarshal AII.valuetype as specified in
-link:jaxb.html#a3960[See Value Type].
+. Unmarshal AII.valuetype as specified in <<value-type>>.
 . If AII.property is associated with a
 `@XmlJavaTypeAdapter`, adapt AII.valuetype as follows:
 +
@@ -664,8 +652,8 @@
 If simple type data cannot be parsed into a
 java datatype, then the value of the java datatype must not change the
 current set value. An access to the datatype must return the value as
-specified in link:jaxb.html#a4095[See Missing element
-information item]. If the conversion of lexical representation into a
+specified in <<missing-element-information-item>>.
+If the conversion of lexical representation into a
 value results in an exception, then the exception must be caught and a
 validation event reported. This is to ensure that such conversion errors
 do not terminate unmarshalling.
@@ -689,8 +677,7 @@
 required by a XML schema is missing from the XML instance.
 
 Property or field access must return the
-value specified in link:jaxb.html#a4101[See Value for missing
-elements/attributes]
+value specified in <<value-for-missing-elementsattributes>>.
 
 ===== Missing Attribute
 
@@ -699,8 +686,7 @@
 instance.
 
 Property or field access must return the
-value specified in link:jaxb.html#a4101[See Value for missing
-elements/attributes].
+value specified in <<value-for-missing-elementsattributes>>.
 
 ===== Value for missing elements/attributes
 
@@ -735,8 +721,7 @@
 property/field.
 
 Unknown attribute handling during
-unmarshalling is specified in link:jaxb.html#a4023[See Property
-Inference - Element Information Item].
+unmarshalling is specified in <<property-inference-element-information-item>>.
 
 ===== Unknown attribute
 
@@ -747,8 +732,7 @@
 property/field.
 
 Unknown attribute handling during
-unmarshalling is specified in link:jaxb.html#a4033[See Property
-Inference - Attribute Information Item].
+unmarshalling is specified in <<property-inference-attribute-information-item>>.
 
 === Marshalling
 
@@ -763,15 +747,15 @@
 A JAXB Provider must marshal the content tree as follows:
 
 * marshal the XML root element tag as
-specified in link:jaxb.html#a4125[See XML Root Element Tag]
+specified in <<xml-root-element-tag>>
 * marshal `obj` as specified in section
-link:jaxb.html#a4132[See Type].
+<<type>>.
 
 ==== XML Root Element Tag
 
 . If `obj` is an instance of
 `jakarta.xml.bind.JAXBElement` then marshal `obj` as specified in
-link:jaxb.html#a4139[See JAXBElement]
+<<jaxbelement>>
 +
 Goto step 4
 
@@ -779,7 +763,7 @@
 `@XmlRootElement`, then set {EII.[local name], EII.[namespace]} by
 deriving them from the @XmlRootElement annotation following the Java to
 Schema mapping rules in chapter 8. Marshal obj instance as specified in
-link:jaxb.html#a4132[See Type].
+<<type>>.
 +
 Goto step 4
 
@@ -792,15 +776,13 @@
 
 The type must be marshalled as follows. If the type is an instance of
 
-* JAXBElement, then marshal as specified in
-link:jaxb.html#a4139[See JAXBElement].
+* JAXBElement, then marshal as specified in <<jaxbelement>>.
 * Otherwise, marshal the type as follows. If
 the type is a:
 ** class, then marshal as specified in
-link:jaxb.html#a4156[See class].
+<<class-2>>.
 ** primitive type or standard class, then
-marshal as specified in link:jaxb.html#a4180[See Primitives and
-Standard classes]
+marshal as specified in <<primitives-and-standard-classes>>
 ** enum type then marshal following the schema
 to which it is mapped.
 
@@ -852,7 +834,7 @@
 otherwise _valueType_ is _boundType_
 
 . map _valueType_ to XML infoset information
-items as specified in link:jaxb.html#a4132[See Type] and add
+items as specified in <<type>> and add
 them to EII.
 . marshal EII.
 
@@ -860,19 +842,17 @@
 
 A class must be mapped to XML infoset items as follows:
 
-. If a class mapped to a value as specified
-link:jaxb.html#a3331[See @XmlValue], then map the value to an
-XML infoset and add it to EII.[children]
+. If a class mapped to a value as specified <<xmlvalue>>,
+then map the value to an XML infoset and add it to EII.[children]
 +
 return
 
 . For each property that is mapped to XML
-attribute as specified in link:jaxb.html#a3230[See
-@XmlAttribute]:
+attribute as specified in <<xmlattribute>>:
 .. derive {AII.[local name], AII.[prefix],
 AII.[namespace] } from {name} {target namespace}.
 .. AII.[normalized value] = value of property
-as specified in link:jaxb.html#a4169[See property type]
+as specified in <<property-type>>
 .. add AII to EII.[attributes]
 +
 [NOTE]
@@ -889,7 +869,7 @@
 childEII.[prefix], childEII.[namespace]} from elem.{name}
 elem.{target namespace}
 .. map property type to XML infoset items into
-childEII as specified in link:jaxb.html#a4169[See property type].
+childEII as specified in <<property-type>>.
 .. add childEII to EII.[children]
 
 ===== property type
@@ -899,8 +879,8 @@
 section") as follows:
 
 . If property does not have a getter method
-as specified in section link:jaxb.html#a4259[See
-Getters/Setters] then report a jakarta.xml.bind.ValidationEvent.
+as specified in section <<getterssetters>>
+then report a jakarta.xml.bind.ValidationEvent.
 +
 Goto step 4.
 . If the value of the property being marshalled is a subtype _boundType_, then
@@ -915,7 +895,7 @@
 <foo xsi:type="MyAddrType"/>
 ----
 .. add EII to childEII
-. Marshal the value as specified in link:jaxb.html#a4132[See Type].
+. Marshal the value as specified in <<type>>.
 . Return
 
 ===== Primitives and Standard classes
diff --git a/spec/src/main/asciidoc/appD-binding_xml.adoc b/spec/src/main/asciidoc/appD-binding_xml.adoc
index ae9c22e..26ae3ba 100644
--- a/spec/src/main/asciidoc/appD-binding_xml.adoc
+++ b/spec/src/main/asciidoc/appD-binding_xml.adoc
@@ -55,13 +55,11 @@
 * An underscore (’\_’, \u005F, LOW LINE) with following exceptionfootnote:exc[Exception case:
 Underscore is not considered a punctuation mark for schema customization
 _<jaxb:globalBindings underscoreHandling="asCharInWord"/>_ specified in
-link:jaxb.html#a1613[See Underscore Handling]". For this
+<<Underscore Handling>>. For this
 customization, underscore is considered a special letter that never
-results in a word break as defined in link:jaxb.html#a4681[See
-XML Word Breaks] and it is definitely not considered an uncased letter.
-See example bindings in link:jaxb.html#a4755[See XML Names and
-derived Java Class, Method, and Constant Names when <jaxb:globalBindings
-underscoreHandling=”asCharInWord”>].]
+results in a word break as defined in <<xmlWordBreaks>>
+and it is definitely not considered an uncased letter.
+See example bindings in <<asCharInWord>>.]
 
 These are all legal characters in XML names.
 
@@ -96,6 +94,7 @@
 break. The word breaks are defined as:
 
 .XML Word Breaks
+[[xmlWordBreaks]]
 [cols=",,,",options="header"]
 |===
 | Prefix | Separator | Suffix | Example
@@ -141,12 +140,12 @@
 
 To improve user experience with default
 binding, the automated resolution of frequent naming collision is
-specified in link:jaxb.html#a4770[See Standardized Name
-Collision Resolution].
+specified in <<Standardized Name Collision Resolution>>.
 
 *_Example_*
 
 .XML Names and derived Java Class, Method, and Constant Names
+[[jcmcn]]
 [cols=",,,",options="header"]
 |===
 | XML Name | Class Name | Method Name | Constant Name
@@ -157,6 +156,7 @@
 |===
 
 .XML Names and derived Java Class, Method, and Constant Names when <jaxb:globalBindings underscoreHandling=”asCharInWord”>
+[[asCharInWord]]
 [cols=",,,",options="header"]
 |===
 | XML Name | Class Name | Method Name | Constant Name
@@ -180,8 +180,8 @@
 one of the two XML names to an alternative Java identifier.
 
 A class name must not conflict with the
-generated JAXB class, `ObjectFactory`, link:jaxb.html#a482[See
-Java Package], that occurs in each schema-derived Java package. Method
+generated JAXB class, `ObjectFactory`, <<Java Package>>,
+that occurs in each schema-derived Java package. Method
 names are forbidden to conflict with Java keywords or literals, with
 methods declared in `java.lang.Object`, or with methods declared in the
 binding-framework classes. Such conflicts are reported as errors and may
@@ -386,8 +386,7 @@
 Final package name: "com.acme.go.espeak".
 ----
 
-link:jaxb.html#a4767[See Collisions
-and conflicts], specifies what to do when the above algorithm results in
+<<Collisions and conflicts>> specifies what to do when the above algorithm results in
 an invalid Java package name.
 
 === Conforming Java Identifier Algorithm
@@ -395,11 +394,11 @@
 This section describes how to convert a legal
 Java identifier which may not conform to Java naming conventions to a
 Java identifier that conforms to the standard naming conventions.
-link:jaxb.html#a1608[See Customized Name Mapping] discusses when
+<<Customized Name Mapping>> discusses when
 this algorithm is applied to customization names.
 
 Since a legal Java identifier is also a XML
-name, this algorithm is the same as link:jaxb.html#a4656[See The
-Name to Identifier Mapping Algorithm] with the following exception:
+name, this algorithm is the same as <<The Name to Identifier Mapping Algorithm>>
+with the following exception:
 constant names must not be mapped to a Java constant that conforms to
 the Java naming convention for a constant.
diff --git a/spec/src/main/asciidoc/appH-binary_data.adoc b/spec/src/main/asciidoc/appH-binary_data.adoc
index 9f2c2e8..d0273b1 100644
--- a/spec/src/main/asciidoc/appH-binary_data.adoc
+++ b/spec/src/main/asciidoc/appH-binary_data.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 [appendix]
@@ -11,13 +11,12 @@
 attachments is described by standards such as Soap [MTOM]/Xml-binary
 Optimized Packaging[XOP] and WS-I Attachment Profile 1.0 [WSIAP]. To
 optimally support these standards when JAXB databinding is used within a
-message passing environment, link:jaxb.html#a5149[See
-jakarta.xml.bind.attachments]“specifies an API that allows for an
+message passing environment, <<jakarta-xml-bind-attachments>>
+specifies an API that allows for an
 integrated, cooperative implementation of these standards between a
 MIME-based package processor and the Jakarta XML Binding unmarshal/marshal
 processes. An enhanced binding of MIME content to Java representation is
-specified in link:jaxb.html#a5113[See Binding MIME Binary
-Data].
+specified in <<Binding MIME Binary Data>>.
 
 === Binding MIME Binary Data
 
@@ -48,10 +47,10 @@
 type for the binary data. [MIME] does not require an `xmime:contentType`
 attribute to hold the dynamic mime type for the binary data for this
 case. JAXB binding can achieve an optimal binding for this case. The
-default MIME type to Java datatype are in
-link:jaxb.html#a5119[See Default Binding for Known Media Type].
+default MIME type to Java datatype are in <<a5119>>.
 
 .Default Binding for Known Media Type
+[[a5119]]
 [cols=",",options="header",]
 |===
 | MIME Type | Java Type
@@ -98,6 +97,7 @@
 to set `DataHandler.setContentType(String)`.
 
 .Schema for local element declaration annotated with known media type
+[[a5140]]
 [source,xml,indent="2"]
 ----
 <?xml version="1.0" ?>
@@ -117,7 +117,7 @@
 </xs:schema>
 ----
 
-.Java Binding of link:jaxb.html#a5140[See Schema for local element declaration annotated with known media type]“
+.Java Binding of <<a5140>>
 [source,java,indent="4"]
 ----
 import java.awt.Image;
@@ -183,8 +183,8 @@
 
 The JAXB unmarshal process communicates with
 a MIME-based package processor via an instance of AttachmentUnmarshaller
-registered with the unmarshaller. link:jaxb.html#a5165[See JAXB
-marshal/unmarshalling of optimized binary content.] summarizes this
+registered with the unmarshaller.
+<<opbin>> summarizes this
 processing.
 
 * MTOM/XOP processing during unmarshal: +
@@ -231,7 +231,7 @@
 optimize or inline the binary data.
 +
 Note that the schema customization specified in
-link:jaxb.html#a2193[See <inlineBinaryData> Declaration] can be
+<<inlinebinarydata-declaration>> can be
 used to declaratively disable XOP processing for binary data.
 * WS-I AP processing: +
 The `addSwaRefAttachment` method is called when marshalling content
@@ -239,8 +239,9 @@
  +
 One can declaratively customize swaRef processing within a schema using
 schema customization @attachmentRef of <jaxb:property>, specified in
-link:jaxb.html#a1786[See Usage]“.
+<<usage-4>>.
 
 .JAXB marshal/unmarshalling of optimized binary content.
+[[opbin]]
 image::images/xmlb-23.png[image]
 
diff --git a/spec/src/main/asciidoc/appI-changelog.adoc b/spec/src/main/asciidoc/appI-changelog.adoc
index 0cfa1c6..0c34066 100644
--- a/spec/src/main/asciidoc/appI-changelog.adoc
+++ b/spec/src/main/asciidoc/appI-changelog.adoc
@@ -1,10 +1,14 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 [appendix]
 == Change Log
 
+=== Changes in Version 3 rev1
+
+* fixed cross-references in the specification document
+
 === Changes in Version 3
 
 * Changed specification version and license.
@@ -103,8 +107,7 @@
 
 === Changes since Public Review
 
-* Update link:jaxb.html#a3815[See
-Compatibility]” for JAXB 2.0 technology. Additional requirements added
+* Update <<Compatibility>> for JAXB 2.0 technology. Additional requirements added
 for Java Types to XML binding and the running of JAXB 1.0 application in
 a JAXB 2.0 environment.
 * Added external event callback mechanism,
@@ -113,8 +116,7 @@
 unmarshal by declaredType, to _Unmarshaller_ and _Binder_ . Enables
 unmarshalling a root element that corresponds with a local element
 declaration in schema.
-* Added link:jaxb.html#a1459[See
-Modifying Schema-Derived Code]” describing use of annotation
+* Added <<modifying-schema-derived-code>> describing use of annotation
 _@javax.annotation.Generated_ to distinguish between generated and
 user-modified code in schema-derived class.
 * Element declaration with anonymous complex
@@ -131,10 +133,10 @@
 * First parameter to any of the overloaded
 Marshaller.marshal() methods must be a JAXB element; otherwise, method
 must throw MarshalException. See updated Marshaller javadoc and
-link:jaxb.html#a397[See Marshalling]” for details.
+<<Marshalling>> for details.
 * Prepend “_”, not “Original”, to a Java
 class name representing an XML Schema type definition that has been
-redefined in link:jaxb.html#a1316[See Redefine]”.
+redefined in <<Redefine>>.
 * Format for class name in _jaxb.index_ file
 clarified in JAXBConext.newInstance(String) method javadoc.
 * Clarifications on @dom customization in
@@ -318,29 +320,22 @@
 === Changes for 2.0 +
 Early Draft v0.4
 
-* Updated link:jaxb.html#a2[See
-Introduction]”.
-* Added link:jaxb.html#a151[See
-Requirements]”
-* Added link:jaxb.html#a2236[See Java
-Types To XML]” for Java Source to XML Schema mapping.
+* Updated <<Introduction>>.
+* Added <<Requirements>>
+* Added <<Java Types To XML>> for Java Source to XML Schema mapping.
 * XML Schema to schema-derived Java Binding
 changes
 * Element handling changes to support element
-and type substitution in link:jaxb.html#a680[See Java Element
-Representation Summary]”, link:jaxb.html#a1023[See Element
-Declaration]” and link:jaxb.html#a630[See Element Property]”.
-* Added link:jaxb.html#a1306[See
-Attribute Wildcard]” binding
+and type substitution in <<Java Element Representation Summary>>,
+<<Element Declaration>> and <<Element Property>>.
+* Added <<Attribute Wildcard>> binding
 * Support binding all wildcard content in
-link:jaxb.html#a1384[See Bind wildcard schema component]”.
+<<Bind wildcard schema component>>.
 * Addition/changes in
-link:jaxb.html#a725[See Java Mapping for XML Schema Built-in
-Types].
+<<Java Mapping for XML Schema Built-in Types>>.
 * XML Schema to Java Customization
 * Added ability to doable databinding for an
-XML Schema fragment in link:jaxb.html#a2165[See <dom>
-Declaration]”.
+XML Schema fragment in <<dom-declaration>>.
 
 === Changes for 1.0 Final
 
@@ -350,8 +345,7 @@
 
 === Changes for Proposed Final
 
-* Added link:jaxb.html#a3815[See
-Compatibility].”
+* Added <<Compatibility>>.
 * Section 5.9.2, “General Content Property,”
 removed value content list since it would not be tractable to support
 when type and group substitution are supported by JAXB technology.
@@ -366,19 +360,17 @@
 * Section 6.12.11, “Model Group binding
 algorithm” changed step 4(a) to bind to choice value class rather than
 choice content property.
-* link:jaxb.html#a595[See List
-Property] and link:jaxb.html#a610[See isSet Property Modifier]”
+* <<List Property>> and <<isset-property-modifier>>
 updated so one can discard set value for a List property via calling
 unset method.
 * At end of Section 4, added an UML diagram
 of the JAXB Java representation of XML content.
 * Updated default binding handling in
-link:jaxb.html#a996[See Model Group Definition].” Specifically,
+<<Model Group Definition>>. Specifically,
 value class, element classes and enum types are derived from the content
 model of a model group definition are only bound once, not once per time
 the group is referenced.
-* Change link:jaxb.html#a1384[See
-Bind wildcard schema component],” to bind to a JAXB property with a
+* Change <<Bind wildcard schema component>>, to bind to a JAXB property with a
 basetype of _java.lang.Object,_ not _jakarta.xml.bind.Element._ Strict and
 lax wildcard validation processing allows for contents constrained only
 by _xsi:type_ attribute. Current APIs should allow for future support of
@@ -388,21 +380,18 @@
 name with the requirement that the @name attribute for element
 typesafeEnumClass is mandatory when associated with an anonymous simple
 type definition.
-* Changed link:jaxb.html#a1012[See
-Deriving Class Names for Named Model Group Descendants]” to state that
-all classes and interfaces generated for XML Schema component that
+* Changed <<Deriving Class Names for Named Model Group Descendants>>
+to state that all classes and interfaces generated for XML Schema component that
 directly compose the content model for a model group, that these
 classes/interfaces should be generated once as top-level interface/class
 in a package, not in every content model that references the model
 group.
-* Current link:jaxb.html#a1580[See
-<globalBindings> Declaration]”:
+* Current <<globalbindings-declaration>>:
 * Replaced _modelGroupAsClass_ with
 _bindingStyle_ .
 * Specified schema types that cannot be
 listed in _typesafeEnumBase_ .
-* link:jaxb.html#a1783[See <property>
-Declaration]:
+* <<property-declaration>>:
 * Clarified the customization of model groups
 with respect to _choiceContentProperty, elementBinding and
 modelGroupBinding._ Dropped _choiceContentProperty_ from the
@@ -415,8 +404,7 @@
 point of reference.
 * Clarified restrictions and relationships
 between different customizations.
-* link:jaxb.html#a1981[See <javaType>
-Declaration]”:
+* <<javatype-declaration>>:
 * Added
 _jakarta.xml.bind.DatatypeConverterInterface_ interface.
 * Added _jakarta.xml.bind.DatatypeConverter_
@@ -427,9 +415,8 @@
 requirements.
 * Added narrowing and widening conversion
 requirements.
-* Throughout link:jaxb.html#a1498[See
-Customizing XML Schema to Java Representation Binding],” clarified the
-handling of invalid customizations.
+* Throughout <<Customizing XML Schema to Java Representation Binding>>,
+clarified the handling of invalid customizations.
 
 === Changes for Public Draft 2
 
@@ -476,9 +463,8 @@
 
 === Changes for Public Draft
 
-* link:jaxb.html#a1442[See Bind
-single occurrence choice group to a choice content property],” replaced
-overloading of choice content property setter method with a single
+* <<Bind single occurrence choice group to a choice content property>>,
+replaced overloading of choice content property setter method with a single
 setter method with a value parameter with the common type of all members
 of the choice. Since the resolution of overloaded method invocation is
 performed using compile-time typing, not runtime typing, this
@@ -490,10 +476,9 @@
 does not fail on first warning, only on first error or fatal error.
 * Add ID/IDREF handling in section 5.
 * Updated name mapping in appendix C.
-* link:jaxb.html#a572[See Indexed
-Property], added getIDLenth() to indexed property.
+* <<Indexed Property>>, added getIDLenth() to indexed property.
 * Removed ObjectFactory.setImplementation
-method from link:jaxb.html#a482[See Java Package]. The negative
+method from <<Java Package>>. The negative
 impact on implementation provided to be greater than the benefit it
 provided the user.
 * Introduced external binding declaration
diff --git a/spec/src/main/asciidoc/ch01-introduction.adoc b/spec/src/main/asciidoc/ch01-introduction.adoc
index 065b0bd..1e3cf64 100644
--- a/spec/src/main/asciidoc/ch01-introduction.adoc
+++ b/spec/src/main/asciidoc/ch01-introduction.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == [[a2]]Introduction
@@ -157,12 +157,12 @@
 The Jakarta XML Binding architecture is designed with the
 goals outlined here in mind.
 
-* [[a25]]Full W3C XML Schema support +
+* [[a25,Full W3C XML Schema support]]Full W3C XML Schema support +
  +
 Support for XML Schema features not required
 to be supported in JAXB 1.0 has been added in this version.
 
-* [[a27]]Binding existing Java classes to generated XML schema +
+* [[a27,Binding existing Java classes to generated XML schema]]Binding existing Java classes to generated XML schema +
  +
 This addresses application scenarios where
 design begins with Java classes rather than an XML schema. One such
@@ -288,14 +288,11 @@
 JAXB 1.0 provided customization mechanisms for the subset of XML Schema
 components supported in JAXB 1.0. Customization support will be extended
 to additional XML Schema features to be supported in this version of the
-specification link:jaxb.html#a25[See Full W3C XML Schema
-support].
+specification, see <<a25>>. +
 ** Java to XML: +
  +
 A standard way to customize the binding of
-existing Java classes to XML schema will be added,
-link:jaxb.html#a27[See Binding existing Java classes to
-generated XML schema].
+existing Java classes to XML schema will be added, see <<a27>>.
 
 * Schema derived classes should be natural +
  +
diff --git a/spec/src/main/asciidoc/ch02-requirements.adoc b/spec/src/main/asciidoc/ch02-requirements.adoc
index 72897af..59fd749 100644
--- a/spec/src/main/asciidoc/ch02-requirements.adoc
+++ b/spec/src/main/asciidoc/ch02-requirements.adoc
@@ -1,8 +1,8 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
-== [[a151]]Requirements
+== Requirements
 
 This chapter specifies the scope and requirements for this version of the specification.
 
@@ -48,8 +48,7 @@
 design a schema, it is daunting to identify a single ideal default
 binding solution. For situations where several equally good binding
 alternatives exist, the specification will describe the alternatives and
-select one to be the default (see link:jaxb.html#a165[See
-Customized Binding Schema]).
+select one to be the default (see <<Customized Binding Schema>>).
 
 The binding schema must provide a means to
 specify an alternative binding for the scope of an entire schema. This
@@ -100,8 +99,7 @@
 
 A default mapping Java constructs to XML
 Schema must be specified. The default mapping may be overridden by
-customizations described in link:jaxb.html#a184[See Customized
-Mapping]”.
+customizations described in <<Customized Mapping>>.
 
 ==== Customized Mapping
 
@@ -125,8 +123,7 @@
 constructs to XML Schema mapping. The latter should therefore define
 customizations that enable mapping to XML Schema constructs commonly
 used in web services, subject to the requirements in
-link:jaxb.html#a184[See Customized Mapping]” and
-link:jaxb.html#a182[See Default Mapping]”.
+<<Customized Mapping>> and <<Default Mapping>>.
 
 ===== Backward Compatibility
 
diff --git a/spec/src/main/asciidoc/ch03-architecture.adoc b/spec/src/main/asciidoc/ch03-architecture.adoc
index c207912..d64cf5b 100644
--- a/spec/src/main/asciidoc/ch03-architecture.adoc
+++ b/spec/src/main/asciidoc/ch03-architecture.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Architecture
@@ -8,7 +8,7 @@
 
 This chapter describes the architectural
 components, comprising the XML-databinding facility, that realize the
-goals outlined in link:jaxb.html#a23[See Goals]”. The scope of
+goals outlined in <<Goals>>. The scope of
 this version of specification covers many additional goals beyond those
 in JAXB 1.0. As a result, JAXB 1.0 architecture has been revised
 significantly.
@@ -43,11 +43,11 @@
 
 As used in this specification, the term
 _schema_ includes the W3C XML Schema as defined in the XML Schema 1.0
-Recommendation[XSD Part 1][XSD Part 2]. link:jaxb.html#a210[See
-Non-Normative Jakarta XML Binding Architecture diagram] illustrates relationships
+Recommendation[XSD Part 1][XSD Part 2]. <<a210>> illustrates relationships
 between concepts introduced in this section.
 
-.[[a210]]Non-Normative Jakarta XML Binding Architecture diagram
+.Non-Normative Jakarta XML Binding Architecture diagram
+[[a210]]
 image::images/xmlb-3.png[image]
 
 JAXB-annotated classes are common to both
@@ -223,7 +223,7 @@
 
 *_Adding application specific behavior and data_*
 Applications can choose to add either behavior or data to schema derived
-code. link:jaxb.html#a1459[See Modifying Schema-Derived Code]”
+code. Section <<Modifying Schema-Derived Code>>
 specifies how the mapping annotation, `@jakarta.annotation.Generated`,
 should be used by a developer to denote developer added/modified code
 from schema-derived code. This information can be utilized by tools to
@@ -256,7 +256,7 @@
 Support for invalid XML content required
 changes to JAXB 1.0 schema to java binding rules as well as the
 introduction of a flexible unmarshalling mode. These changes are
-described in link:jaxb.html#a379[See Unmarshalling Modes]”.
+described in <<Unmarshalling Modes>>.
 
 ==== Validation
 
@@ -397,8 +397,7 @@
 Unmarshalling and marshalling are the two
 operations that can result in multiple validation failures. The same
 mechanism is used to handle both failure scenarios. See
-link:jaxb.html#a326[See General Validation Processing] for
-further details.
+<<General Validation Processing>> for further details.
 
 === An example
 
diff --git a/spec/src/main/asciidoc/ch04-binding_framework.adoc b/spec/src/main/asciidoc/ch04-binding_framework.adoc
index 9b41d53..3e603e5 100644
--- a/spec/src/main/asciidoc/ch04-binding_framework.adoc
+++ b/spec/src/main/asciidoc/ch04-binding_framework.adoc
@@ -15,8 +15,7 @@
 interfaces that are used directly with content classes. The
 `jakarta.xml.bind` footnote:[JAXB 1.0 deprecated
 class, `jakarta.xml.bind.Validator`, is described in
-"link:jaxb.html#a5096[See Validator for JAXB 1.0 schema-derived
-classes]".] package defines the
+<<Validator for JAXB 1.0 schema-derived classes>>] package defines the
 `Unmarshaller`, `Marshaller` and `Binder` classes, which are auxiliary
 objects for providing their respective operations.
 
@@ -48,9 +47,8 @@
 binding framework to unmarshal and marshal to XML content into/from
 JAXB-annotated classes. All JAXB schema binding compilers must be able
 to generate portable schema-derived JAXB-annotated classes following the
-constraints described in Section 6, "link:jaxb.html#a694[See
-Binding XML Schema to Java
-Representations]". All binding runtime frameworks are required
+constraints described in <<Binding XML Schema to Java Representations>>.
+All binding runtime frameworks are required
 to be able to marshal and unmarshal portable JAXB-annotated classes
 generated by other Jakarta XML Binding schema binding compiler.
 
@@ -193,7 +191,7 @@
 
 *  *On-demand validation* +
 This mode of validation is deprecated in Jakarta XML Binding.
-See link:jaxb.html#a5094[See On-demand Validation] for the
+See <<On-demand Validation>> for the
 JAXB 1.0 description of this functionality.
 
 *  *Fail-fast validation* +
@@ -319,8 +317,7 @@
 event handler using the `setEventHandler(ValidationEventHandler)`. The
 default event handler aborts the unmarshalling process when the first
 validation error event is encountered. Validation processing options are
-presented in more detail in link:jaxb.html#a326[See General
-Validation Processing].”
+presented in more detail in <<General Validation Processing>>.
 
 An application has the ability to specify a
 SAX 2.0 parser to be used by the `unmarshal` operation using the
@@ -430,8 +427,7 @@
 notified that an xml document is deviating from the schema.
 
 XML Schema to Java binding for interfaces and
-implementation classes, link:jaxb.html#a536[See Java Content
-Interface], can implement either structural unmarshalling or flexible
+implementation classes, <<Java Content Interface>>, can implement either structural unmarshalling or flexible
 unmarshalling.
 
 ==== Flexible Unmarshalling
@@ -473,8 +469,7 @@
 
 The flexible unmarshalling process is
 annotation driven. This process is specified in
-link:jaxb.html#a3855[See Appendix],
-link:jaxb.html#a3856[See Runtime Processing]”. Flexible
+<<Runtime Processing>>. Flexible
 unmarshalling is required for Jakarta XML Binding annotated classes.
 
 === Marshalling
@@ -546,7 +541,7 @@
 `setEventHandler(ValidationEventHandler)`. The default event handler
 aborts the marshalling process when the first validation error event is
 encountered. Validation processing options are presented in more detail
-in link:jaxb.html#a326[See General Validation Processing].”
+in <<General Validation Processing>>.
 
 There is no requirement that the Java content
 tree be valid with respect to its original schema in order to marshal it
@@ -554,8 +549,7 @@
 inconsistency during its process that it is unable to recover from, it
 should abort the marshal process by throwing `MarshalException`. The
 marshalling process of a JAXB-annotated class is annotation driven. This
-process is specified in link:jaxb.html#a3855[See Appendix],
-link:jaxb.html#a3856[See Runtime Processing]”.
+process is specified in <<Runtime Processing>>.
 
 ==== Marshal event callbacks
 
@@ -655,14 +649,14 @@
 The Jakarta XML Binding architecture has two uniquely
 different ways to represent an XML element.The XML Schema to Java
 binding for an XML element declaration is described in
-link:jaxb.html#a642[See Java Element Representation]”. The Java
+<<Java Element Representation>>. The Java
 to XML Schema binding for an XML element declaration is described in
-Section 8.8.2, “@XmlRootElement.“
+<<xmlrootelement>>.
 
 Use JAXBInstrospector.isElement(Object)
 method to determine if an instance of a JAXB mapped class represents an
 XML element. One can get the xml element tag name associated with a JAXB
-element using `JAXBIntrospector.getElementName`_ method.One can an xml
+element using `JAXBIntrospector.getElementName` method. One can an xml
 element’s value using getValue method. The getValue method normalizes
 access of JAXB element, hiding whether the JAXB element is an instance
 of jakarta.xml.bind.JAXBElement or if it is an JAXB element via an
diff --git a/spec/src/main/asciidoc/ch05-java_representation.adoc b/spec/src/main/asciidoc/ch05-java_representation.adoc
index 5b6c6ad..76d08ee 100644
--- a/spec/src/main/asciidoc/ch05-java_representation.adoc
+++ b/spec/src/main/asciidoc/ch05-java_representation.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Java Representation of XML Content
@@ -9,10 +9,9 @@
 enum type within the Java programming language. Each section briefly
 states the XML Schema components that could be bound to the Java
 representation. A more rigorous and thorough description of possible
-bindings and default bindings occurs in link:jaxb.html#a694[See
-Binding XML Schema to Java Representations]” and in
-link:jaxb.html#a1498[See Customizing XML Schema to Java
-Representation Binding].”
+bindings and default bindings occurs in
+<<Binding XML Schema to Java Representations>> and in
+<<Customizing XML Schema to Java Representation Binding>>.
 
 === Mapping between XML Names and Java Identifiers
 
@@ -20,8 +19,8 @@
 strings that match the Name production defined in XML 1.0 (Second
 Edition) to label schema components. This set of strings is much larger
 than the set of valid Java class, method, and constant identifiers.
-link:jaxb.html#a4649[See Appendix], “Binding XML Names to Java
-Identifiers,” specifies an algorithm for mapping XML names to Java
+<<Binding XML Names to Java Identifiers>>,
+specifies an algorithm for mapping XML names to Java
 identifiers in a way that adheres to standard Java API design
 guidelines, generates identifiers that retain obvious connections to the
 corresponding schema, and results in as few collisions as possible. It
@@ -43,14 +42,14 @@
 
 * A _name_ , which is either derived directly
 from the XML namespace URI as specified in
-link:jaxb.html#a4788[See Generating a Java package name]” or
+<<Generating a Java package name>> or
 specified by a binding customization of the XML namespace URI as
-described in link:jaxb.html#a1674[See package].”
+described in <<Package>>.
 * A set of Java value classes representing the
 content models declared within the schema.
 * A set of Java element classes representing
 element declarations occurring within the schema.
-link:jaxb.html#a642[See Java Element Representation]” describes
+<<Java Element Representation>> describes
 this binding in more detail.
 * A public class `ObjectFactory` contains:
 ** An instance factory method signature for
@@ -143,7 +142,7 @@
 Note: Outer Class Name is null if class is a top-level class. +
  +
 The schema customization <jaxb:globalBindings localScoping=”toplevel”/>,
-specified in Section link:jaxb.html#a1582[See Usage], disables
+specified in Section <<Usage>>, disables
 the generation of schema-derived nested classes and can be used to
 override the default binding of a nested schema component binding to
 nested Java class.
@@ -169,11 +168,11 @@
 A complex type definition is bound to either
 a Java value class or a content interface, depending on the value of the
 global binding customization *[jaxb:globalBinding]*
-`@generateValueClass`, specified in link:jaxb.html#a1582[See
-Usage]”. Value classes are generated by default. The attributes and
+`@generateValueClass`, specified in <<Usage>>.
+Value classes are generated by default. The attributes and
 children element content of a complex type definition are represented as
 properties of the Java content representation. Property representations
-are introduced in link:jaxb.html#a541[See Properties].
+are introduced in <<Properties>>.
 
 ==== Value Class
 
@@ -193,7 +192,7 @@
 type as opposed to globally, the complex class should occur as a nested
 class within the Java value class representing the complex type scope.
 The schema customization <jaxb:globalBindings localScoping=”toplevel”/>,
-specified in Section link:jaxb.html#a1582[See Usage], disables
+specified in Section <<Usage>>, disables
 the generation of schema-derived nested classes and all classes are
 generated as toplevel classes. +
  +
@@ -201,7 +200,7 @@
 Note: The OuterClassNames is null if the class is a top-level class.
 
 * A base class that this class extends. See
-link:jaxb.html#a917[See Complex Type Definition] for further
+<<Complex Type Definition>> for further
 details.
 * A set of Java properties providing access
 and modification to the complex type definition’s attributes and content
@@ -214,8 +213,8 @@
 public constructor, either an explicit one or the default no-arg
 constructor.
   ** A factory method in the package’s
-`ObjectFactory` class (introduced in link:jaxb.html#a482[See
-Java Package]”). The factory method returns the type of the Java value
+`ObjectFactory` class (introduced in <<Java Package>>).
+The factory method returns the type of the Java value
 class. The name of the factory method is generated by concatenating the
 following components:
 +
@@ -302,7 +301,7 @@
 classfootnote:[Namely, a `boolean` field type defaults to `false`,
 `integer` field type defaults to `0`, object reference field type
 defaults to `null`, floating point field
-type defaults to `+0.0f`.]. link:jaxb.html#50536473_21325[Figure 5.1]
+type defaults to `+0.0f`.]. <<a623>>
 illustrates the states of a JAXB property and the invocations that
 result in state changes.
 
@@ -319,8 +318,8 @@
 
 where _Id_ is a metavariable that represents
 the Java method identifier computed by applying the name mapping
-algorithm described in link:jaxb.html#a4656[See The Name to
-Identifier Mapping Algorithm]” to prop. There is one exception to this
+algorithm described in <<The Name to Identifier Mapping Algorithm>>
+to prop. There is one exception to this
 general rule in order to support the boolean property described in
 [BEANS]. When _Type_ is boolean, the `get__Id__` method specified above is
 replaced by the method signature, _boolean_ `is__Id__()`.
@@ -344,11 +343,10 @@
 primitive non-reference type and the property’s value is optional, the
 corresponding Java wrapper class can be used as the base type to enable
 discarding the property’s set value by invoking the set method with a
-null parameter. link:jaxb.html#a610[See `isSet` Property
-Modifier] describes an alternative to using a wrapper class for this
+null parameter. <<isset-property-modifier>> describes an alternative to using a wrapper class for this
 purpose. The *[jaxb:globalBinding]* customization `@optionalProperty`
 controls the binding of an optional primitive property as described in
-link:jaxb.html#a1582[See Usage].
+<<Usage>>.
 
 *_Example:_* +
 In the purchase order schema, the _partNum_
@@ -469,9 +467,8 @@
 `setter` method with an argument of `null`.
 
 See the customization attribute
-`collectionType` in link:jaxb.html#a1580[See <globalBindings>
-Declaration]” and link:jaxb.html#a1783[See <property>
-Declaration]” on how to enable the generation of indexed property
+`collectionType` in <<globalbindings-declaration>>
+and <<property-declaration>> on how to enable the generation of indexed property
 methods for a collection property.
 
 *_Example:_* +
@@ -530,7 +527,7 @@
 null specifies the meaning of inserting a null into a List.
 
 The `unset` method introduced in
-link:jaxb.html#a610[See isSet Property Modifier] enables one to
+<<isset-property-modifier>> enables one to
 discard the set value for a List property.
 
 [NOTE]
@@ -577,9 +574,8 @@
 
 The binding customization attribute
 `fixedAttributeToConstantProperty` enables this binding style.
-link:jaxb.html#a1580[See <globalBindings> Declaration]” and
-link:jaxb.html#a1783[See <property> Declaration]” describe how
-to use this attribute.
+<<globalbindings-declaration>> and <<property-declaration>>
+describe how to use this attribute.
 
 ==== `isSet` Property Modifier
 
@@ -588,8 +584,8 @@
 a _set value_ or a _defaulted value_. Since this functionality
 is above and beyond the typical JavaBean pattern for a property,
 the method(s) associated with this modifier are not generated by default.
-link:jaxb.html#a1498[See Customizing XML Schema to Java
-Representation Binding]” describes how to enable this customization
+<<Customizing XML Schema to Java Representation Binding>>
+describes how to enable this customization
 using the `generateIsSetMethod` attribute.
 
 The method signatures for the `isSet`
@@ -638,7 +634,8 @@
 states of a JAXB property
 value.
 
-.[[a623]]States of a Property Value
+.States of a Property Value
+[[a623]]
 image::images/xmlb-8.png[image]
 
 *_Example:_* +
@@ -692,7 +689,7 @@
 for `_JAXBElement<T>_` is `_jakarta.xml.bind.JAXBElement<T>_`. The generic
 types in the method signatures are expressed as a bounded wildcard to
 support element substitution group, see details in
-link:jaxb.html#a1023[See Element Declaration]”.
+<<Element Declaration>>.
 
 ==== Property Summary
 
@@ -713,7 +710,7 @@
 === Java Element Representation
 
 Based on rationale and criteria described in
-link:jaxb.html#a1023[See Element Declaration], the schema
+<<Element Declaration>>, the schema
 compiler binds an element declaration to a Java instance that implements
 `jakarta.xml.bind.JAXBElement<T>`. `JAXBElement<T>` class provides access
 to the basic properties of an XML element: its name, the value of the
@@ -724,20 +721,19 @@
 
 The enhanced, default binding for an element
 declaration only generates a element instance factory method and is
-described in link:jaxb.html#a645[See Named Java Element
-instance]”.footnote:[The exception case is
+described in <<Named Java Element instance>>.footnote:[The exception case is
 that an element declaration with an anonymous type definition is bound
 to a schema-derived value class by default as described in
-link:jaxb.html#a1084[See Binding of an anonymous complex type
-definition]”.] The customized binding that generates
+<<Binding of an anonymous complex type definition>>.]
+The customized binding that generates
 a schema-dervied Element class for an element declaration is described
-in link:jaxb.html#a657[See Java Element Class]”.
+in <<Java Element Class>>.
 
 ==== Named Java Element instance
 
 Based on the normative binding details
-described in link:jaxb.html#a1040[See Bind to JAXBElement<T>
-Instance], the schema compiler binds an element declaration to an
+described in <<bind-to-jaxbelementt-instance>>,
+the schema compiler binds an element declaration to an
 element instance factory method.
 
 The following is a generic element factory signature.
@@ -773,35 +769,32 @@
 ==== Java Element Class
 
 Based on criteria to be identified in
-link:jaxb.html#a1068[See Bind to Element Class], the schema
+<<Bind to Element Class>>, the schema
 compiler binds an element declaration to a Java element class. An
 element class is defined in terms of the properties of the
-link:jaxb.html#a4937[See Element Declaration Schema Component]
+<<Element Declaration Schema Component>>
 as follows:
 
 * An element class name is generated from the
 element declaration’s name using the XML Name to Java identifier name
-mapping algorithm specified in link:jaxb.html#a4656[See The Name
-to Identifier Mapping Algorithm].
+mapping algorithm specified in <<The Name to Identifier Mapping Algorithm>>.
 * Scope of element class
 ** Global element declarations are declared in
 package scope.
 ** By default, local element declarations
 occur in the scope of the first ancestor complex type definition that
 contains the declaration. The schema customization <jaxb:globalBindings
-localScoping=”toplevel”/>, specified in Section
-link:jaxb.html#a1582[See Usage], disables the generation of
+localScoping=”toplevel”/>, specified in <<Usage>>, disables the generation of
 schema-derived nested classes and all classes are generated as toplevel
 classes.
 * Each generated Element class must extend
 the Java class `jakarta.xml.bind.JAXBElement<T>`. The type T of the
 `JAXBElement<T>` is derived from the element declaration’s type.
 Anonymous type definition binding is a special case that is specified in
-link:jaxb.html#a1084[See Binding of an anonymous complex type
-definition]
+<<Binding of an anonymous complex type definition>>.
 * A factory method is generated in the
 package’s `ObjectFactory` class introduced in
-link:jaxb.html#a482[See Java Package].” The factory method
+<<Java Package>>. The factory method
 returns `JAXBElement<T>`. The factory method has one parameter that is
 of type `T`. The name of the factory method is generated by
 concatenating the following components:
@@ -882,10 +875,10 @@
 .JAXB 1.0: isA Relationship between generated element interface and its type
 image::images/xmlb-9.png[image]
 
-.Jakarta XML Binding: hasA Relationship between element instance and its type as described in link:jaxb.html#a645[See Named Java Element instance]”
+.Jakarta XML Binding: hasA Relationship between element instance and its type as described in <<Named Java Element instance>>
 image::images/xmlb-10.png[image]
 
-.Jakarta XML Binding: hasA Relationship between generated element class and its type as described in link:jaxb.html#a657[See Java Element Class]”
+.Jakarta XML Binding: hasA Relationship between generated element class and its type as described in <<Java Element Class>>
 image::images/xmlb-11.png[image]
 
 While a JAXB 1.0 Element interface implemented its type’s interface,
@@ -914,7 +907,6 @@
 .UML diagram when xs:element is bound to schema-derived Element class
 image::images/xmlb-13.png[image]
 
-See also link:jaxb.html#UNKNOWN[See
-Summarize default XSD to Java binding for Figure 5.1 and Figure 5.2].
+See also <<table614>>.
 
 
diff --git a/spec/src/main/asciidoc/ch06-binding_xml_schema.adoc b/spec/src/main/asciidoc/ch06-binding_xml_schema.adoc
index bbd106a..756ebb1 100644
--- a/spec/src/main/asciidoc/ch06-binding_xml_schema.adoc
+++ b/spec/src/main/asciidoc/ch06-binding_xml_schema.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Binding XML Schema to Java Representations
@@ -27,8 +27,8 @@
 
 For each binding of a schema component to its
 Java representation, there is a description of Java mapping
-annotation(s), described in link:jaxb.html#a2236[See Java Types
-To XML]“, to be generated with the Java representation. The
+annotation(s), described in <<Java Types To XML>>,
+to be generated with the Java representation. The
 standardization of these mapping annotations assist in specifying the
 portability of a schema-derived JAXB-annotated classes. All JAXB
 implementations are required to be able to unmarshal/marshal another
@@ -74,7 +74,7 @@
 this section illustrates how a simple type definition is bound to a JAXB
 mapped class. This binding is necessary to preserve a simple type
 definition referred to by `xsi:type` attribute in an Xml instance
-document. See link:jaxb.html#a1582[See Usage]“for the
+document. See <<Usage>> for the
 customization that enables this binding.
 
 ==== Type Categorization
@@ -100,7 +100,7 @@
 
 If an atomic datatype has been derived by
 restriction using an “enumeration” facet, the Java property attributes
-are defined by link:jaxb.html#a829[See Enum Type].” Otherwise
+are defined by <<Enum Type>>. Otherwise
 they are defined as described here.
 
 The base type is derived upon the XML
@@ -115,14 +115,14 @@
 
 * Only schema built-in atomic datatypes derived by restriction have been shown.
 * The schema built-in atomic datatypes have been annotated with Java data types
-from the “Java Mapping for XML Schema Built-in Types” table below.
+from the <<a725>> table below.
 
 [NOTE]
 .Design Note
 ====
 xs:anyURI is not bound to java.net.URI by default since not all
 possible values of xs:anyURI can be passed to the java.net.URI constructor.
-Using a global JAXB customization described in Section 7.9, “<javaType> Declaration“,
+Using a global JAXB customization described in <<javatype-declaration>>,
 a JAXB user can override the default mapping to map xs:anyURI to java.net.URI.
 
 ====
@@ -132,7 +132,8 @@
 XML schema built-in data types to Java data types. This table is used to
 specify the base type later.
 
-.[[a725]]Java Mapping for XML Schema Built-in Types
+.Java Mapping for XML Schema Built-in Types
+[[a725]]
 [cols="2*",options="header"]
 |===
 |XML Schema Datatype |Java Datatype
@@ -282,23 +283,23 @@
 By default, a named simple type definition is
 not bound to a Java class. This binding is only necessary to enable the
 precise type of an `xsi:type` substitution to be preserved as described
-in link:jaxb.html#a1158[See Type Substitution of a Simple Type
-Definition]“. This binding is enabled via the global binding
+in <<Type Substitution of a Simple Type Definition>>.
+This binding is enabled via the global binding
 customization attribute _@mapSimpleTypeDef_ specified in
-link:jaxb.html#a1582[See Usage]“.
+<<Usage>>.
 
 The binding of a named simple type definition
 to a Java value class is based on the abstract model properties in
-link:jaxb.html#a4867[See Simple Type Definition Schema
-Component]. The Java value class must be defined as specified here,
+<<Simple Type Definition Schema Component>>.
+The Java value class must be defined as specified here,
 unless the ref attribute is specified on the `<jaxb:class>` declaration,
 in which case the schema compiler will simply assume that the nominated
 class is already bound to this simple type.
 
 * *name*: name is the Java identifier
 obtained by mapping the XML name _{name}_ using the name mapping
-algorithm, specified in link:jaxb.html#a4656[See The Name to
-Identifier Mapping Algorithm]. Note that anonymous simple type
+algorithm, specified in <<The Name to Identifier Mapping Algorithm>>.
+Note that anonymous simple type
 definition’s are never bound to a Java value class.
 * *package*: The schema-derived Java value class is generated
 into the Java package that represents the binding of _{target namespace}_
@@ -309,7 +310,7 @@
 by restriction hierarchy for simple type definitions can not be captured
 in the schema-derived Java value class.
 * *value property*: Same as the binding of simple content in
-link:jaxb.html#a973[See Simple Content Binding] to an @XmlValue
+<<Simple Content Binding>> to an @XmlValue
 annotated JAXB property.
 
 The next two examples illustrate the binding
@@ -363,15 +364,13 @@
 `xs:String` footnote:[Exception cases that
 do not bind to enum type: when the base type is or derives from `xs:ID`
 and `xs:IDREF`. Rationale for not binding these type definitions to an
-enum type is in link:jaxb.html#a2126[See Customizable Schema
-Elements]“.] or derived from it is mapped to an
+enum type is in <<Customizable Schema Elements>>.] or derived from it is mapped to an
 enum type. The *[typesafeEnumBase]* attribute customization described in
-link:jaxb.html#a1580[See <globalBindings> Declaration]," enables
+<<globalbindings-declaration>>, enables
 global configuration to alter what Xml built-in datatypes are bound by
 default to an enum type. An anonymous simple type definition is never
 bound to an enum class by default, but it can be customized as described
-in link:jaxb.html#a2090[See <typesafeEnum> Declaration]” to bind
-to an enum type.
+in <<typesafeenum-declaration>> to bind to an enum type.
 
 ===== Example binding
 
@@ -405,8 +404,7 @@
 
 The characteristics of an _enum type_ are
 derived in terms of the properties of the
-link:jaxb.html#a4867[See Simple Type Definition Schema
-Component] as follows:
+<<Simple Type Definition Schema Component>> as follows:
 
 The enum type binding is defined as follows:
 
@@ -423,7 +421,7 @@
 simple type definition.
 ** There is no *outer class name* when schema
 customization, *[jaxb:globalBindings]* _@localScoping_ , specified in
-Section link:jaxb.html#a1582[See Usage], has a value of
+Section <<Usage>>, has a value of
 _toplevel_.
 ** The *outer class name* for an anonymous
 simple type definition is computed by traversing up the anonymous simple
@@ -445,8 +443,8 @@
 explicitly or by default mapping annotations, with the mapping
 annotation @XmlEnum, specified in Section 8. The @XmlEnum annotation
 elements are derived in terms of the abstract model properties for a
-simple type definition summarized in link:jaxb.html#a4867[See
-Simple Type Definition Schema Component] as follows:
+simple type definition summarized in
+<<Simple Type Definition Schema Component>> as follows:
 
 .Annotate enum type with @XmlEnum element-value pairs
 [cols="2*",options="header"]
@@ -462,14 +460,12 @@
 An enum constant is derived for each
 enumeration facet of the atomic type definition. The characteristics of
 an _enum constant_ of the enum type are derived in terms of the properties
-of the link:jaxb.html#a4899[See Enumeration Facet Schema
-Component] as follows:
+of the <<Enumeration Facet Schema Component>> as follows:
 
 * *name*: The name is either specified via
 customization, `jaxb:typesafeEnumMember` described in
-link:jaxb.html#a2092[See Usage]“, or the name is computed as
-specified in link:jaxb.html#a863[See XML Enumvalue-to-Java
-Identifier Mapping]“.
+<<usage-7>>, or the name is computed as
+specified in <<xml-enumvalue-to-java-identifier-mapping>>.
 * *type*: The Java type binding of the simple
 type definition’s _{base_type_definition}_.
 * *value* : The conversion of string
@@ -494,12 +490,11 @@
 
 The XML enumeration value _{value}_ is
 mapped to a Java Identifier using the algorithm specified in
-link:jaxb.html#a4773[See Deriving a legal Java identifier from
-an enum facet value]“. If there is a collision among the generated
+<<Deriving a legal Java identifier from an enum facet value>>.
+If there is a collision among the generated
 constant fields *name* or if it is not possible to generate a legal Java
 identifier for one or more of the generated constant field names, see
-link:jaxb.html#a1633[See @typesafeEnumMemberName]“for
-customization options to resolve this error case.
+<<typesafeenummembername>> for customization options to resolve this error case.
 
 ===== Enum Constant Name differs from its Value
 
@@ -542,7 +537,7 @@
 mapping annotation specified in Section 8. The `@XmlEnumValue`
 annotation elements are derived in terms of the abstract model
 properties for a enumerated facet summarized in
-link:jaxb.html#a4899[See Enumeration Facet Schema Component] as
+<<Enumeration Facet Schema Component>> as
 follows:
 
 .Annotate enum constant with @XmlEnumValue element-value pairs
@@ -604,8 +599,7 @@
 then the base type is the wrapper
 class for the Java primitive type. Otherwise, the Java datatype is
 derived from the XML datatype as specified in
-link:jaxb.html#a715[See Atomic Datatype]” and
-link:jaxb.html#a829[See Enum Type].”
+<<Atomic Datatype>> and <<Enum Type>>.
 * The _collection type_ defaults to an
 implementation of `java.util.List`. Note that this specification does
 not specify the default implementation for the interface
@@ -628,15 +622,13 @@
 
 * The _base type_ is derived from _{item type definition}_
 which is XML datatype, `_"xs:string"_` , thus the Java
-datatype is `java.util.String` as specified in
-link:jaxb.html#a725[See Java Mapping for XML Schema Built-in
-Types].
+datatype is `java.util.String` as specified in <<a725>>.
 * The _collection type_ defaults to an implementation of `java.util.List`.
 * The _predicate_ only allows instances of
 _base type_ to be inserted into the list. When failfast check is being
-performedfootnote:[link:jaxb.html#a1582[See Usage]
+performedfootnote:[<<Usage>>
 describes the `enableFailFastCheck` customization and
-link:jaxb.html#a256[See Validation]” defines fail-fast
+<<Validation>> defines fail-fast
 checking.], the list’s mutation methods apply the
 property’s predicate to any non-`null` value before adding that value
 to the list or replacing an existing element’s value with that value;
@@ -661,14 +653,13 @@
 
 where `_Id_` is a metavariable that represents
 the Java method identifier computed by applying the name mapping
-algorithm described in link:jaxb.html#a4656[See The Name to
-Identifier Mapping Algorithm] to _prop_ .
+algorithm described in <<The Name to Identifier Mapping Algorithm>> to _prop_ .
 
 The _base type_ is String. If one of the
 member types is derived by list, then the Union property is represented
 as the appropriate collection property as specified by the customization
 `<jaxb:globalBindings>` *@collectionType* value, specified in
-link:jaxb.html#a1582[See Usage].”
+<<Usage>>.
 
 * The `getId` method returns the set value.
 If the property has no set value then the value `null` is returned. The
@@ -709,7 +700,7 @@
 attributes:
 
 * the _base type_ as specified in
-link:jaxb.html#a899[See Union Property].”
+<<Union Property>>.
 * if one of the member types is derived by `<xs:list>`,
 then the union is bound as a Collection property.
 * The _predicate_ is the schema constraints
@@ -769,35 +760,31 @@
 
 The binding of a complex type
 definition to a Java value class is based on the abstract model
-properties in link:jaxb.html#a4907[See Complex Type Definition
-Schema Component]. The Java value class must be defined as specified
+properties in <<Complex Type Definition Schema Component>>. The Java value class must be defined as specified
 here, unless the ref attribute is specified on the _<jaxb:class>_
 customization, in which case the schema compiler will simply assume that
 the nominated class is already bound to this complex
 type.footnote:[Note that
-link:jaxb.html#a1084[See Binding of an anonymous complex type
-definition] defines the name and package property for anonymous type
+<<Binding of an anonymous complex type definition>> defines the name and package property for anonymous type
 definitions occurring within an element declaration.]
 
 * *name*: name is the Java identifier
 obtained by mapping the XML name _{name}_ using the name mapping
-algorithm, specified in link:jaxb.html#a4656[See The Name to
-Identifier Mapping Algorithm]. For the handling of an anonymous complex
-type definition, see link:jaxb.html#a1084[See Binding of an
-anonymous complex type definition]” for how a *name* value is derived
+algorithm, specified in <<The Name to Identifier Mapping Algorithm>>.
+For the handling of an anonymous complex
+type definition, see <<Binding of an anonymous complex type definition>>
+for how a *name* value is derived
 from its parent element declaration.
 * *package*:
 ** For a global complex type definition, the
 derived Java value class is generated into the Java package that
 represents the binding of _{target namespace}_
 ** For the value of *package* for an anonymous
-complex type definition, see link:jaxb.html#a1084[See Binding of
-an anonymous complex type definition]".
+complex type definition, see <<Binding of an anonymous complex type definition>>.
 * *outer class name*:
 ** There is no outer class name for a global
 complex type definition.
-** link:jaxb.html#a1084[See Binding of
-an anonymous complex type definition]" defines how to derive this
+** <<Binding of an anonymous complex type definition>> defines how to derive this
 property from the element declaration that contains the anonymous
 complex type definition.
 * *base class*: A complex type definition
@@ -824,27 +811,25 @@
 `true`.
 * *property set*: The Java representation of
 each of the following must be aggregated into Java value class’s
-property set (link:jaxb.html#a918[See Aggregation of Java
-Representation]).
+property set (<<Aggregation of Java Representation>>).
 ** A subset of _{attribute uses}_ is
 constructed. The subset must include the schema attributes corresponding
 to the `<xs:attribute>` children and the _{attribute uses}_ of the
 schema attribute groups resolved by the <ref> attribute. Every
-attribute’s Java representation (link:jaxb.html#a1252[See Attribute use])
+attribute’s Java representation (<<Attribute use>>)
 in the set of attributes computed above must be aggregated.
 ** If the optional _{attribute wildcard}_ is
 present, either directly or indirectly, a property defined by
-link:jaxb.html#a1306[See Attribute Wildcard]“is generated.
+<<Attribute Wildcard>> is generated.
 ** The Java representation for _{content type}_ must be aggregated.
 +
 For a “Complex Type Definition with complex
 content,” the Java representation for _{content type}_ is specified in
-link:jaxb.html#a1332[See Content Model - Particle, Model Group,
-Wildcard].”
+<<content-model-particle-model-group-wildcard>>.
 +
 For a complex type definition which is a “Simple Type Definition with
 simple content,” the Java representation for _{content type}_ is
-specified in link:jaxb.html#a973[See Simple Content Binding].”
+specified in <<Simple Content Binding>>.
 ** If a complex type derives by restriction,
 there is no requirement that Java properties representing the attributes
 or elements removed by the restriction to be disabled. This is because
@@ -853,7 +838,7 @@
 * When the complex type definition’s
 _{abstract}_ property is `false`, a factory method is generated in the
 package’s `ObjectFactory` class introduced in
-link:jaxb.html#a482[See Java Package]. The factory method
+<<Java Package>>. The factory method
 returns the type of the Java value class. The name of the factory method
 is generated by concatenating the following components:
 ** The string constant `create`.
@@ -861,13 +846,13 @@
 
 The schema-derived Java value class is
 annotated, either explicitly or by default mapping annotations, with the
-mapping annotation @XmlType, specified in Section
-link:jaxb.html#a2578[See @XmlType]. The @XmlType annotation
+mapping annotation @XmlType, specified in <<xmltype-3>>. The @XmlType annotation
 elements are derived in terms of the abstract model properties for a
-complex type definition summarized in link:jaxb.html#a4907[See
-Complex Type Definition Schema Component] as follows:
+complex type definition summarized in
+<<Complex Type Definition Schema Component>> as follows:
 
-.[[a956]]Annotate Java value class with @XmlType element-value pairs
+.Annotate Java value class with @XmlType element-value pairs
+[[a956]]
 [width="100%",cols="50%,50%",options="header",]
 |===
 | @XmlType element | @XmlType value
@@ -948,7 +933,7 @@
 As specified in [XSD Part 1], when a complex type has simple content,
 the content type (_{content type}_) is always a simple type schema
 component. And a simple type component always maps to a Java datatype
-(link:jaxb.html#a702[See Simple Type Definition]”). Values of
+(<<Simple Type Definition>>). Values of
 the following three properties are copied from that Java type:
 ** base type
 ** predicate
@@ -956,8 +941,7 @@
 
 The schema-derived JAXB property representing
 simple content is annotated, either explicitly or by default mapping
-annotations, with the mapping annotation @XmlValue, specified in Section
-link:jaxb.html#a3331[See @XmlValue].
+annotations, with the mapping annotation @XmlValue, specified in <<xmlvalue>>.
 
 *_Example:_* Simple Content: Binding To Property
 
@@ -1033,11 +1017,10 @@
 element node instance of a supported DOM API.
 
 Type substitution is covered in more detail
-in Section link:jaxb.html#a1148[See Type Substitution of a
-Complex Type Definition] and link:jaxb.html#a1158[See Type
-Substitution of a Simple Type Definition]. Element substitution is
-covered in more detail in Section link:jaxb.html#a1223[See Bind
-to a Simple Element property].
+in <<Type Substitution of a Complex Type Definition>>
+and <<Type Substitution of a Simple Type Definition>>.
+Element substitution is covered in more detail in
+<<Bind to a Simple Element property>>.
 
 === Attribute Group Definition
 
@@ -1046,11 +1029,11 @@
 in the attribute group definition becomes a part of the _[attribute uses]_
 property of the referencing complex type definition. Each attribute is
 mapped to a Java property as described in
-link:jaxb.html#a1252[See Attribute use]“. If the attribute group
+<<Attribute use>>. If the attribute group
 definition contains an attribute wildcard, denoted by the
 `xs:anyAttribute` element, then the referencing complex type definition
 will contain a property providing access to wildcard attributes as
-described in link:jaxb.html#a1306[See Attribute Wildcard]“.
+described in <<Attribute Wildcard>>.
 
 === Model Group Definition
 
@@ -1058,10 +1041,10 @@
 referenced, the JAXB property set representing its content model is
 aggregated into the Java value class representing the complex type
 definition that referenced the named model group definition as
-illustrated in link:jaxb.html#a999[See Binding for a reference
-to a model group definition.]”
+illustrated in <<a999>>.
 
-.[[a999]]Binding for a reference to a model group definition.
+.Binding for a reference to a model group definition.
+[[a999]]
 image::images/xmlb-16.png[image]
 
 This binding style results in the same
@@ -1074,30 +1057,27 @@
 single Java representation, not one for each complex content that
 references the named model group definition. This default binding from a
 model group definition’s content model is defined in
-link:jaxb.html#a1012[See Deriving Class Names for Named Model
-Group Descendants]."
+<<Deriving Class Names for Named Model Group Descendants>>.
 
 To meet the Jakarta XML Binding goal of predictable
 unmarshalling of invalid XML content, the JAXB 1.0 customization for
 binding a model group to a JAXB mapped class is no longer supported.
-link:jaxb.html#a386[See Flexible Unmarshalling] details the
-rationale behind this change.
+<<Flexible Unmarshalling>> details the rationale behind this change.
 
 ==== Bind to a set of properties
 
 A non-repeating reference to a model group
 definition, when the particle referencing the group has _{max occurs}_
 equal to one, results in a set of content properties being generated to
-represent the content model. link:jaxb.html#a1332[See Content
-Model - Particle, Model Group, Wildcard]” describes how a content model
+represent the content model. <<content-model-particle-model-group-wildcard>>
+describes how a content model
 is bound to a set of properties and has examples of the binding.
 
 ==== Bind to a list property
 
 A reference to a model group definition from
 a particle with a repeating occurrence is bound by default as specified
-in link:jaxb.html#a1402[See Bind a repeating occurrence model
-group]“.
+in <<Bind a repeating occurrence model group>>.
 
 *_Example:_* +
 Schema fragment contains a particle that
@@ -1189,8 +1169,7 @@
 
 An attribute declaration is bound to a Java
 property when it is referenced or declared, as described in
-link:jaxb.html#a1252[See Attribute use],” from a complex type
-definition.
+<<Attribute use>>, from a complex type definition.
 
 ==== Bind global attribute to a QName Constant
 
@@ -1235,7 +1214,7 @@
 This section describes the binding of an XML
 element declaration to a Java representation. For a description of how
 this binding has changed since the previous version, see
-link:jaxb.html#a680[See Java Element Representation Summary]“.
+<<Java Element Representation Summary>>.
 This section introduces why a JAXB technology user has to use instances
 of JAXB element as opposed to instances of Java datatypes or Java value
 class when manipulating XML content.
@@ -1292,8 +1271,7 @@
 The next schema/derived Java code example
 illustrates when XML element information can not be inferred by the
 derived Java representation of the XML content. Note that this example
-relies on binding described in link:jaxb.html#a1384[See Bind
-wildcard schema component].”
+relies on binding described in <<Bind wildcard schema component>>.
 
 *_Example:_*
 
@@ -1321,17 +1299,15 @@
 name could not be statically associated with the content-property `any`
 when the Java representation was derived from its XML Schema
 representation. The XML element information is dynamically provided by
-the application for this case. link:jaxb.html#a1332[See Content
-Model - Particle, Model Group, Wildcard] cover additional circumstances
-when one can use JAXB elements.
+the application for this case. <<content-model-particle-model-group-wildcard>>
+cover additional circumstances when one can use JAXB elements.
 
 ==== Bind to _JAXBElement<T>_ Instance
 
 The characteristics of the generated
 ObjectFactory element factory method that returns an `JAXBElement<T>`
 instance are derived in terms of the properties of the
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 * The element factory method is generated
 into the `ObjectFactory` class in the Java package that represents the
@@ -1354,8 +1330,7 @@
 value of toplevel, skip this step.
 ** A name that is generated from the element
 declaration's _{name}_ using the XML Name to Java identifier name
-mapping algorithm specified in link:jaxb.html#a4656[See The Name
-to Identifier Mapping Algorithm].
+mapping algorithm specified in <<The Name to Identifier Mapping Algorithm>>.
 * The `JAXBElement<T>` property for nil
 test whether an element’s content model is `xsi:nil="true"`.
 
@@ -1383,18 +1358,17 @@
 _{scope}_ of a complex type definition, occurring within content that is
 mapped to a general content property of JAXB elements must have an
 element factory method generated. General content property is specified
-in link:jaxb.html#a1344[See General content property]” An
+in <<General content property>>. An
 example of when a content model is mapped to a general content property,
 forcing the generation of element declarations is at
-link:jaxb.html#a1359[See Examples].”
+<<Examples>>.
 
 The schema-derived element factory method is
 annotated, either explicitly or by default mapping annotations, with the
 mapping annotation `@XmlElementDecl`, specified in Section 8. The
 `@XmlElementDecl` annotation elements are derived in terms of the
 abstract model properties for an element declaration summarized in
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 .Annotate element instance factory with @XmlElementDecl element-value pairs.
 [width="100%",cols="50%,50%",options="header",]
@@ -1412,9 +1386,9 @@
 
 The element declaration’s _{type}_ can
 result in additional JAXB annotations being generated on the element
-instance factory. For more details, see link:jaxb.html#a820[See
-Annotations for standard XML datatypes]“and @XmlList in
-link:jaxb.html#a883[See List]“.
+instance factory. For more details, see <<Annotations for standard XML datatypes>>
+and @XmlList in
+<<list>>.
 
 The schema-derived ObjectFactory class
 containing the @XmlElementDecl annotations is annotated with
@@ -1422,12 +1396,10 @@
 
 ==== Bind to Element Class
 
-link:jaxb.html#a1698[See <class>
-Declaration]“customization enables the binding of an element declaration
+<<class-declaration>> customization enables the binding of an element declaration
 with a named type definition to a schema-derived Element class. The
 characteristics of the schema-derived Element class are derived in terms
-of the properties of the link:jaxb.html#a4937[See Element
-Declaration Schema Component] as follows:
+of the properties of the <<Element Declaration Schema Component>> as follows:
 
 * The _name_ of the generated Java Element
 class is derived from the element declaration _{name}_ using the XML Name
@@ -1451,8 +1423,8 @@
 instance of _name_ has a single parameter that is an instance of type `T`.
 By default, the name of the ObjectFactory method is derived by
 concatenating _outerClassNames_ and _name_. When schema customization,
-*[jaxb:globalBindings]* _@localScoping,_ specified in Section
-_link:jaxb.html#a1582[See Usage],_ has a value of _toplevel_,
+*[jaxb:globalBindings]* _@localScoping,_ specified in <<Usage>>,
+has a value of _toplevel_,
 then the outer Classnames are ommitted from the factory method name.
 * If _{scope}_ is
 ** *Global*: The derived Element class is
@@ -1471,8 +1443,8 @@
 declaration occurs in the XML content.
 
 A global binding customization,
-*@generateElementClass*, specified in link:jaxb.html#a1580[See
-<globalBindings> Declaration]“enables this binding over the default
+*@generateElementClass*, specified in <<globalbindings-declaration>>
+enables this binding over the default
 binding specified in the previous subsection.
 
 ==== Binding of an anonymous complex type definition
@@ -1482,8 +1454,7 @@
 
 The naming characteristics of the generated
 Java value class is derived in terms of the properties of the
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 * The _name_ of the generated Java value class
 is derived from the element declaration _{name}_ using the XML Name to
@@ -1503,12 +1474,12 @@
 customization *[globalBindings]* has attribute _@localScoping_ with a
 value of _toplevel_.
 * _base class_: Same as defined in
-link:jaxb.html#a933[See Java value class]“.
+<<Java value class>>.
 *  _property set_: As defined in
-link:jaxb.html#a933[See Java value class]“.
+<<Java value class>>.
 * A type factory method is generated in the
 package’s `ObjectFactory` class introduced in
-link:jaxb.html#a482[See Java Package].” The factory method
+<<Java Package>>. The factory method
 returns the type of the Java value class. The name of the factory method
 is generated by concatenating the following components:
 ** The string constant `create`.
@@ -1520,23 +1491,22 @@
 ** The _name_ of the Java value class.
 
 The schema-derived value class is annotated
-with the mapping annotation `@XmlType`, specified in Section
-link:jaxb.html#a2578[See @XmlType]. The `@XmlType` annotation
-elements are set as described in link:jaxb.html#a956[See
-Annotate Java value class with @XmlType element-value pairs] with one
+with the mapping annotation `@XmlType`, specified in
+<<xmltype-2>>. The `@XmlType` annotation
+elements are set as described in <<a956>> with one
 exception: `@XmlType.name()` is set to the empty string.
 
 As long as the element declaration is not one
-of the exception cases specified in link:jaxb.html#a1113[See
-Bind Element Declaration to JAXBElement]", the schema-derived value
+of the exception cases specified in
+<<Bind Element Declaration to JAXBElement>>, the schema-derived value
 class is annotated with the mapping annotation `@XmlRootElement`
 specified in Section 8. The `@XmlRootElement` annotation elements are
 derived in terms of the abstract model properties for the referenced
 global element declaration summarized in
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 .Annotate JAXB Mapped Class with @XmlRootElement element-value pairs
+
 [width="100%",cols="50%,50%",options="header",]
 |===
 | @XmlRootElement element | @XmlRootElement value
@@ -1603,8 +1573,7 @@
 met, the schema-derived class representing the anonymous complex type
 definition must not be annotated with `@XmlRootElement`. Instead, an
 element factory that returns `JAXBElement<__anonymousTypeValueClass__>`
-may be generated as specified in link:jaxb.html#a1040[See
-Bind to JAXBElement<T> Instance]“.
+may be generated as specified in <<bind-to-jaxbelementt-instance>>.
 
 *_Example:_*
 
@@ -1643,26 +1612,24 @@
 
 A local element declaration is bound by
 default to a Java property as described in
-link:jaxb.html#a541[See Properties]. The characteristics of the
+<<Properties>>. The characteristics of the
 Java property are derived in terms of the properties of the
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-and link:jaxb.html#a5022[See Particle Schema Component] as
-follows:
+<<Element Declaration Schema Component>>
+and <<Particle Schema Component>> as follows:
 
 * The _name_ of the Java property is derived
 from the _{element declaration}_ property’s _{name}_ property using the
 XML Name to Java Identifier mapping algorithm described in
-link:jaxb.html#a4656[See The Name to Identifier Mapping
-Algorithm].
+<<The Name to Identifier Mapping Algorithm>>.
 * A _base type_ for the Java property is
 derived from the `{element declaration}` property’s `{type
 definition}` property as described in binding of Simple Type Definition
-in _link:jaxb.html#a702[See Simple Type Definition]_ .” or
-link:jaxb.html#a917[See Complex Type Definition]". If the base
+in <<Simple Type Definition>>. or
+<<Complex Type Definition>>. If the base
 type is initially a primitive type and this JAXB property is _optional_,
 the *[jaxb:globalBinding]* customization `@optionalProperty` controls
 the binding of an optional primitive property as described in
-link:jaxb.html#a1582[See Usage]“.
+<<Usage>>.
 * An optional _predicate_ for the Java
 property is constructed from the `{element declaration}` property’s
 `{type definition}` property as described in the binding of simple type
@@ -1692,7 +1659,7 @@
 and set the absence of an optional property using null. The
 *[jaxb:globalBinding]* customization `@optionalProperty` controls
 alternative bindings of an optional primitive property as described in
-link:jaxb.html#a1582[See Usage]“.
+<<Usage>>.
 * If the element declaration’s _{nillable}_
 property is `"true"` , the base type for the Java property is mapped to
 the corresponding Java wrapper class for the Java primitive type.
@@ -1706,11 +1673,10 @@
 The schema-derived JAXB property getter
 method is annotated, either explicitly or by default mapping
 annotations, with the mapping annotation `@XmlElement`, specified in
-Section 8, “@XmlElement”. The `@XmlElement` annotation elements are
+<<xmlelement>>. The `@XmlElement` annotation elements are
 derived in terms of the abstract model properties for the referenced
 global element declaration summarized in
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 .Annotate JAXB Property with @XmlElement element-value pairs
 [width="100%",cols="50%,50%",options="header",]
@@ -1733,22 +1699,17 @@
 set defaultValue() to _{value constraint}_ ’s value.
 |===
 
-link:jaxb.html#a1240[See Xml Schema
-example containing an element substitution group]illustrates how to
+<<a1240>> illustrates how to
 define an element substitution group and to reference the head element
 of the substitution group within an Xml Schema.
-link:jaxb.html#a1242[See avo binding of Xml Schema from CODE
-EXAMPLE 6-5] illustrates the Java bindings of the element substation
-enabled schema. link:jaxb.html#a1244[See Element substitution
-using Java bindings from CODE EXAMPLE 6-6] demonstrates element
-substitution using the JAXB API.link:jaxb.html#a1246[See Invalid
-element substitution using Java bindings from CODE EXAMPLE 6-6]
+<<a1242>> illustrates the Java bindings of the element substation
+enabled schema. <<a1244>> demonstrates element
+substitution using the JAXB API. <<a1246>>
 illustrates invalid element substitution handling.
 
 ===== Type Substitution of a Complex Type Definition
 
-link:jaxb.html#a917[See Complex Type
-Definition]“describes that when a complex type definition is mapped to
+<<Complex Type Definition>> describes that when a complex type definition is mapped to
 Java value class that the type definition derivation hierarchy is
 preserved in the Java class hierarchy. This preservation makes it quite
 natural for Java to support the Xml Schema mechanism type substitution
@@ -1764,7 +1725,8 @@
 how type substitution is supported in JAXB for a complex type
 definition hierarchy.
 
-.[[a1152]]Xml Schema example containing type derivation hierarchy
+.Xml Schema example containing type derivation hierarchy
+[[a1152]]
 [source,xml,indent=4,subs=+quotes]
 ----
 <xs:schema targetNamespace="travel:acme" xmlns:a="travel:acme">
@@ -1787,7 +1749,8 @@
 </xs:schema>
 ----
 
-.[[a1154]]Java binding of Xml Schema from link:jaxb.html#a1240[See Xml Schema example containing an element substitution group]
+.Java binding of Xml Schema from <<a1240>>
+[[a1154]]
 [source,java,indent=4,subs=+quotes]
 ----
 package travel.acme;
@@ -1813,7 +1776,7 @@
 }
 ----
 
-.Type substitution using Java bindings from link:jaxb.html#a1242[See avo binding of Xml Schema from CODE EXAMPLE 6-5]
+.Type substitution using Java bindings from <<a1242>>
 [source,java,indent=8,subs=+quotes]
 ----
 ObjectFactory of = ...;
@@ -1837,8 +1800,8 @@
 simple type definition. Unlike the JAXB binding of complex type
 definitions, the simple type derivation hierarchy is not preserved when
 binding builtin XML Schema simple type definitions to corresponding Java
-datatypes as specified in link:jaxb.html#a715[See Atomic
-Datatype]“. Since there is not a natural Java inheritance hierarchy to
+datatypes as specified in <<Atomic Datatype>>.
+Since there is not a natural Java inheritance hierarchy to
 support simple type substitution, a JAXB property customization is
 required to enable optimal support of simple type substitution.
 
@@ -1877,8 +1840,8 @@
 To enable more comprehensive support of
 simple type substituting of an XML element with a simple type
 definition, the JAXB property customization specified in
-link:jaxb.html#a1809[See Generalize/Specialize baseType with
-attribute @name] enables setting the property’s base type to the more
+<<generalizespecialize-basetype-with-attribute-name>> enables
+setting the property’s base type to the more
 general type of `java.lang.Object`. This binding allows for retention of
 the XML document `xsi:type` and attributes associated with complex type
 definition substituted for an XML element with a simple type definition.
@@ -1888,8 +1851,8 @@
 
 To preserve an application-defined simple
 type definition involved in simple type substitution, it must be mapped
-to a JAXB mapped class as described in link:jaxb.html#a803[See
-Bind to a JAXB mapped class]“. This can be achieved for all simple type
+to a JAXB mapped class as described in <<Bind to a JAXB mapped class>>.
+This can be achieved for all simple type
 definitions in a schema using the customization `<jaxb:globalBinding
 mapSimpleTypeDefs="true"/>` or it can be achieved per simple type
 definition using <jaxb:class> customization. An invalid simple type
@@ -1900,7 +1863,8 @@
 of an XML element’s simple type definition for the default and
 customized binding.
 
-.[[a1168]]Schema fragment to illustrate simple type substitution
+.Schema fragment to illustrate simple type substitution
+[[a1168]]
 [source,xml,indent=4,subs=+quotes]
 ----
 <xsd:element name="Price">
@@ -1924,7 +1888,8 @@
 </xsd:simpleType>
 ----
 
-.[[a1170]]XML documents with simple type substitution
+.XML documents with simple type substitution
+[[a1170]]
 [source,xml,indent=4,subs=+quotes]
 ----
 <product>
@@ -1950,7 +1915,8 @@
 
 ====== Default Handling of Simple Type Substitution
 
-.[[a1176]]Default JAXB binding of link:jaxb.html#a1168[See Schema fragment to illustrate simple type substitution]
+.Default JAXB binding of <<a1168>>
+[[a1176]]
 [source,java,indent=4]
 ----
 public class AmountType {
@@ -1967,17 +1933,13 @@
 ----
 
 Unmarshalling XML document fragments from
-link:jaxb.html#a1170[See XML documents with simple type
-substitution] into link:jaxb.html#a1176[See Default JAXB binding
-of CODE EXAMPLE 6-1] JAXB binding of element `product` results in the
+<<a1170>> into <<a1176>> JAXB binding of element `product` results in the
 `xsi:type` and attributes associated with JAXB mapped class `Price`
 being lost as part of the unmarshal process. This loss is illustrated by
-comparing link:jaxb.html#a1179[See Product instances from
-unmarshalling XML docs from CODE EXAMPLE 6-2] with
-link:jaxb.html#a1204[See Product instances from unmarshalling
-XML docs from CODE EXAMPLE 6-2].
+comparing <<a1179>> with <<a1204>>.
 
-.[[a1179]]Product instances from unmarshalling XML docs from link:jaxb.html#a1170[See XML documents with simple type substitution]
+.Product instances from unmarshalling XML docs from <<a1170>>
+[[a1179]]
 [width="100%",cols="20%,20%,20%,20%,20%",options="header",]
 |===
 | document xsi:type | Product.name +
@@ -2008,10 +1970,10 @@
 </jaxb:bindings>
 ----
 
-specified in link:jaxb.html#a1809[See
-Generalize/Specialize baseType with attribute @name]“.
+specified in <<generalizespecialize-basetype-with-attribute-name>>.
 
-.[[a1201]]Customized JAXB binding of link:jaxb.html#a1168[See Schema fragment to illustrate simple type substitution]
+.Customized JAXB binding of <<a1168>>
+[[a1201]]
 [source,java,indent=4]
 ----
 public class AmountType {
@@ -2034,14 +1996,14 @@
 ----
 
 Unmarshalling XML document fragments from
-link:jaxb.html#a1170[See XML documents with simple type
-substitution] into link:jaxb.html#a1201[See Customized JAXB
-binding of CODE EXAMPLE 6-1] JAXB binding of element `product` preserves
+<<a1170>>
+into <<a1201>>
+JAXB binding of element `product` preserves
 the `xsi:type` and attributes associated with JAXB mapped class
-`AmountType` is illustrated in link:jaxb.html#a1204[See Product
-instances from unmarshalling XML docs from CODE EXAMPLE 6-2].
+`AmountType` is illustrated in <<a1204>>.
 
-.[[a1204]]Product instances from unmarshalling XML docs from link:jaxb.html#a1170[See XML documents with simple type substitution]
+.Product instances from unmarshalling XML docs from <<a1170>>
+[[a1204]]
 [width="100%",cols="20%,20%,20%,20%,20%",options="header",]
 |===
 | document xsi:type | Product.name +
@@ -2082,13 +2044,12 @@
 To support element substitution, for
 each global element reference to a head element of a substitution group
 or to an abstract element, it is necessary to generate the Element
-property bindings defined in link:jaxb.html#a630[See Element
-Property].footnote:[Element substitution
+property bindings defined in <<Element Property>>.footnote:[Element substitution
 extensibility does allow element substitution(s) to be defined in a
 separate schema than a global element reference occurs. When schemas are
 not compiled at same time, the schema to java binding declaration,
 <jaxb:property generateElementProperty=”true”/> described in
-link:jaxb.html#a1786[See Usage] forces the generation of an
+<<usage-4>> forces the generation of an
 element property for a global element reference, independent of it not
 belonging to a element substitution group.] This property enables the overriding
 of the schema-specified element name bound to a JAXB property by setting
@@ -2110,7 +2071,7 @@
 the overall number of schema-derived classes generated by default
 influenced the decision to default to binding an element declaration to
 an element instance factory. A customization described in
-link:jaxb.html#a1580[See <globalBindings> Declaration] exists
+<<globalbindings-declaration>> exists
 that binds each element declaration to a Java element class so element
 substitution checking can be enforced entirely by strongly typed method
 signatures.]
@@ -2121,8 +2082,7 @@
 Section 8.10.3, “@XmlElementRef”. The `@XmlElementRef` annotation
 elements are derived in terms of the abstract model properties for the
 referenced global element declaration summarized in
-link:jaxb.html#a4937[See Element Declaration Schema Component]
-as follows:
+<<Element Declaration Schema Component>> as follows:
 
 .Annotate Element Property with @XmlElementRef element-value pairs
 [cols="1,1",options="header",]
@@ -2133,19 +2093,16 @@
 | name | referenced element declaration _{name}_
 |===
 
-link:jaxb.html#a1240[See Xml Schema
-example containing an element substitution group]illustrates how to
+<<a1240>> illustrates how to
 define an element substitution group and to reference the head element
 of the substitution group within an Xml Schema.
-link:jaxb.html#a1242[See avo binding of Xml Schema from CODE
-EXAMPLE 6-5] illustrates the Java bindings of the element substation
-enabled schema. link:jaxb.html#a1244[See Element substitution
-using Java bindings from CODE EXAMPLE 6-6] demonstrates element
-substitution using the JAXB API.link:jaxb.html#a1246[See Invalid
-element substitution using Java bindings from CODE EXAMPLE 6-6]
-illustrates invalid element substitution handling.
+<<a1242>> illustrates the Java bindings of the element substation
+enabled schema. <<a1244>>
+demonstrates element substitution using the JAXB API.
+<<a1246>> illustrates invalid element substitution handling.
 
-.[[a1240]]Xml Schema example containing an element substitution group
+.Xml Schema example containing an element substitution group
+[[a1240]]
 [source,xml,indent=4]
 ----
 <xs:schema targetNamespace="travel:acme" xmlns:a="travel:acme">
@@ -2167,7 +2124,8 @@
 </xs:schema>
 ----
 
-.[[a1242]]avoid binding of Xml Schema from link:jaxb.html#a1240[See Xml Schema example containing an element substitution group]
+.Avoid binding of Xml Schema from <<a1240>>
+[[a1242]]
 [source,java,indent=4]
 ----
 package travel.acme;
@@ -2193,7 +2151,8 @@
 }
 ----
 
-.[[a1244]]Element substitution using Java bindings from link:jaxb.html#a1242[See avo binding of Xml Schema from CODE EXAMPLE 6-5]
+.Element substitution using Java bindings from <<a1242>>
+[[a1244]]
 [source,java,indent=8,subs=+quotes]
 ----
 ObjectFactory of = ...;
@@ -2212,7 +2171,8 @@
 itinerary.setTransport(of.createAuto(of.createSUV()));
 ----
 
-.[[a1246]]Invalid element substitution using Java bindings from link:jaxb.html#a1242[See avoid binding of Xml Schema from CODE EXAMPLE 6-5]
+.Invalid element substitution using Java bindings from <<a1242>>
+[[a1246]]
 [source,xml,indent=4]
 ----
 <!-- Add elements not part of element substitution group. -->
@@ -2245,7 +2205,7 @@
 that is element substitutable binds solely to a JAXB Collection property
 of JAXBElement.
 
-.Bind repeating occurrence element substitution variant of link:jaxb.html#a1240[See Xml Schema example containing an element substitution group]
+.Bind repeating occurrence element substitution variant of <<a1240>>
 [source,xml,indent=4,subs=+quotes]
 ----
 <!--deleted schema that remains same -->
@@ -2269,25 +2229,23 @@
 
 A ‘required’ or ‘optional’ attribute use is
 bound by default to a Java property as described in
-link:jaxb.html#a541[See Properties]. The characteristics of the
+<<Properties>>. The characteristics of the
 Java property are derived in terms of the properties of the
-link:jaxb.html#a5012[See Attribute Use Schema Component] and
-link:jaxb.html#a4965[See Attribute Declaration Schema Component]
+<<Attribute Use Schema Component>> and <<Attribute Declaration Schema Component>>
 as follows:
 
 * The _name_ of the Java property is derived
 from the _{attribute declaration}_ property’s _{name}_ property using the
 XML Name to Java Identifier mapping algorithm described in
-link:jaxb.html#a4656[See The Name to Identifier Mapping
-Algorithm].
+<<The Name to Identifier Mapping Algorithm>>.
 * A _base type_ for the Java property is
 derived from the `{attribute declaration}` property’s `{type
 definition}` property as described in binding of Simple Type Definition
-in _link:jaxb.html#a702[See Simple Type Definition]_ . If the
+in <<Simple Type Definition>>. If the
 base type is initially a primitive type and this JAXB property is
 _optional_ , the *[jaxb:globalBinding]* customization
 `@optionalProperty` controls the binding of an optional primitive
-property as described in link:jaxb.html#a1582[See Usage]“.
+property as described in <<Usage>>.
 * An optional _predicate_ for the Java
 property is constructed from the `{attribute declaration}` property’s
 `{type definition}` property as described in the binding of simple type
@@ -2309,14 +2267,14 @@
 
 The JAXB property getter for this attribute
 is annotated, either explicitly or via default mapping, with the mapping
-annotation @XmlAttribute, specified in Section
-link:jaxb.html#a3230[See @XmlAttribute]. The @XmlAttribute
+annotation @XmlAttribute, specified in <<xmlattribute>>. The @XmlAttribute
 element values are derived in terms of the properties of the
-link:jaxb.html#a5012[See Attribute Use Schema Component] and
-link:jaxb.html#a4965[See Attribute Declaration Schema Component]
+<<Attribute Use Schema Component>> and
+<<Attribute Declaration Schema Component>>
 as follows:
 
-.[[a1262]]Annotate Attribute property getter method with @XmlAttribute annotation
+.Annotate Attribute property getter method with @XmlAttribute annotation
+[[a1262]]
 [cols="1,1",options="header",]
 |===
 | @XmlAttribute element | @XmlAttribute value
@@ -2370,8 +2328,8 @@
 by default since `fixed` is only a validation constraint. The user must
 set the binding declaration attribute `fixedAttributeToConstantProperty`
 on `<jaxb:globalBinding>` element as specified in
-link:jaxb.html#a1582[See Usage] or on`<jaxb:property>` element
-as specified in link:jaxb.html#a1786[See Usage] to enable this
+<<usage>> or on`<jaxb:property>` element
+as specified in <<usage-4>> to enable this
 mapping.
 
 *_Example:_* +
@@ -2403,8 +2361,7 @@
 The schema-derived constant for this fixed
 attribute is annotated, either explicitly or via default mapping, with
 the mapping annotation `@XmlAttribute`. The elements of `@XmlAttribute`
-are set as described in link:jaxb.html#a1262[See Annotate
-Attribute property getter method with @XmlAttribute annotation]
+are set as described in <<a1262>>.
 
 Note that if derivation by restriction
 constrains an existing attribute declaration to be fixed, this
@@ -2443,8 +2400,7 @@
 * The _name_ of the Java property is derived
 from the _{name}_ property _of the attribute or element_ using the XML Name
 to Java Identifier mapping algorithm described in
-link:jaxb.html#a4656[See The Name to Identifier Mapping
-Algorithm].
+<<The Name to Identifier Mapping Algorithm>>.
 * A _base type_ for the Java property is java.lang.Object.
 * There is no _predicate_ for a property representing an `xs:IDREF`.
 * An optional _collection type_
@@ -2510,11 +2466,9 @@
 Note that `ID` and `IDREF` mechanisms do not
 incorporate type definitions that can be referenced. To generate
 stronger typing for a JAXB property representing an IDREF, the schema
-customization described in link:jaxb.html#a1809[See
-Generalize/Specialize baseType with attribute @name]" can be used to
-specialize the binding.. link:jaxb.html#a1820[See Specialize
-binding of an IDREF via customization] illustrates the generation of
-stronger typing for the above example.
+customization described in <<Generalize/Specialize baseType with attribute @name>>
+can be used to specialize the binding. <<exidrefcust,Specialize binding of an IDREF via customization>>
+illustrates the generation of stronger typing for the above example.
 
 === Attribute Wildcard
 
@@ -2605,7 +2559,7 @@
 ==== Bind Redefined Simple Type Definition
 
 As introduced in
-link:jaxb.html#a702[See Simple Type Definition]“, a schema
+<<Simple Type Definition>>, a schema
 component using a simple type definition typically binds to a JAXB
 property. The base type, collection type and predicate of the JAXB
 property are derived from the simple type definition. Thus, the redefine
@@ -2616,7 +2570,7 @@
 The one exception to this binding is that a
 simple type definition with enum facets is sometimes bound to an enum
 type. A redefined simple type definition that binds to an enum type, as
-described in link:jaxb.html#a829[See Enum Type]“, is not bound
+described in <<Enum Type>>, is not bound
 to a Java representation, only the redefinition is bound to an enum
 type.
 
@@ -2677,7 +2631,7 @@
 used instead of the initial group definition to construct the property
 set of the content model(s) that reference the redefined attribute or
 model group definition. The construction of a property set is described
-in link:jaxb.html#a933[See Java value class]“.
+in <<Java value class>>.
 
 Since there is no binding of an attribute or
 model group definition to a Java representation, no other special case
@@ -2778,7 +2732,7 @@
 implies, the most general of all content properties. Such a property can
 be used with any content specification, no matter how complex. A general
 content property is represented as a List property as introduced in
-link:jaxb.html#a595[See List Property]. Unlike the prior
+<<List Property>>. Unlike the prior
 approach where the JAXB implementation must infer ordering between the
 element content, this approach always requires the JAXB technology user
 to specify a valid ordering of element and text content. This approach
@@ -2800,16 +2754,14 @@
 within the Collection.
 
 * If the content model is mixed, the property
-is annotated as `@XmlMixed`. See link:jaxb.html#a1369[See Bind
-mixed content]“for details.
-* link:jaxb.html#a1351[See Collection
-of Element types]“describes an optimized binding of a collection of
+is annotated as `@XmlMixed`. See <<Bind mixed content>> for details.
+* <<Collection of Element types>> describes an optimized binding of a collection of
 element values, instead of a collection of JAXB elements annotated with
 `@XmlElementRefs(@XmlElementRef, ...)`.
 * If optimized binding can not be used, each
 element in the content model is represented by an `@XmlElementRef`,
-described in link:jaxb.html#a1223[See Bind to a Simple Element
-property]“. If there is more than one element annotations needed, they
+described in <<Bind to a Simple Element property>>.
+If there is more than one element annotations needed, they
 must occur as elements in the map annotation `@XmlElementRefs` specified
 in Section 8.10.3, “@XmlElementRef”.
 
@@ -2915,7 +2867,7 @@
 When a complex type definition’s _{content type}_
 is “mixed,” its character and element information content is
 bound to general content list as described in
-link:jaxb.html#a1344[See General content property].” Character
+<<General content property>>. Character
 information data is inserted as instances of `java.lang.String` into a
 JAXB collection property.
 
@@ -3015,7 +2967,7 @@
 Corresponds to a recognized global element tag name registered with
 the instance `jakarta.xml.bind.JAXBContext`, meaning the schema(s)
 describing the element content is registered with the _JAXBContext_
-instance, see link:jaxb.html#a298[See JAXBContext] on how
+instance, see <<JAXBContext>> on how
 bindings are registered with a `JAXBContext` instance.,
 .. instance of `jakarta.xml.bind.JAXBElement`. +
 Corresponds to an unknown element name but a recognized type
@@ -3042,8 +2994,7 @@
 default mapping annotations, with the mapping annotation
 `@XmlAnyElement`, specified in Section 8. The @XmlAnyElement annotation
 element values are derived in terms of the abstract model properties for
-wildcard summarized in link:jaxb.html#a5032[See Wildcard Schema
-Component] as follows:
+wildcard summarized in <<Wildcard Schema Component>> as follows:
 
 .Annotate JAXB property with @XmlAnyElement element-value pairs
 [cols="1,1",options="header"]
@@ -3067,11 +3018,9 @@
 ** If a named model group definition is being
 referenced, the value of its _{name}_ property is mapped to a Java
 identifier for a method using the algorithm specified in
-link:jaxb.html#a4656[See The Name to Identifier Mapping
-Algorithm].
+<<The Name to Identifier Mapping Algorithm>>.
 ** To derive a content property _name_ for
-unnamed model group, see link:jaxb.html#a4780[See Deriving an
-identifier for a model group].
+unnamed model group, see <<Deriving an identifier for a model group>>.
 * Content-property _base type_ set to
 `java.lang.Object`. A binding schema customization could provide a more
 specialized java class.
@@ -3085,9 +3034,8 @@
 * There is no _default value_.
 
 The schema-derived collection property is
-annotated as specified in link:jaxb.html#a1344[See General
-content property] and link:jaxb.html#a1351[See Collection of
-Element types].
+annotated as specified in <<General content property>>
+and <<Collection of Element types>>.
 
 *_Local structural Constraints_*
 
@@ -3104,26 +3052,23 @@
 . If _{content type}_ is mixed, bind the
 entire content model to a general content property with the
 content-property name `"content"`. See
-link:jaxb.html#a1369[See Bind mixed content] for more details.
+<<Bind mixed content>> for more details.
 . If (1) a particle has _{max occurs}_ >1 and
 (2) its _{term}_ is a model group and (3) all the particles in the model
 group have \{terms} that bind to different Java datatypes, bind to a
 collection of element types. See complete list of constraints required
-to perform this optimized binding in link:jaxb.html#a1351[See
-Collection of Element types].
+to perform this optimized binding in <<Collection of Element types>>.
 . If (1) a particle has _{max occurs}_ >1 and
 (2) its _{term}_ is a model group, then that particle and its descendants
 are mapped to one general content property that represents them. See
-link:jaxb.html#a1402[See Bind a repeating occurrence model
-group] for details.
+<<Bind a repeating occurrence model group>> for details.
 . Process all the remaining particles (1)
 whose _{term}_ are wildcard particles and (2) that did not belong to a
 repeating occurrence model group bound in step 2. If there is only one
-wildcard, bind it as specified in link:jaxb.html#a1384[See Bind
-wildcard schema component].” If there is more than one, then fallback to
+wildcard, bind it as specified in <<Bind wildcard schema component>>.
+If there is more than one, then fallback to
 representing the entire content model as a single general content
-property. See link:jaxb.html#a1344[See General content
-property]).
+property. See <<General content property>>.
 . Process all particles (1) whose _{term}_ are
 element declarations and (2) that do not belong to a repeating
 occurrence model group bound in step 2.
@@ -3243,7 +3188,7 @@
 
 Setting the `choiceContentProperty` attribute
 of `<jaxb:globalBindings>` as specified in
-link:jaxb.html#a1582[See Usage] enables this customized binding
+<<Usage>> enables this customized binding
 option.
 
 A non-repeating choice model group is bound
@@ -3252,8 +3197,7 @@
 
 * The choice content property name is either
 the referenced model group definition _{name}_ or obtained using the
-algorithm specified in link:jaxb.html#a4780[See Deriving an
-identifier for a model group].
+algorithm specified in <<Deriving an identifier for a model group>>.
 * The choice content property `base type` is
 the first common supertype of all items within the choice model group,
 with `java.lang.Object` always being a common root for all Java
@@ -3280,7 +3224,7 @@
 The `globalBindings` and property
 customization attribute, `choiceContentProperty`, enables this
 customized binding. The customization is specified in
-link:jaxb.html#a1580[See <globalBindings> Declaration].
+<<globalbindings-declaration>>.
 
 *_Example:_* +
 
@@ -3411,6 +3355,7 @@
 allow instances of org.w3c.dom.Node into the list.
 
 .Summarize default XSD to Java binding for Figure 5.1 and Figure 5.2
+[[table614]]
 [cols="1,1",options="header"]
 |===
 | XML Schema | Java Representation
diff --git a/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc b/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
index 6c17526..a109794 100644
--- a/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
+++ b/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Customizing XML Schema to Java Representation Binding
@@ -146,7 +146,7 @@
 binding declarations with.
 
 An example external binding declaration can
-be found in link:jaxb.html#a4821[See Example].”
+be found in <<example>>.
 
 ===== Restrictions
 
@@ -169,8 +169,7 @@
 compatibility. To indicate this version of the specification, the
 `version should` be `"3.0"`.
 If any other version is specified, it must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].”
+customization as specified in <<Invalid Customizations>>.
 
 The `version` attribute must be specified in
 one of the following ways:
@@ -203,7 +202,7 @@
 +
 Specification of both `version` and
 `<jaxb:version>` must result in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations].”
+<<Invalid Customizations>>.
 
 ==== Invalid Customizations
 
@@ -212,7 +211,7 @@
 specification. A non conforming binding declaration results in a
 _customization error_. The binding compiler must report the customization
 error. The exact error is not specified here. For additional
-requirements see link:jaxb.html#a3815[See Compatibility].”
+requirements see <<Compatibility>>.
 
 The rest of this chapter assumes that non
 conforming binding declarations are processed as indicated above and
@@ -224,7 +223,7 @@
 The source and binding-schema fragments shown
 in this chapter are meant to be illustrative rather than normative. The
 normative syntax for the binding language is specified in
-link:jaxb.html#a4270[See Normative Binding Schema Syntax].” in
+<<Normative Binding Schema Syntax>> in
 addition to the other normative text within this chapter. All examples
 are non-normative.
 
@@ -324,7 +323,7 @@
 abstract schema components. This parsing is assumed for parsing of
 annotation elements specified here. In some cases, [XSD PART 1] is
 ambiguous with respect to the specification of annotation elements.
-link:jaxb.html#a2217[See Annotation Restrictions]” outlines how
+<<Annotation Restrictions>> outlines how
 these are addressed.
 
 [NOTE]
@@ -399,7 +398,7 @@
 one of `"true"`, `"false"`, `"1"` or `"0"`. If enableFailFastCheck is `"true"` or
 `"1"` and the JAXB implementation supports this optional checking, type
 constraint checking when setting a property is performed as described in
-link:jaxb.html#a541[See Properties]". The default value is `"false"`.
+<<Properties>>. The default value is `"false"`.
 * `_choiceContentProperty_` if
 specified, defines the customization value `_choiceContentProperty_`. The
 value must be one of `"true"`, `"false"`, `"1"` or `"0"`.
@@ -418,7 +417,7 @@
 simple type definitions with an enumeration facet and a restriction base
 type listed in `_typesafeEnumBase_` or derived from a type listed in
 `_typesafeEnumBase_` is bound to a `_typesafeEnumClass_` by default as
-specified in link:jaxb.html#a829[See Enum Type]". The default
+specified in <<Enum Type>>. The default
 value of `_typesafeEnumBase_` is `"xs:string"`.
 +
 The `_typesafeEnumBase_` cannot contain the
@@ -428,23 +427,22 @@
 `_"xs:hexBinary"_`, `_"xs:date"_`, `_"xs:time"_`, `_"xs:dateTime"_`, `_"xs:duration"_`,
 `_"xs:gDay"_`, `_"xs:gMonth"_`, `_"xs:gYear"_`, `_"xs:gMonthDay"_`, `_"xs:gYearMonth"_`,
 `_"xs:IDREF"_`, `_"xs:ID"_`. If any of them are specified, it must result in an
-invalid customization as specified in link:jaxb.html#a1544[See
-Invalid Customizations].” JAXB implementation must be capable of binding
+invalid customization as specified in <<Invalid Customizations>>.
+JAXB implementation must be capable of binding
 any other simple type listed in `_typesafeEnumBase_` to a typesafe
 enumeration class.
 
 * `_typesafeEnumMemberName_` if specified,
 defines the customization value `_typesafeEnumMemberName_`. The value must
 be one of `skipGeneration`, `generateError` or `generateName`. The
-default value is `skipGeneration`. See link:jaxb.html#a1633[See
-@typesafeEnumMemberName]” for details.
+default value is `skipGeneration`. See <<typesafeenummembername>> for details.
 * `_typesafeEnumMaxMembers_` if specified,
 defines the maximum number of enum facets that a simple type definition
 can have and be consider to binding to an enum type by default. The
 attributes type is `xs:int` and its default value is `256`.
 * `_generateElementClass_` if specified as
 true, a schema-derived Element class, as specified in
-link:jaxb.html#a657[See Java Element Class]”, is generated for
+<<Java Element Class>>, is generated for
 each element declaration that has an element factory method generated
 for it. Its default value is `"false"`.
 * `_generateElementProperty_` if specified as
@@ -453,16 +451,15 @@
 value.
 * `_generateValueClass_` if specified as true, a
 schema-derived Java value class is generated for each complex type
-definiton.Value class is specified in link:jaxb.html#a521[See
-Value Class]. If generateValueClass is specified as false, a
+definiton.Value class is specified in <<Value Class>>.
+If generateValueClass is specified as false, a
 schema-derived interface and implementation class is generated for each
-complex type definition as specified in link:jaxb.html#a536[See
-Java Content Interface]”. The attribute’s default value is true. See
-examples of this binding in link:jaxb.html#a1617[See
-generateElementClass and generateValueClass]”.
+complex type definition as specified in <<Java Content Interface>>.
+The attribute’s default value is true. See
+examples of this binding in <<generateElementClass and generateValueClass>>.
 * zero or more `_javaType_` binding
 declarations. Each binding declaration must be specified as described in
-link:jaxb.html#a1981[See <javaType> Declaration].”
+<<javatype-declaration>>.
 * zero or one serializable binding declaration.
 * `_optionalProperty_` controls how a JAXB property with a
 primitive base type that represents an optional non-nillable
@@ -476,11 +473,10 @@
 property. The attribute’s default value is “wrapper”.
 * `_mapSimpleTypeDef_` controls whether a JAXB
 mapped class should be generated for each simple type definition as
-specified in link:jaxb.html#a803[See Bind to a JAXB mapped
-class]”. This attribute’s default value is `"false"`. This customization
+specified in <<Bind to a JAXB mapped class>>.
+This attribute’s default value is `"false"`. This customization
 eases preserving simple type substituting precisely as described in
-link:jaxb.html#a1158[See Type Substitution of a Simple Type
-Definition]”.
+<<Type Substitution of a Simple Type Definition>>.
 * `_localScoping_` attribute can have the
 value of either _nested_ or _toplevel_ . This attribute describes the
 JAXB binding of nested XML schema component to either a _nested_
@@ -514,8 +510,8 @@
 
 A customization name may or may not conform
 to the recommended Java language naming conventions. [JLS - Java
-Language Specification, Second Edition, Section 6.8, “Naming
-Conventions”]. The customization value _enableJavaNamingConventions_
+Language Specification, Second Edition, Section 6.8, "Naming
+Conventions"]. The customization value _enableJavaNamingConventions_
 determines if a customization name is mapped to a Java identifier that
 follows Java language naming conventions or not.
 
@@ -524,7 +520,7 @@
 constant name) specified in the section from where this section is
 referenced must be mapped to Java identifier which follows the Java
 language naming conventions as specified in
-link:jaxb.html#a4816[See Conforming Java Identifier Algorithm]”;
+<<Conforming Java Identifier Algorithm>>;
 otherwise the customized name must be used as is.
 
 ==== Underscore Handling
@@ -537,20 +533,17 @@
 The default value for _@underscoreBinding_ is
 `"asWordSeparator"` and categorizes underscore (‘_’) as a punctuation
 mark in the XML name to Java identifier algorithm specified in Appendix
-link:jaxb.html#a4656[See The Name to Identifier Mapping
-Algorithm]. The resulting algorithm transforms one or more consecutive
+<<The Name to Identifier Mapping Algorithm>>.
+The resulting algorithm transforms one or more consecutive
 underscores in an XML name to camel case separated words in the derived
 Java class and method names. Examples of this mapping are in
-link:jaxb.html#a4734[See XML Names and derived Java Class,
-Method, and Constant Names].
+<<jcmcn>>.
 
 When  _@underscoreBinding_ is
 `"asCharInWord"`, underscore (‘_’) is considered a special letter within
 a word. The result is that all underscore characters from the original
 XML name are preserved in the derived Java identifier. Example of this
-mapping are in link:jaxb.html#a4755[See XML Names and derived
-Java Class, Method, and Constant Names when <jaxb:globalBindings
-underscoreHandling=”asCharInWord”>].
+mapping are in <<asCharInWord>>.
 
 ==== generateElementClass and generateValueClass
 
@@ -746,9 +739,9 @@
 package name.
 * `_<javadoc>_` if specified, customizes the
 package level Javadoc. `_<javadoc>_` must be specified as described in
-link:jaxb.html#a2142[See <javadoc> Declaration].” The Javadoc
-must be generated as specified in link:jaxb.html#a2163[See
-Javadoc Customization].” The Javadoc section customized is the `package
+<<javadoc-declaration>>. The Javadoc
+must be generated as specified in <<Javadoc Customization>>.
+The Javadoc section customized is the `package
 section`.
 
 [NOTE]
@@ -883,8 +876,7 @@
 attribute and the `_implClass_` attribute.
 * `_<javadoc>_` element, if specified
 customizes the Javadoc for the derived value class. `_<javadoc>_` must be
-specified as described in link:jaxb.html#a2142[See <javadoc>
-Declaration].”
+specified as described in <<javadoc-declaration>>.
 
 ==== Customization Overrides
 
@@ -892,7 +884,7 @@
 representation to a value class or a Java Element class, the following
 customization values override the defaults specified in Chapter 5. It is
 specified in a common section here and referenced from
-link:jaxb.html#a1718[See Customizable Schema Elements].”
+<<Customizable Schema Elements>>.
 
 * *name*: The name is `_className_` if specified.
 * *package name:* The name of the package is
@@ -908,8 +900,8 @@
 ====
 
 * *javadoc:* The Javadoc must be generated as
-specified in section link:jaxb.html#a2163[See Javadoc
-Customization].” The Javadoc section customized is the `class/interface
+specified in section <<Javadoc Customization>>.
+The Javadoc section customized is the `class/interface
 section`.
 
 ==== Customizable Schema Elements
@@ -919,9 +911,8 @@
 When `<class>` customization specified in the
 annotation element of the complex type definition, the complex type
 definition must be bound to a Java value class as specified in
-link:jaxb.html#a933[See Java value class]” applying the
-customization overrides as specified in link:jaxb.html#a1713[See
-Customization Overrides].”
+<<Java value class>> applying the
+customization overrides as specified in <<Customization Overrides>>.
 
 *_Example:_* Class Customization: Complex Type Definition To Java value class +
 
@@ -955,9 +946,9 @@
 When `<class>` customization specified in the
 annotation element of a simple type definition, the simple type
 definition must be bound to a Java value class as specified in
-link:jaxb.html#a803[See Bind to a JAXB mapped class]” applying
+<<Bind to a JAXB mapped class>> applying
 the customization overrides as specified in
-link:jaxb.html#a1713[See Customization Overrides].”
+<<Customization Overrides>>.
 
 *_Example:_* Class Customization: Simple Type Definition To Java value class +
 
@@ -998,9 +989,9 @@
 A `_<class>_` declaration is allowed in the
 annotation element of the global element declaration. However, the
 `_implClass_` attribute is not allowed. The global element declaration
-must be bound as specified in link:jaxb.html#a1068[See Bind to
-Element Class]” applying the customization overrides specified in
-link:jaxb.html#a1713[See Customization Overrides].”
+must be bound as specified in <<Bind to Element Class>>
+applying the customization overrides specified in
+<<Customization Overrides>>.
 
 *_Example:_* Class Customization: Global Element to Class +
 
@@ -1059,28 +1050,28 @@
 * local element declaration (“ref” attribute is not used).
 
 A `<class>` declaration is allowed in the
-annotation element of a local element. link:jaxb.html#a2217[See
-Annotation Restrictions]” contains more information regarding the
+annotation element of a local element. <<Annotation Restrictions>>
+contains more information regarding the
 annotation element for a local element reference. However, the
 `_implClass_` attribute is not allowed.
 
 A `<class>` customization on local element
 reference must result in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations]” since a local
+<<Invalid Customizations>> since a local
 element reference is never bound to a Java Element class.
 
 A `<class>` customization on local element
 declaration applies only when a local element declaration is bound to a
 Java Element class. Otherwise it must result in an invalid customization
-as specified in link:jaxb.html#a1544[See Invalid
-Customizations].” If applicable, a local element must be bound as
-specified in link:jaxb.html#a1040[See Bind to JAXBElement<T>
-Instance]” applying the customization overrides as specified in
-link:jaxb.html#a1713[See Customization Overrides].”
+as specified in <<Invalid Customizations>>.
+If applicable, a local element must be bound as
+specified in <<bind-to-jaxbelementt-instance>>
+applying the customization overrides as specified in
+<<Customization Overrides>>.
 
 *_Example:_* Class Customization: Local Element Declaration To Java Element +
 
-The following example is from link:jaxb.html#a1359[See Examples].
+The following example is from <<Examples>>.
 
 XML Schema fragment:
 
@@ -1158,8 +1149,7 @@
 the `<property>` element.
 
 The use of this declaration is subject to the
-constraints specified in link:jaxb.html#a1825[See Usage
-Constraints].
+constraints specified in <<usage-constraints>>.
 
 The customization values defined are:
 
@@ -1195,8 +1185,7 @@
 use JAXBElement, as if the element declaration were just `_<element nillable="true"/>_`.
 * `@attachmentRef` has a default value of
 “default”. This mode defers to default processing as specified in
-link:jaxb.html#a5147[See Binding WS-I Attachment Profile
-ref:swaRef]”. +
+<<binding-ws-i-attachment-profile-refswaref>>. +
  +
 When `@attachmentRef` value is _resolve_ and the property’s base type is
 or derives from `xsd:anyURI`, the schema-derived JAXB property has a
@@ -1210,8 +1199,7 @@
 and `@XmlAttachmentRef` is not generated for the property.
 * `_<javadoc>_` element, if specified
 customizes the Javadoc for the property’s getter method. `_<javadoc>_`
-must be specified as described in link:jaxb.html#a2142[See
-<javadoc> Declaration].”
+must be specified as described in <<javadoc-declaration>>.
 
 ==== baseType
 
@@ -1237,8 +1225,8 @@
 
 Optional child element `_<javaType>_`, if
 specified, defines the customization value `_javaType_` and must be
-specified as defined in link:jaxb.html#a1981[See <javaType>
-Declaration]. The customization value defined has component scope. This
+specified as defined in <<javatype-declaration>>.
+The customization value defined has component scope. This
 customization converts the default base type’s value for a simple type
 definition to the Java class specified by <javaType> name.
 
@@ -1250,8 +1238,8 @@
 _@XmlJavaTypeAdapter.value()_ references the class.] that extends
 `jakarta.xml.bind.annotation.adapter.XmlAdapter`. The generated class’
 `unmarshal` method must call the <javaType> customization’s parse
-method, which is specified in link:jaxb.html#a1981[See
-<javaType> Declaration]. The generated class’ `marsha` method must call
+method, which is specified in <<<javatype-declaration>>.
+The generated class’ `marsha` method must call
 the <javaType> customization’s print method.
 
 ===== Generalize/Specialize baseType with attribute @name
@@ -1287,7 +1275,7 @@
 the mapping annotation `@XmlElement`, specified in Section 8.10.1. The
 `@XmlElement` annotation element type is derived in terms of the
 abstract model properties for a element type definition summarized in
-link:jaxb.html#a4937[See Element Declaration Schema Component]
+<<Element Declaration Schema Component>>
 as follows:
 
 .Annotate JAXB property with @XmlElement element-value pairs
@@ -1310,11 +1298,12 @@
 customization generates stronger typing than default JAXB binding. For
 example, an XML element or attribute of `xs:IDREF` binds to
 `java.lang.Object` by default as specified in
-link:jaxb.html#a1290[See Binding an IDREF component to a Java
-property]”. If the schema only intends the reference to be to an element
+<<Binding an IDREF component to a Java property>>.
+If the schema only intends the reference to be to an element
 that binds to a specific type, the baseType @name schema customization
 can be used to specialize the binding.
 
+[#exidrefcust]
 *_Example:_* Specialize binding of an IDREF via customization +
 
 Given XML Schema fragment:
@@ -1358,20 +1347,18 @@
 
 The usage constraints on `<property>` are
 specified below. Any constraint violation must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].” The usage constraints are:
+customization as specified in <<Invalid Customizations>>. The usage constraints are:
 
 . The `<baseType>` is only allowed with the
-following XML schema elements from the link:jaxb.html#a1857[See
-Customizable Schema Elements]”:
-.. Local Element, link:jaxb.html#a1913[See Local Element].
-.. Local Attribute, link:jaxb.html#a1861[See Local Attribute].
-.. ComplexType with simpleContent, link:jaxb.html#a1976[See ComplexType].
+following XML schema elements from the
+<<Customizable Schema Elements>>:
+.. Local Element, <<Local Element>>.
+.. Local Attribute, <<Local Attribute>>.
+.. ComplexType with simpleContent, <<ComplexType>>.
 . `<baseType>` can either have a name attribute
 or a `<javaType>`, they both can not exist at the same time.
 . The `_fixedAttributeAsConstantProperty_` is
-only allowed with a local attribute, link:jaxb.html#a1861[See
-Local Attribute], that is fixed.
+only allowed with a local attribute, <<Local Attribute>>, that is fixed.
 . If a `<property>` declaration is associated
 with the `<complexType>`, then a `<property>` customization cannot be
 specified on the following schema elements that are scoped to
@@ -1435,23 +1422,20 @@
 When binding a schema element’s Java
 representation to a property, the following customization values
 override the defaults specified in Chapter 6. It is specified in a
-common section here and referenced from link:jaxb.html#a1857[See
-Customizable Schema Elements].
+common section here and referenced from <<Customizable Schema Elements>>.
 
 * *name*: If _propertyName_ is defined, then it
 is the name obtained by mapping the name as specified in
-link:jaxb.html#a1608[See Customized Name Mapping].”
+<<Customized Name Mapping>>.
 * *base type*: The basetype is
 `_propertyBaseType_` if defined. The _propertyBaseType_ is defined by a XML
-schema element in link:jaxb.html#a1857[See Customizable Schema
-Elements].
+schema element in <<Customizable Schema Elements>>.
 * *collection type*: The collection type is
 `_propertyCollectionType_` if specified; otherwise it is the
 `_propertyCollectionType_` inherited from a scope that covers this schema
 element.
 * *javadoc*: The Javadoc must be generated as
-specified in section link:jaxb.html#a2163[See Javadoc
-Customization].” The Javadoc section customized is the `method section`.
+specified in section <<Javadoc Customization>>. The Javadoc section customized is the `method section`.
 * If `_propertyBaseType_` is a Java primitive
 type and `_propertyCollectionType_` is a class that implements
 `java.util.List`, then the primitive type must be mapped to its wrapper
@@ -1459,11 +1443,10 @@
 
 The following does not apply if local
 attribute is being bound to a constant property as specified in
-link:jaxb.html#a1861[See Local Attribute]:
+<<Local Attribute>>:
 
-* If `_generateIsSetMethod_` is `"true"` or `"1"`,
-then additional methods as specified in link:jaxb.html#a610[See
-isSet Property Modifier]” must be generated.
+* If `_generateIsSetMethod_` is `"true"` or `"1"`, then additional
+methods as specified in <<isset-property-modifier>> must be generated.
 * If `_enableFailFastCheck_` is `"true"` or `"1"`,
 then the type constraint checking when setting a property is enforced by
 the JAXB implementation. Support for this feature is optional for a JAXB
@@ -1479,8 +1462,8 @@
 The binding declaration does not bind the
 global attribute declaration to a property. Instead it defines
 customization values that have definition scope. The definition scope
-covers all local attributes (link:jaxb.html#a1861[See Local
-Attribute]”) that can reference this global attribute declaration. This
+covers all local attributes (<<Local Attribute>>)
+that can reference this global attribute declaration. This
 is useful since it allows the customization to be done once when a
 global attribute is defined instead of at each local attribute that
 references the global attribute declaration.
@@ -1498,10 +1481,10 @@
 
 A `_<property>_` declaration is allowed in
 the annotation element of a local
-attribute.link:jaxb.html#a2217[See Annotation Restrictions]”
+attribute. <<Annotation Restrictions>>
 contains more information regarding the annotation element for a local
 attribute reference. The customization values must be defined as
-specified in link:jaxb.html#a1786[See Usage]” and have component
+specified in <<usage-4>> and have component
 scope.
 
 If `_javaType_` is defined, then the
@@ -1511,16 +1494,16 @@
 * If `_fixedAttributeAsConstantProperty_` is
 `"true"` or `"1"` and the local attribute is a fixed, the local
 attribute must be bound to a Java Constant property as specified in
-link:jaxb.html#a1277[See Bind to a Java Constant property]
+<<Bind to a Java Constant property>>
 applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides]. The
+<<Customization Overrides>>. The
 `_generateIsSetMethod_`, `_choiceContentProperty_`
 and `_enableFailFastCheck_` must
 be considered to have been set to `"false"`.
 * Otherwise, it is bound to a Java property
-as specified in link:jaxb.html#a1252[See Attribute use]”
+as specified in <<Attribute use>>
 applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].”
+<<Customization Overrides>>.
 
 *_Example:_* Customizing Java Constant Property +
 
@@ -1606,8 +1589,8 @@
 The binding declaration does not bind the
 global element declaration to a property. Instead it defines
 customization values that have definition scope. The definition scope
-covers all local elements (link:jaxb.html#a1913[See Local
-Element]”) that can reference this global element declaration. This is
+covers all local elements (<<Local Element>>)
+that can reference this global element declaration. This is
 useful since it allows the customization to be done once when a global
 element is defined instead of at each local element that references the
 global element declaration.
@@ -1623,12 +1606,12 @@
 is not used).
 
 A `<property>` declaration is allowed in the
-annotation element of a local element. link:jaxb.html#a2217[See
-Annotation Restrictions]” contains more information regarding the
+annotation element of a local element. <<Annotation Restrictions>>
+contains more information regarding the
 annotation element for a local element reference.
 
 The customization values must be defined as
-specified in link:jaxb.html#a1786[See Usage]” and have component
+specified in <<usage-4>> and have component
 scope.
 
 If `_javaType_` is defined, then the
@@ -1636,26 +1619,22 @@
 `"name"` attribute of the `_javaType_`.
 
 The local element must be bound as specified
-in link:jaxb.html#a1414[See Content Model Default Binding]
+in <<Content Model Default Binding>>
 applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].
+<<Customization Overrides>>.
 
-See example in
-link:jaxb.html#a1966[See Example 3: Property Customization:
-Model Group To Content Property Set]” in section
-link:jaxb.html#a1944[See Model Group].
+See example in <<propex3>> in section <<Model Group>>.
 
 ===== Wildcard
 
 A `<property>` declaration is allowed in the
 annotation element of the wildcard schema component. The customization
-values must be defined as specified in link:jaxb.html#a1786[See
-Usage]” and have component scope.
+values must be defined as specified in <<usage-4>> and have component scope.
 
 The wildcard schema component must be bound
-to a property as specified in link:jaxb.html#a1384[See Bind
-wildcard schema component]” applying customization overrides as
-specified in link:jaxb.html#a1847[See Customization Overrides].”
+to a property as specified in <<Bind wildcard schema component>>
+applying customization overrides as
+specified in <<Customization Overrides>>.
 
 *_Example:_* The following schema example is from UDDI V2.0 +
 
@@ -1691,7 +1670,7 @@
 A `<property>` binding declaration is allowed
 in the annotation element of the compositor (i.e. `<choice>`,
 `<sequence>` or `<all>`). The customization values must be defined as
-specified in link:jaxb.html#a1786[See Usage]” and have component
+specified in <<usage-4>> and have component
 scope.
 
 The customized binding of a model group is
@@ -1700,15 +1679,14 @@
 * `choiceContentProperty` attribute in `<globalBindings>`.
 . If _propertyBaseType_ is defined and a
 `<property>` declaration is also present, then the customization
-overrides specified in link:jaxb.html#a1847[See Customization
-Overrides] must be applied by the model group’s parent schema element
+overrides specified in <<Customization Overrides>>
+must be applied by the model group’s parent schema element
 to the property used to aggregate the Java value class.
 . If _propertySet_ is defined, then the model
 group’s parent schema element must aggregate the property set as
-specified in link:jaxb.html#a930[See Aggregation of Property
-Set].
+specified in <<Aggregation of Property Set>>.
 
-*_Example 1:_* Property Customization: Model Group To ChoiceContent Property +
+*_Example 1:_* [[propex1, Example 1]]Property Customization: Model Group To ChoiceContent Property +
 
 XML Schema fragment
 
@@ -1742,7 +1720,7 @@
 The `choiceContentProperty` is required to
 bind the choice model group to a choice content property.
 
-*_Example 2:_* Property Customization: Model Group To General Content Property +
+*_Example 2:_* [[propex2, Example 2]]Property Customization: Model Group To General Content Property +
 
 XML Schema fragment:
 
@@ -1774,7 +1752,7 @@
 }
 ----
 
-*_Example 3:_* Property Customization: Model Group To Content Property Set +
+*_Example 3:_* [[propex3, Example 3]]Property Customization: Model Group To Content Property Set +
 
 XML Schema fragment:
 
@@ -1823,39 +1801,39 @@
 ===== Model Group Reference
 
 A model group reference is a reference to a
-model group using the “ref” attribute. A property customization is
+model group using the `ref` attribute. A property customization is
 allowed on the annotation property of the model group reference. Section
-link:jaxb.html#a2217[See Annotation Restrictions] contains more
+<<Annotation Restrictions>> contains more
 information regarding the annotation element for a model group
 reference.
 
 The customization values must be defined as
-specified in link:jaxb.html#a1786[See Usage]” and have component
+specified in <<usage-4>> and have component
 scope. A model group reference is bound to a Java property set or a list
-property as specified in link:jaxb.html#a1414[See Content Model
-Default Binding]” applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].
+property as specified in <<Content Model Default Binding>>
+applying customization overrides as specified in
+<<Customization Overrides>>.
 
 ===== ComplexType
 
 A `<property>` customization is allowed on
 the annotation element of a complex type. The customization values must
-be defined as specified in link:jaxb.html#a1786[See Usage] and
+be defined as specified in <<usage-4>> and
 have component scope. The result of this customization depends upon the
 content type of the complex type.
 
 * If the content type of the content model is
 simple content, then the content model must be bound to a property as
-specified in link:jaxb.html#a973[See Simple Content Binding].”
+specified in <<Simple Content Binding>>.
 applying the customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].” If
+<<Customization Overrides>>. If
 `_javaType_` is defined, then the `_propertyBaseType_` is defined to be Java
 datatype specified in the `"name"` attribute of the `_javaType_`.
 * For all other content types, the content
 model must be bound as specified in step 1. of
-link:jaxb.html#a1414[See Content Model Default Binding]”
+<<Content Model Default Binding>>
 applying the customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].
+<<Customization Overrides>>.
 
 [NOTE]
 .Design Note
@@ -1902,17 +1880,16 @@
 
 * a `<globalBindings>` declaration.
 * annotation element of one of the XML schema
-elements specified in link:jaxb.html#a2079[See Customizable
-Schema Elements].”
+elements specified in <<Customizable Schema Elements>>.
 * in a `<property>` declaration. See
-link:jaxb.html#a1783[See <property> Declaration]. This can be
+<<property-declaration>>. This can be
 used for customization at the point of reference to a simple type.
 
 When used in a `<globalBindings>`
 declaration, `<javaType>` defines customization values with global
 scope. When used in an annotation element of one of the schema elements
-specified in link:jaxb.html#a2079[See Customizable Schema
-Elements].” the customization values have component scope.
+specified in <<Customizable Schema Elements>>
+the customization values have component scope.
 
 ===== name
 
@@ -1938,18 +1915,15 @@
 allow the global customization of a XML schema to Java datatype. Hence
 `_xmlType_` attribute is required when `<javaType>` declaration’s parent
 is `<globalBindings>`. If absent, it must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].” Otherwise, the _xmlType_ attribute must not be present
+customization as specified in <<Invalid Customizations>>.
+Otherwise, the _xmlType_ attribute must not be present
 since the XML datatype is determined from the XML schema element with
 which the annotation element containing `<javaType>` declaration or the
 `<baseType>` (containing the `<javaType>`) is associated. If present,
 it must result in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations].
+<<Invalid Customizations>>.
 
-Examples can be found in
-link:jaxb.html#a2062[See Example: javaType Customization: Java
-Built-in Type]” and link:jaxb.html#a2027[See Example: javaType
-Customization: User Specified Parse Method]
+Examples can be found in <<exjtcbt>> and <<exjtcus>>
 
 ===== parseMethod
 
@@ -1961,8 +1935,8 @@
 * The parse method defaults to `new` provided
 `_javaType_` is not a Java primitive type such as (``"int"``). If
 `_javaType_` is a Java primitive type, then this must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].” Otherwise, the binding compiler must assume that the
+customization as specified in <<Invalid Customizations>>.
+Otherwise, the binding compiler must assume that the
 target type is a class that defines a constructor as follows:
 +
 --
@@ -1990,7 +1964,7 @@
 form _methodName_ provided `_javaType_` is not a Java primitive type (such
 as `"int"`). If `_javaType_` is Java primitive type, then this must
 result in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations]. Otherwise,
+<<Invalid Customizations>>. Otherwise,
 the binding compiler must assume that _methodName_ is a method in the
 class `_javaType_`. The binding compiler must therefore prefix the
 `_javaType_` to the _methodName_ and process `_javaType_`._methodName_ as
@@ -2015,7 +1989,7 @@
 _methodName_ provided `_javaType_` is not a Java primitive type (such as
 `"int"`). If `_javaType_` is Java primitive type, then this must result
 in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations]. Otherwise,
+<<Invalid Customizations>>. Otherwise,
 the compiler must assume that the target type is a class or an interface
 that defines a zero-argument instance method named _methodName_ that
 returns a `String`. To apply the conversion it must generate code to
@@ -2058,8 +2032,7 @@
 The `DatatypeConverterInterface` defines
 parse and print methods for XML schema datatypes. There is one parse and
 print method for each of XML schema datatype specified in
-link:jaxb.html#a725[See Java Mapping for XML Schema Built-in
-Types]. The interface is fully specified by the Javadoc specified in
+<<a725>>. The interface is fully specified by the Javadoc specified in
 `jakarta.xml.bind.DatatypeConverterInterface`.
 
 The `DatatypeConverter` class defines a
@@ -2078,7 +2051,7 @@
 the `DatatypeConverter` class for writing a customized parse and print
 method.
 
-*_Example:_* javaType Customization: User Specified Parse Method +
+*_Example:_* [[exjtcus,javaType Customization: User Specified Parse Method]] javaType Customization: User Specified Parse Method +
 
 This example shows the binding of XML schema
 type `"xs:date"` is bound to a Java datatype `long` using user specified
@@ -2198,9 +2171,9 @@
 `new` with a `java.lang.String` parameter for parsing.
 .. Else javaType(java.lang.String) does not
 exist, this must result in an invalid binding customization as specified
-in link:jaxb.html#a1544[See Invalid Customizations].
+in <<Invalid Customizations>>.
 
-*_Example:_* javaType Customization: Java Built-in Type +
+*_Example:_* [[exjtcbt,javaType Customization: Java Built-in Type]] javaType Customization: Java Built-in Type +
 
 This example illustrates how to bind a XML
 schema type to a Java type different from the default one.
@@ -2253,9 +2226,7 @@
 ==== Customization Overrides
 
 The `<javaType>` overrides the default
-binding of `_xmlType_` to the Java datatype specified in
-link:jaxb.html#a725[See Java Mapping for XML Schema Built-in
-Types].
+binding of `_xmlType_` to the Java datatype specified in <<a725>>.
 
 ==== Customizable Schema Elements
 
@@ -2264,8 +2235,7 @@
 A `<javaType>` binding declaration is allowed
 in the annotation element of the of a simple type definition. The
 `_javaType_` overrides the default binding of `_xmlType_` to the Java
-datatype specified in link:jaxb.html#a725[See Java Mapping for
-XML Schema Built-in Types]. The customization values defined have
+datatype specified in <<a725>>. The customization values defined have
 definition scope and thus covers all references to this simple type
 definition.
 
@@ -2277,17 +2247,16 @@
 _@XmlJavaTypeAdapter.value()_ references the class.] that extends
 `jakarta.xml.bind.annotation.adapter.XmlAdapter`. The generated class’
 `unmarshal` method must call the <javaType> customization’s parse
-method, which is specified in link:jaxb.html#a1981[See
-<javaType> Declaration]. The generated class’ `marshal` method must call
+method, which is specified in <<javatype-declaration>>.
+The generated class’ `marshal` method must call
 the <javaType> customization’s print method.
 
 ===== GlobalBindings
 
 A `<javaType>` binding declaration is allowed
 as part of `<globalBindings>`. The `_javaType_` overrides the default
-binding of `_xmlType_` to the Java datatype specified in
-link:jaxb.html#a725[See Java Mapping for XML Schema Built-in
-Types]. The customization values defined have global scope.
+binding of `_xmlType_` to the Java datatype specified in <<a725>>.
+The customization values defined have global scope.
 
 For each element or attribute declaration
 that references an `xmlType` that has a globalBindings `<javaType>`
@@ -2299,14 +2268,12 @@
 A `<javaType>` binding declaration is allowed
 as part of `<baseType>` in the `<property>` binding declaration. The
 `_javaType_` overrides the default binding of `_xmlType_` to the Java
-datatype specified in link:jaxb.html#a725[See Java Mapping for
-XML Schema Built-in Types]. Additional semantics are specified in
-link:jaxb.html#a1801[See baseType] also
-apply.
+datatype specified in <<a725>>. Additional semantics are specified in
+basetype also apply.
 
 The schema-derived JAXB property is annotated
 with `@XmlJavaTypeAdapter` as specified in
-link:jaxb.html#a1801[See baseType].
+<<basetype>>.
 
 === `<typesafeEnum>` Declaration
 
@@ -2346,7 +2313,7 @@
  +
 For an anonymous simple type, the `name` attribute must be present. If
 absent, it must result in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations].
+<<Invalid Customizations>>.
 * `map` determines if the simple type
 definition should be bound to an enum type. When ``map``’s value is
 `false`, then the simple type definition must not be bound to an enum
@@ -2360,7 +2327,7 @@
 * `<javadoc>` element, if specified
 customizes the Javadoc for the enumeration class. _<javadoc>_ defines
 the customization value `_enumClassjavadoc_` if specified as described in
-link:jaxb.html#a2142[See <javadoc> Declaration].
+<<javadoc-declaration>>.
 * Zero or more `_<typesafeEnumMember>_`
 declarations. The customization values are as defined as specified by
 the `_<typesafeEnumMember>_` declaration.
@@ -2374,12 +2341,11 @@
 * `value` defines a customization value
 `_enumMemberValue_`, if specified. `_enumMemberValue_` must be the
 enumeration value specified in the source schema. The usage of `_value_`
-is further constrained as specified in link:jaxb.html#a2106[See
-value Attribute].”
+is further constrained as specified in <<value-attribute>>.
 * `<javadoc>` if specified, customizes the
 Javadoc for the enumeration constant. `<javadoc>` defines a
 customization value `_enumMemberjavadoc_` if specified as described in
-link:jaxb.html#a2142[See <javadoc> Declaration].
+<<javadoc-declaration>>.
 
 For inline annotation, the
 `<typesafeEnumClass>` must be specified in the annotation element of the
@@ -2407,18 +2373,16 @@
 the annotation element of the enumeration member or when XPath refers
 directly to a single enumeration facet, then the value attribute must be
 absent. If present, it must result in must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].”
+customization as specified in <<Invalid Customizations>>.
 * When `<typesafeEnumMember>` is scoped to
 the `typesafeEnumClass` declaration, the value attribute must be
 present. If absent, it must result in must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations]. The _enumMemberValue_ must be used to identify the
+customization as specified in <<Invalid Customizations>>.
+The _enumMemberValue_ must be used to identify the
 enumeration member to which the `<typesafeEnumMember>` applies.
 
 An example of external binding syntax can be
-found in link:jaxb.html#a2134[See Example 2: typesafeEnum
-Customization: External Binding Declaration].”
+found in <<ex2>>.
 
 ==== Inline Annotations
 
@@ -2431,9 +2395,7 @@
 In split inline annotation, the enumeration
 value and the enumeration class are customized separately i.e. the
 `<typesafeEnumMember>` is used independently not as a child element of
-`<typesafeEnumClass>`. An example of this is shown in
-link:jaxb.html#a2129[See Example 1: typesafeEnum Customization:
-Split Inline Annotation].”
+`<typesafeEnumClass>`. An example of this is shown in <<ex1>>.
 
 In combined inline annotation, the
 enumeration value and the enumeration class are customized together i.e.
@@ -2441,39 +2403,35 @@
 `<typesafeEnumClass>`. This is similar to the customization used in
 external binding declaration. In this case the `value` attribute must be
 present in the `<typesafeEnumMember>` for reasons noted in
-link:jaxb.html#a2106[See value Attribute].” An example of this
-customization is shown in link:jaxb.html#a2138[See Example 3:
-typesafeEnum Customization: Combined Inline Annotation].”
+<<value-attribute>>. An example of this
+customization is shown in <<ex3>>.
 
 ==== Customization Overrides
 
 When binding a schema type definition’s Java
 representation to an enum type, the following customization values
 override the defaults specified in Chapter 5. It is specified in a
-common section here and referenced from link:jaxb.html#a1857[See
-Customizable Schema Elements].”
+common section here and referenced from <<Customizable Schema Elements>>.
 
 * *name*: If _enumClassName_ is defined, then the
 name obtained by mapping _enumClassName_ as specified in
-link:jaxb.html#a1608[See Customized Name Mapping].
+<<Customized Name Mapping>>.
 * *package name*: The name obtained by
 inheriting `_packgeName_` from a scope that covers this schema element and
-mapping _packageName_ as specified in link:jaxb.html#a1608[See
-Customized Name Mapping].
+mapping _packageName_ as specified in <<Customized Name Mapping>>.
 * *enumclass javadoc*: `_enumClassJavaDoc_` if
 defined, customizes the `class/interface section`
-(link:jaxb.html#a2145[See Javadoc Sections]) for the enumeration
-class, as specified in link:jaxb.html#a2163[See Javadoc
-Customization].
+(<<Javadoc Sections>>) for the enumeration
+class, as specified in <<Javadoc Customization>>.
 * *enum constant set*: Each member of the set
 is computed as follows:
 ** *name*: If _enumMemberName_ is defined, the
 name obtained by mapping _enumMemberName_ as specified in
-link:jaxb.html#a1608[See Customized Name Mapping].
+<<Customized Name Mapping>>.
 ** *javadoc*: `_enumMemberJavaDoc_` if defined,
-customizes the `field section` (link:jaxb.html#a2145[See
-Javadoc Sections]” ) for the enumeration class, as specified in
-link:jaxb.html#a2163[See Javadoc Customization].
+customizes the `field section` (<<Javadoc Sections>>)
+for the enumeration class, as specified in
+<<Javadoc Customization>>.
 
 ==== Customizable Schema Elements
 
@@ -2484,7 +2442,7 @@
 `_xs:date_`, `_xs:time_`, `_xs:dateTime_`, `_xs:duration_`, `_xs:gDay_`, `_xs:gMonth_`,
 `_xs:gYear_`, `_xs:gMonthDay_`, `_xs:gYearMonth_`, `_xs:IDREF_`, `_xs:ID_`, it must result
 in an invalid customization as specified in
-link:jaxb.html#a1544[See Invalid Customizations]. Since most
+<<Invalid Customizations>>. Since most
 of these Xml datatypes bind to a mutable Java type, instances of these
 Java types are not sufficient to be an immutable value of an enum
 constant.
@@ -2499,7 +2457,7 @@
 
 ====
 
-*_Example 1:_* typesafeEnum Customization: Split Inline Annotation +
+*_Example 1:_* [[ex1, Example 1]]typesafeEnum Customization: Split Inline Annotation +
 
 XML Schema fragment:
 
@@ -2535,7 +2493,7 @@
 };
 ----
 
-*_Example 2:_* typesafeEnum Customization: External Binding Declaration +
+*_Example 2:_* [[ex2, Example 2]]typesafeEnum Customization: External Binding Declaration +
 
 The following example shows how to customize
 the above XML schema fragment using an external binding syntax.
@@ -2552,7 +2510,7 @@
 `<typesafeEnumMember>`. This identifies the enumeration member to which
 `<typesafeEnumMember>` applies.
 
-*_Example 3:_* typesafeEnum Customization: Combined Inline Annotation +
+*_Example 3:_* [[ex3, Example 3]]typesafeEnum Customization: Combined Inline Annotation +
 
 The following example shows how to customize
 the above XML schema fragment using inline annotation which does not
@@ -2643,8 +2601,7 @@
 java.lang.String, representing text info. These mixed bindings might be
 more easily processed solely as one form, namely as an XML fragment
 represented as DOM. This customization also meets a Jakarta XML Web Services
-databinding requirement from link:jaxb.html#a179[See Disabling
-Databinding]”.
+databinding requirement from <<Disabling Databinding>>.
 
 ==== Usage
 
@@ -2691,8 +2648,7 @@
 component is annotated with a `dom` customization and that XML schema
 component can contain character data information due to its parent
 complex type definition being defined with mixed content, character data
-information is handled as specified in link:jaxb.html#a1369[See
-Bind mixed content].
+information is handled as specified in <<Bind mixed content>>.
 
 The dom customization allows one to disable
 databinding and process a part of a document using other technologies
@@ -2751,8 +2707,7 @@
 
 The `<inlineBinaryData>` customization
 provides declarative control over the optimization for binary data
-described in link:jaxb.html#a5109[See Appendix],
-link:jaxb.html#a5110[See Enhanced Binary Data Handling].
+described in <<Enhanced Binary Data Handling>>.
 
 ==== Usage
 
@@ -2785,7 +2740,7 @@
 The `<factoryMethod>` customization provides
 declarative control over an element or type factory method name
 generated in a package’s `ObjectFactory` class introduced in
-link:jaxb.html#a482[See Java Package]. This customization is
+<<Java Package>>. This customization is
 useful to resolve name collisions between factory methods in the
 schema-derived `ObjectFactory` class.
 
@@ -2815,8 +2770,8 @@
 
 The usage constraints on `<factoryMethod>`
 are specified below. Any constraint violation must result in an invalid
-customization as specified in link:jaxb.html#a1544[See Invalid
-Customizations].” The usage constraints are:
+customization as specified in <<Invalid Customizations>>.
+The usage constraints are:
 
 . `<factoryMethod>` is only allowed to
 annotate an element declaration or a type definition.
diff --git a/spec/src/main/asciidoc/ch08-java_types.adoc b/spec/src/main/asciidoc/ch08-java_types.adoc
index e5b2bb1..91ed512 100644
--- a/spec/src/main/asciidoc/ch08-java_types.adoc
+++ b/spec/src/main/asciidoc/ch08-java_types.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Java Types To XML
@@ -113,8 +113,7 @@
 applications are legacy applications consisting of classes that follow
 different class designs. The annotations and default mapping are
 designed to enable such classes to be mapped to schema with minimal
-changes to existing code. See link:jaxb.html#a3676[See Default
-Mapping] for default mapping.
+changes to existing code. See <<Default Mapping>> for default mapping.
 
 *_Class_* A class usually maps to a complex type.
 However, using `@XmlValue` annotation, a class can also be mapped to a
@@ -150,7 +149,7 @@
 For example, `HashMap` can have different XML serialized forms which
 differ in trade-offs made between memory and speed or specificity and
 generality. The XML serialization form can be customized using
-`@XmlJavaTypeAdapter` (link:jaxb.html#a2278[See Adapter]).
+`@XmlJavaTypeAdapter` (<<adapter>>).
 
 *_Collection serialized forms_* A collection type
 can be mapped to a XML Schema complex type and collection item is mapped
@@ -334,10 +333,10 @@
 ==== Java Primitive types
 
 The default mapping of Java types (and their
-wrapper classes) specified in table link:jaxb.html#a2310[See
-Mapping: Java Primitive types to Schema Types] must be supported.
+wrapper classes) specified in table <<a2310>> must be supported.
 
 .Mapping: Java Primitive types to Schema Types
+[[a2310]]
 [cols=",",options="header"]
 |===
 | Java Primitive Type | XML data type
@@ -352,11 +351,10 @@
 
 ==== Java Standard Classes
 
-The default mapping of Java classes specified
-in link:jaxb.html#a2329[See Mapping of Standard Java classes]
-must be supported.
+The default mapping of Java classes specified in <<a2329>> must be supported.
 
 .Mapping of Standard Java classes
+[[a2329]]
 [cols=",",options="header"]
 |===
 | Java Class | XML data type
@@ -564,9 +562,8 @@
 ===== Mapping
 
 If `location()` is "", a package annotated
-with `@XmlSchema` must be mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace]. Otherwise a package will not produce any schema document.
+with `@XmlSchema` must be mapped as specified in <<a2476>>.
+Otherwise a package will not produce any schema document.
 
 [NOTE]
 .Design Note
@@ -597,6 +594,7 @@
 ====
 
 .Table 8-3 Mapping: Package to XML target namespace
+[[a2476]]
 [cols=","]
 |===
 | `targetNamespace` | if `@XmlSchema.namespace()` is "", then `absent;` +
@@ -644,7 +642,7 @@
 `@XmlJavaTypeAdapters`. It can also be used with the following
 annotations at the package level: `@XmlJavaTypeAdapter`.
 
-See link:jaxb.html#a3676[See Default Mapping].
+See <<Default Mapping>>.
 
 ==== @XmlAccessorOrder
 
@@ -820,8 +818,7 @@
 ===== Mapping
 
 Each `@XmlSchemaType` annotation in
-`@XmlSchemaTypes.value()` must be mapped as specified in
-link:jaxb.html#a2520[See @XmlSchemaType].
+`@XmlSchemaTypes.value()` must be mapped as specified in <<xmlschematype>>.
 
 === Java class
 
@@ -865,10 +862,10 @@
 * if `@XmlType.propOrder` is not {} or {""},
 then the set must include all of the properties and fields mapped to
 particles as specified in:
-** link:jaxb.html#a2898[See @XmlElement]
-** link:jaxb.html#a3019[See @XmlElements]
-** link:jaxb.html#a3049[See @XmlElementRef]
-** link:jaxb.html#a3112[See @XmlElementRefs]
+** <<xmlelement>>
+** <<xmlelements>>
+** <<xmlelementref>>
+** <<xmlelementrefs>>
 * `@XmlType.propOrder` must not include a
 field or property annotated with `@XmlTransient`.
 * if the class, _subClass_, derives from another
@@ -887,30 +884,27 @@
 A class annotated with `@XmlType`, must be
 mapped as specified below:
 
-* class must be mapped as specified in
-link:jaxb.html#a2678[See Mapping: Class to Simple Type
-Definition] if the class contains only one mapped property or field that
-is annotated with `@XmlValue` as specified in
-link:jaxb.html#a3331[See @XmlValue].
-* otherwise, the class must be mapped as
-specified in link:jaxb.html#a2611[See Mapping: Class to Complex
-Type Definition].
+* class must be mapped as specified in <<a2678>>
+if the class contains only one mapped property or field that
+is annotated with `@XmlValue` as specified in <<xmlvalue>>.
+* otherwise, the class must be mapped as specified in <<a2611>>.
 
 .Table 8-4 Mapping: Class to Complex Type Definition
+[[a2611]]
 [cols=","]
 |===
 | `{name}` | if `@XmlType.name()` is "", then absent +
  +
 otherwise if `@XmlType.name()` is `##default`, then
 the XML name derived from the class name as
-specified in link:jaxb.html#a3678[See Java Identifier To XML Name]  +
+specified in <<Java Identifier To XML Name>>  +
  +
 otherwise `@XmlType.name()`
 
 | `{target namespace}` | if `@XmlType.namespace()` is `\\##default`
 && `@XmlType.name()` is "" and class is annotated with
 `@XmlRootElement`, then the `{target namespace}` as specified in
-link:jaxb.html#a2742[See Mapping: Class to Element Declaration] +
+<<a2742>> +
  +
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is "" and class is not annotated with
@@ -921,15 +915,13 @@
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is not "", then the namespace to
 which the package, in which class is defined, is mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace] +
+<<a2476>> +
  +
 otherwise `@XmlType.namespace()`
 
 | `{base type definition}` a| if the class contains a mapped property or
-field annotated with `@XmlValue` as specified in
-link:jaxb.html#a3331[See @XmlValue], then the schema type to
-which mapped property or field’s type is mapped. +
+field annotated with `@XmlValue` as specified in <<xmlvalue>>,
+then the schema type to which mapped property or field’s type is mapped. +
  +
 otherwise schema type to which the nearest
 XML-bound ancestor class is mapped +
@@ -962,31 +954,29 @@
 otherwise `false`.
 
 | `{attribute uses}` | The set of properties or fields mapped to
-attributes as specified in link:jaxb.html#a3230[See @XmlAttribute].
+attributes as specified in <<xmlattribute>>.
 
-| `{attribute wildcard}` | Attribute wildcard as specified in
-link:jaxb.html#a3303[See XmlAnyAttribute].
+| `{attribute wildcard}` | Attribute wildcard as specified in <<xmlanyattribute>>.
 
 | `{content type}` a|
 . empty if no mapped property or field is
 annotated with `@XmlElement`
 . `mixed` if a property or field is annotated
-with _@XmlMixed_ as specified in link:jaxb.html#a3449[See
-@XmlMixed].
+with _@XmlMixed_ as specified in <<xmlmixed>>.
 . `simpleContent` if :
 .. no property or field is annotated with `@XmlElement`
 .. && one or more properties or fields is annotated with `@XmlAttribute`
 .. && one property is annotated with `@XmlValue`.
 . `element-only content` if one or more
 properties is annotated with `@XmlElement`; +
-`content model` mapped as specified in link:jaxb.html#a2662[See
-Mapping: Class body to Model Group Component].
+`content model` mapped as specified in <<a2662>>.
 
 | `{prohibited substitutions}` | `empty set`
 | `{annotations}` | `absent`
 |===
 
 .Table 8-5 Mapping: Class body to Model Group Component
+[[a2662]]
 [cols=","]
 |===
 | `{compositor}` | if `@XmlType.propOrder()` is {} then `xs:all`; +
@@ -1000,7 +990,7 @@
 `@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)` is specified at the
 package level and class is not annotated with
 `@XmlAccessorOrder(XmlAccessOrder.UNDEFINED)`, then alphabetical order
-as specified in link:jaxb.html#a2506[See @XmlAccessorOrder]. +
+as specified in <<xmlaccessororder>>. +
  +
 otherwise order is unspecified.
 
@@ -1011,20 +1001,20 @@
 |===
 
 .Table 8-6 Mapping: Class to Simple Type Definition
+[[a2678]]
 [cols=",,"]
 |===
 | `{name}` 2.+| if `@XmlType.name()` is "", then absent +
  +
 otherwise if `@XmlType.name()` is `##default`, then the XML name derived from the class name
-as specified in link:jaxb.html#a3678[See Java Identifier To XML
-Name] +
+as specified in <<Java Identifier To XML Name>> +
  +
 otherwise `@XmlType.name()`
 
 | `{target namespace}` 2.+| if `@XmlType.namespace()` is `\\##default`
 && `@XmlType.name()` is "" and class is annotated with
 `@XmlRootElement`, then the `{target namespace}` as specified in
-link:jaxb.html#a2742[See Mapping: Class to Element Declaration] +
+<<a2742>> +
  +
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is "" and class is not annotated with
@@ -1035,15 +1025,14 @@
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is not "", then the namespace to
 which the package, in which class is defined, is mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace] +
+<<a2476>> +
  +
 otherwise `@XmlType.namespace()`
 
 | `{base type definition}` 2.+| ur-type definition, `xs:anyType`. +
  +
 NOTE: This is subject to the mapping
-constraints on XmlType. See link:jaxb.html#a2591[See Mapping].
+constraints on XmlType. See <<mapping-6>>.
 
 | `{facets}` 2.+| `empty set`
 | `{fundamental facets}` 2.+| derived
@@ -1065,7 +1054,7 @@
 
 * generic list
 * indexed property
-* single dimensional array link:jaxb.html#a3800[See @XmlType: List simple type]
+* single dimensional array <<xmltype-list-simple-type>>
 
 | | union +
 `{member type definitions}` | Not mapped.
@@ -1099,28 +1088,27 @@
 `@XmlAcessorOrder`.
 
 A class annotated with `@XmlRootElement`
-annotation, must be mapped as specified in
-link:jaxb.html#a2742[See Mapping: Class to Element Declaration].
+annotation, must be mapped as specified in <<a2742>>.
 
 .Table 8-7 Mapping: Class to Element Declaration
+[[a2742]]
 [cols=","]
 |===
 | `{name}` | if `@XmlRootElement.name()` is `##default`,
 then the XML name derived from the class name as specified in
-link:jaxb.html#a3678[See Java Identifier To XML Name]; +
+<<Java Identifier To XML Name>>; +
  +
 otherwise `@XmlRootElement.name()`
 
 | `{target namespace}` | if `@XmlRootElement.namespace()` is `##default`,
 then the value of the `targetNamespace` to which the
 package containing the class is mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace] +
+<<a2476>> +
  +
 otherwise `@XmlRootElement.namespace()`
 
 | `{type definition}` | schema type to which the class is mapped as
-specified in link:jaxb.html#a2578[See @XmlType].
+specified in <<xmltype-2>>.
 
 | `{scope}` | `global`
 | `{value constraint}` | `absent`
@@ -1170,13 +1158,12 @@
 class.)
 
 For the effect that this annotation causes on
-derived classes, see link:jaxb.html#a2611[See Mapping: Class to
-Complex Type Definition].
+derived classes, see <<a2611>>.
 
 Note that a class with`@XmlTransient` may
 still have properties and fields with JAXB annotations. Those are mapped
-to XML when a derived class is mapped to XML. See section
-link:jaxb.html#a2876[See Property And Field] for more details.
+to XML when a derived class is mapped to XML. See <<Property And Field>>
+for more details.
 
 The following mapping constraints must be enforced:
 
@@ -1223,6 +1210,7 @@
 * `@XmlEnum.value()` must be mapped to a XML schema simple type.
 
 .Table 8-8 Mapping: Enum type to Base Type Definition
+[[a3331]]
 [cols=",a"]
 |===
 | `{base type definition}` | schema type to which `@XmlEnum.value()` is mapped.
@@ -1257,6 +1245,7 @@
 * `@XmlEnumValue.value()` must have a valid lexical representation for `@XmlEnum.value()`.
 
 .Table 8-9 Mapping: Enum constant to Enumeration Schema Component
+[[a3230]]
 [cols=","]
 |===
 | `{value}` |  `@XmlEnumValue.value()`
@@ -1291,21 +1280,21 @@
 must be ignored; they are not meaningful when used to annotate an enum
 type.
 
-.Table 8-10 Mapping: Enum type to Simple Tpe Definition
+.Table 8-10 Mapping: Enum type to Simple Type Definition
 [cols=","]
 |===
 | `{name}` | if `@XmlType.name()` is "", then absent +
  +
 otherwise if `@XmlType.name()` is `##default`, then
 the XML name derived from the class name as
-specified in link:jaxb.html#a3678[See Java Identifier To XML Name]  +
+specified in <<Java Identifier To XML Name>>  +
  +
 otherwise `@XmlType.name()`
 
 | `{target namespace}` | if `@XmlType.namespace()` is `\\##default`
 && `@XmlType.name()` is "" and enum type is annotated with
 `@XmlRootElement`, then the `{target namespace}` as specified in
-link:jaxb.html#a2742[See Mapping: Enum type to Element Declaration] +
+<<a2742>> +
  +
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is "" and enum type is not annotated with
@@ -1316,22 +1305,18 @@
 otherwise if `@XmlType.namespace()` is `##default` && `@XmlType.name()`
 is not "", then the namespace to
 which the package, in which enum type is defined, is mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace] +
+<<a2476>> +
  +
 otherwise `@XmlType.namespace()`
 
-| `{base type definition}` a| Mapped as specified in
-link:jaxb.html#a3331[See Mapping: Enum type to Base Type Definition].
+| `{base type definition}` a| Mapped as specified in <<a3331>>.
 
-| `{variety}` a| Mapped as specified in
-link:jaxb.html#a3331[See Mapping: Enum type to Base Type Definition].
+| `{variety}` a| Mapped as specified in <<a3331>>.
 
 | `{final}` | `extension, restriction, list, union`.
 
 | `{facets}` | the set constructed by mapping each enum constant
-to an enumeration schema component as specified in
-link:jaxb.html#a3230[See Mapping: Enum constant to Enumeration Schema Component].
+to an enumeration schema component as specified in <<a3230>>.
 
 | `{fundamental facets}` | `empty set`
 | `{annotations}` | `unspecified`
@@ -1350,32 +1335,29 @@
 annotation are: `@XmlType`, `@XmlEnum`, `@XmlAccessorType`,
 `@XmlAcessorOrder`. +
 Note that `@XmlAccessorType` and `@XmlAccessorOrder`
-while allowed will be ignored by the constraint in
-link:jaxb.html#a2837[See Mapping].
+while allowed will be ignored by the constraint in <<Mapping>>.
 
-The mapping must be performed as specified in
-link:jaxb.html#a2846[See Mapping: Enum type to Element
-Declaration].
+The mapping must be performed as specified in <<a2846>>.
 
 .Table 8-11 Mapping: Enum type to Element Declaration
+[[a2846]]
 [cols=","]
 |===
 | `{name}` | if `@XmlRootElement.name()` is `"##default"`,
 then the XML name derived from the enum type name as specified in
-link:jaxb.html#a3678[See Java Identifier To XML Name];
+<<Java Identifier To XML Name>>;
 
 otherwise `@XmlRootElement.name()`
 
 | `{target namespace}` | if `@XmlRootElement.namespace()` is `"##default"`,
 then the value of the targetNamespace to which the
 package containing the class is mapped as specified in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace]
+<<a2476>>
 
 otherwise `@XmlRootElement.namespace()`
 
 | `{type definition}` | schema type to which the class is mapped as
-specified in link:jaxb.html#a2578[See @XmlType].
+specified in <<xmltype-2>>.
 
 | `{scope}` | `global`
 | `{value constraint}` | `absent`
@@ -1475,12 +1457,10 @@
 
 * If `@XmlElement.namespace()` is not `"##default"`
 and different from the `{target namespace}` of the
-enclosing class, then it must be mapped as specified in
-link:jaxb.html#a2941[See Mapping: Property/field to Particle - ref attribute].
+enclosing class, then it must be mapped as specified in <<a2941>>.
 * If property is single valued, and it’s type
 is annotated with `@XmlRootElement` and `@XmlType.name() = ""`, then the
-property must be mapped as specified in link:jaxb.html#a2941[See
-Mapping: Property/field to Particle - ref attribute].
+property must be mapped as specified in <<a2941>>.
 +
 [NOTE]
 .Design Note
@@ -1521,9 +1501,7 @@
         <element ref="foo" minOccurs="0">
 ----
 ====
-* otherwise, it must be mapped as
-link:jaxb.html#a2959[See Mapping: Property/field to Particle -
-no ref attribute].
+* otherwise, it must be mapped as <<a2959>>.
 
 [NOTE]
 .Design Note
@@ -1533,6 +1511,7 @@
 ====
 
 .Table 8-12 Mapping: Property/field to Particle - ref attribute
+[[a2941]]
 [cols=","]
 |===
 | `{min occurs}` | if `@XmlElement.required()` is `true`, then `1`
@@ -1547,10 +1526,8 @@
 
 otherwise `unbounded`.
 
-| `{term}` a| element declaration as specified in
-link:jaxb.html#a2973[See Mapping: Property/field to Element
-declaration] with the following overrides for the abstract schema
-component properties: +
+| `{term}` a| element declaration as specified in <<a2973>>
+with the following overrides for the abstract schema component properties: +
 `{scope}` is `global` +
 `{value constraint}` is `absent` +
 `{type definition}` is `xs:anyType` if the
@@ -1564,6 +1541,7 @@
 |===
 
 .Table 8-13 Mapping: Property/field to Particle - no ref attribute
+[[a2959]]
 [cols=","]
 |===
 | `{min occurs}` | if `@XmlElement.required()` is `true`, then `1`
@@ -1578,17 +1556,16 @@
 
 otherwise `unbounded`.
 
-| `{term}` | must be mapped as specified in
-link:jaxb.html#a2973[See Mapping: Property/field to Element
-declaration].
+| `{term}` | must be mapped as specified in <<a2973>>.
 |===
 
 .Table 8-14 Mapping: Property/field to Element declaration
+[[a2973]]
 [cols=","]
 |===
 | `{name}` | if `@XmlElement.name()` is `"##default"`, then
 the XML name derived from the property or field name as specified in
-link:jaxb.html#a3678[See Java Identifier To XML Name];
+<<Java Identifier To XML Name>>;
 
 otherwise `@XmlElement.name()`
 
@@ -1608,20 +1585,17 @@
 then the schema type to which `@XmlElement.type()` is mapped.
 
 otherwise if annotated with `@XmlList`, schema
-type derived by mapping as specified in link:jaxb.html#a3399[See
-@XmlList]
+type derived by mapping as specified in <<xmllist>>
 
 otherwise if annotated with `@XmlValue`,
-schema type derived by mapping as specified in
-link:jaxb.html#a3331[See @XmlValue]
+schema type derived by mapping as specified in <<xmlvalue>>
 
 otherwise if annotated with `@XmlID`, the
-schema type derived by mapping as specified in
-link:jaxb.html#a3377[See @XmlID]
+schema type derived by mapping as specified in <<xmlid>>
 
 otherwise if annotated with `@XmlIDREF`, the
 schema type derived by mapping as specified in
-link:jaxb.html#a3387[See @XmlIDREF]
+<<xmlidref>>
 
 otherwise if the property or field is a
 collection type, then the schema type derived by mapping the collection
@@ -1631,8 +1605,7 @@
 the property is mapped.
 
 | `{scope}` | complex type to which the property’s or the
-field’s containing class is mapped as specified in
-link:jaxb.html#a2456[See @XmlSchema].
+field’s containing class is mapped as specified in <<xmlschema>>.
 
 | `{value constraint}` | if `@XmlElement.defaultValue()` is `"\u0000"` then `absent`
 
@@ -1683,35 +1656,29 @@
 The property or field must be mapped as follows:
 
 * If the size of `@XmlElements.value()` is `1`,
-then the property must be mapped as specified in
-link:jaxb.html#a2898[See @XmlElement].
-* otherwise it must be mapped as specified in
-link:jaxb.html#a3034[See Mapping: List of types to choice
-particle].
+then the property must be mapped as specified in <<xmlelement>>.
+* otherwise it must be mapped as specified in <<a3034>>.
 
 
 
 .Table 8-15 Mapping: List of types to choice particle
+[[a3034]]
 [cols=","]
 |===
 | `{min occurs}` | `0`
 | `{max occurs}` | `unbounded`
-| `{term}` | If `{particles}` row in
-link:jaxb.html#a3042[See Mapping: List of types to choice model
-group of elements] results in a single particle, then that single
-particle. Otherwise mapped as specified in
-link:jaxb.html#a3042[See Mapping: List of types to choice model
-group of elements]
+| `{term}` | If `{particles}` row in <<a3042>> results in a single particle,
+then that single particle. Otherwise mapped as specified in <<a3042>>
 |===
 
 
 .Table 8-16 Mapping: List of types to choice model group of elements
+[[a3042]]
 [cols=","]
 |===
 | `{compositor}` | `choice`
 | `{particles}` | set obtained by mapping each `@XmlElement` in
-`@XmlElements.value()` as specified in link:jaxb.html#a2973[See
-Mapping: Property/field to Element declaration].
+`@XmlElements.value()` as specified in <<a2973>>.
 | `{annotation}` | `unspecified`
 |===
 
@@ -1754,28 +1721,24 @@
 `@XmlElementRef` annotation must be mapped as follows:
 
 * if the type of the property or field is
-single valued property, then it must be mapped as specified in
-link:jaxb.html#a3078[See Mapping: Property/field (property type
-single valued) to Particle with ref attribute]
+single valued property, then it must be mapped as specified in <<a3078>>
 * otherwise (the type of the property or field
-is a parametric type), then it must be mapped as specified in
-link:jaxb.html#a3097[See Mapping: Property/Field (parametric
-type) to choice particle].
+is a parametric type), then it must be mapped as specified in <<a3097>>.
 
 
 .Table 8-17 Mapping: Property/field (property type single valued) to Particle with ref attribute
+[[a3078]]
 [cols=","]
 |===
 | `{min occurs}` | if `@XmlElementRef.required()` is `true` ,then `1`;
 
 otherwise `0`
 | `{max occurs}` | `1`
-| `{term}` | must be mapped as specified in
-link:jaxb.html#a3085[See Mapping: Property/field to Element
-declaration with ref attribute].
+| `{term}` | must be mapped as specified in <<a3085>>.
 |===
 
 .Table 8-18 Mapping: Property/field to Element declaration with ref attribute
+[[a3085]]
 [cols=","]
 |===
 
@@ -1803,28 +1766,24 @@
 |===
 
 .Table 8-19 Mapping: Property/Field (parametric type) to choice particle
+[[a3097]]
 [cols=","]
 |===
 
 | `{min occurs}` | `0`
 | `{max occurs}` | `unbounded`
-| `{term}` | If `{particles}` row in
-link:jaxb.html#a3105[See Mapping: Property/field (parametric
-type) to choice model group of element refs] results in single particle,
-then that single particle. Otherwise mapped as specified in
-link:jaxb.html#a3105[See Mapping: Property/field (parametric
-type) to choice model group of element refs]
+| `{term}` | If `{particles}` row in <<a3105>> results in single particle,
+then that single particle. Otherwise mapped as specified in <<a3105>>
 |===
 
 .Table 8-20 Mapping: Property/field (parametric type) to choice model group of element refs
+[[a3105]]
 [cols=","]
 |===
 | `{compositor}` | `choice`
 | `{particles}` | set obtained by visiting parametric type and
 each of its derived types and if annotated with @XmlRootElement, then
-mapping the @XmlRootElement as specified in as specified in
-link:jaxb.html#a3085[See Mapping: Property/field to Element
-declaration with ref attribute].
+mapping the @XmlRootElement as specified in as specified in <<a3085>>.
 
 | `{annotation}` | `unspecified`
 |===
@@ -1850,35 +1809,30 @@
 `@XmlJavaTypeAdapter`.
 
 The property or field must be mapped as
-specified in link:jaxb.html#a3124[See Mapping: List of element
-instances to choice particle].
+specified in <<a3124>>.
 
 
 .Table 8-21 Mapping: List of element instances to choice particle
+[[a3124]]
 [cols=","]
 |===
 | `{min occurs}` | `0`
 | `{max occurs}` | `unbounded`
-| `{term}` | If the `{particles}` row in
-link:jaxb.html#a3132[See Mapping: List of element instances to
-choice model group of element refs] results in a single particle, then
-that single particle. Otherwise mapped as specified in
-link:jaxb.html#a3132[See Mapping: List of element instances to
-choice model group of element refs]
+| `{term}` | If the `{particles}` row in <<a3132>> results in a single particle,
+then that single particle. Otherwise mapped as specified in <<a3132>>
 |===
 
 .Table 8-22 Mapping: List of element instances to choice model group of element refs
+[[a3132]]
 [cols=","]
 |===
 | `{compositor}` | `choice`
 | `{particles}` a| set obtained by mapping
 
 * each `@XmlElementRef` in
-`@XmlElementRefs.value()` as specified in
-link:jaxb.html#a3049[See @XmlElementRef].
-* if property is annotated with
-`@XmlAnyElement`, then the particle obtained by mapping as specified in
-link:jaxb.html#a3210[See @XmlAnyElement]
+`@XmlElementRefs.value()` as specified in <<xmlelementref>>.
+* if property is annotated with `@XmlAnyElement`,
+then the particle obtained by mapping as specified in <<xmlanyelement>>
 
 | `{annotation}` | `unspecified`
 |===
@@ -1910,15 +1864,12 @@
 The property or field must be mapped as follows:
 
 * If `@XmlElementWrapper.namespace()` is not `"##default"`
-and different from the `{target namespace}` of the
-enclosing class, then it must be mapped as specified as specified in
-link:jaxb.html#a3202[See Mapping: Property/field Element Wrapper
-with ref attribute].
-* otherwise, it must be mapped as
-link:jaxb.html#a3158[See Mapping: Property/field to Particle for
-Element Wrapper].
+and different from the `{target namespace}` of the enclosing class,
+then it must be mapped as specified as specified in <<a3202>>.
+* otherwise, it must be mapped as <<a3158>>.
 
 .Table 8-23 Mapping: Property/field to Particle for Element Wrapper
+[[a3158]]
 [cols=","]
 |===
 | `{min occurs}` | if `@XmlElementWrapper.nillable()` is `true` or
@@ -1927,18 +1878,16 @@
 otherwise `0`
 
 | `{max occurs}` | `1`
-| `{term}` | must be mapped as specified in
-link:jaxb.html#a3167[See Mapping: Property/field to Element
-Declaration for Element Wrapper].
+| `{term}` | must be mapped as specified in <<a3167>>.
 |===
 
-.Table 8-24 Mapping: Property/field to Element Declaration for Element Wrapper [[a3167]]
+.Table 8-24 Mapping: Property/field to Element Declaration for Element Wrapper
+[[a3167]]
 [cols=","]
 |===
 | `{name}` | if `@XmlElementWrapper.name()` is `"##default"`,
 then the XML name derived from the property or field name
-as specified in link:jaxb.html#a3678[See Java Identifier To XML
-Name];
+as specified in <<Java Identifier To XML Name>>;
 
 otherwise `@XmlElementWrapper.name()`
 
@@ -1952,14 +1901,10 @@
 otherwise `@XmlElementWrapper.namespace()`
 
 | `{type definition}` | if property/field is annotated with
-`@XmlElementRef` or `@XmlElementRefs` then the schema type as specified
-in link:jaxb.html#a3124[See Mapping: List of element instances
-to choice particle]
+`@XmlElementRef` or `@XmlElementRefs` then the schema type as specified in <<a3124>>
 
 otherwise if property/field is annotated with
-`@XmlElement` or `@XmlElements` then the schema type as specified
-inlink:jaxb.html#a3034[See Mapping: List of types to choice
-particle].
+`@XmlElement` or `@XmlElements` then the schema type as specified <<a3034>>.
 
 | `{scope}` | complex type to which the property’s or the
 field’s containing class is mapped.
@@ -1974,6 +1919,7 @@
 |===
 
 .Table 8-25 Mapping: Property/field Element Wrapper with ref attribute
+[[a3202]]
 [cols=","]
 |===
 | `{min occurs}` | `1`
@@ -2016,10 +1962,10 @@
 `@XmlAnyElement`.
 
 The property or field must be mapped as
-specified in link:jaxb.html#a3223[See Mapping: Wildcard schema
-component for wildcard (xs:any)].
+specified in <<a3223>>.
 
 .Table 8-26 Mapping: Wildcard schema component for wildcard (xs:any)
+[[a3223]]
 [cols=","]
 |===
 | `{namespace constraint}` | `##other`
@@ -2089,16 +2035,13 @@
 * If `@XmlAttribute.namespace()` is not
 `"##default"` and differs from the `{target namespace}` of the schema
 type to which the type containing the property or field is mapped, then
-the property or field must be mapped as specified in
-link:jaxb.html#a3255[See Mapping: Property/field to Attribute
-Use (with ref attribute)].
-* otherwise, it must be mapped as specified in
-link:jaxb.html#a3266[See Mapping: Property/field to Attribute
-Use (no ref attribute)].
+the property or field must be mapped as specified in <<a3255>>.
+* otherwise, it must be mapped as specified in <<a3266>>.
 
 
 
 .Table 8-27 Mapping: Property/field to Attribute Use (with ref attribute)
+[[a3255]]
 [cols=","]
 |===
 | `{required}` | `@XmlAttribute.required()`
@@ -2115,12 +2058,11 @@
 |===
 
 .Table 8-28 Mapping: Property/field to Attribute Use (no ref attribute)
+[[a3266]]
 [cols=","]
 |===
 | `{required}` | `@XmlAttribute.required()`
-| `{attribute declaration}` | Mapped as specified in
-link:jaxb.html#a3276[See Mapping: Property/field to Attribute
-Declaration]
+| `{attribute declaration}` | Mapped as specified in <<a3276>>
 
 | `{value constraint}` | if field has access modifiers public and
 static then the `fixed`
@@ -2130,32 +2072,29 @@
 
 
 .Table 8-29 Mapping: Property/field to Attribute Declaration
+[[a3276]]
 [cols=","]
 |===
 | `{name}` | if `@XmlAttribute.name()` is `"##default"`, then
 the XML name derived from the property or field name as specified in
-link:jaxb.html#a3678[See Java Identifier To XML Name];
+<<Java Identifier To XML Name>>;
 
 otherwise `@XmlAttribute.name()`.
 
 | `{target namespace}` | if `@XmlAttribute.namespace()` is `"##default"`,
-then value of targetNamespace in
-link:jaxb.html#a2476[See Mapping: Package to XML target
-namespace];
+then value of targetNamespace in <<a2476>>;
 
 otherwise `@XmlAttribute.namespace()`
 
 | `{type definition}` | if annotated with `@XmlList`, schema type
-derived by mapping as specified in link:jaxb.html#a3399[See
-@XmlList]
+derived by mapping as specified in <<xmllist>>
 
 otherwise if annotated with `@XmlID`, the
 schema type derived by mapping as specified in
-link:jaxb.html#a3377[See @XmlID]
+<<xmlid>>
 
 otherwise if annotated with `@XmlIDREF`, the
-schema type derived by mapping as specified in
-link:jaxb.html#a3387[See @XmlIDREF]
+schema type derived by mapping as specified in <<xmlidref>>
 
 otherwise if the type of the property is a
 collection type, then the schema type derived by mapping the collection
@@ -2196,10 +2135,10 @@
 `@XmlJavaTypeAdapter`.
 
 The property or field must be mapped as
-specified in link:jaxb.html#a3313[See Mapping: Wildcard schema
-component for Attribute Wildcard].
+specified in <<a3313>>.
 
 .Table 8-30 Mapping: Wildcard schema component for Attribute Wildcard
+[[a3313]]
 [cols=","]
 |===
 | `{namespace constraint}` | `##other`
@@ -2270,12 +2209,12 @@
 
 * If the type of the property or field is a
 collection type, then the type must be must be mapped as specified in
-link:jaxb.html#a3353[See @XmlValue: Mapping to list simple
-type].
+<<a3353>>.
 * Otherwise, the schema type to which the type
 of the property or field is mapped.
 
 .Table 8-31 @XmlValue: Mapping to list simple type
+[[a3353]]
 [cols=","]
 |===
 | `{name}` | `absent`
@@ -2292,14 +2231,14 @@
 collection type
 
 * if annotated with `@XmlIDREF`, then
-`xs:IDREF` as specified in link:jaxb.html#a3387[See @XmlIDREF]
+`xs:IDREF` as specified in <<xmlidref>>
 * otherwise the schema type to which the
 collection item type is mapped.
 
 otherwise
 
 * if annotated with `@XmlIDREF`, then
-`xs:IDREF` as specified in link:jaxb.html#a3387[See @XmlIDREF]
+`xs:IDREF` as specified in <<xmlidref>>
 * otherwise the schema type to which the type
 of the property, field or the parameter is mapped.
 
@@ -2419,10 +2358,10 @@
 `@XmlIDREF`, `@XmlJavaTypeAdapter`.
 
 The type of the property or field must be
-mapped as specified in link:jaxb.html#a3428[See @XmlList:
-Mapping to list simple type].
+mapped as specified in <<a3428>>.
 
 .Table 8-32 @XmlList: Mapping to list simple type
+[[a3428]]
 [cols=","]
 |===
 | `{name}` | `absent`
@@ -2436,7 +2375,7 @@
 | `{final}` | `#all`
 | `{variety}` | list
 | `{item type definition}` | if annotated with `@XmlIDREF`, then `xs:IDREF`
-as specified in link:jaxb.html#a3387[See @XmlIDREF]
+as specified in <<xmlidref>>
 
 otherwise the schema type to which the
 collection item type is mapped.
@@ -2527,7 +2466,7 @@
 The annotations in this section are intended
 primarily for use by schema compiler in annotating element factory
 methods in the schema derived ObjectFactory class
-(link:jaxb.html#a482[See Java Package]). They are not expected
+(<<Java Package>>). They are not expected
 to be used when mapping existing classes to schema.
 
 ==== @XmlElementDecl
@@ -2558,9 +2497,8 @@
 
 The following mapping constraints must be enforced:
 
-* annotation can only be used on an _element factory method_
-(link:jaxb.html#a482[See Java Package]). The
-annotation creates a mapping between an XML schema element declaration
+* annotation can only be used on an _element factory method_ (<<Java Package>>).
+The annotation creates a mapping between an XML schema element declaration
 and a element factory method that returns a `JAXBElement` instance
 representing the element declaration. Typically, the element factory
 method is generated (and annotated) from a schema into the
@@ -2587,23 +2525,22 @@
 developer annotates `Foo` with `@XmlRootElement`.
 
 An element factory method must be mapped as
-specified in link:jaxb.html#a3518[See Mapping: Element Factory
-method to Element Declaration].
+specified in <<a3518>>.
 
 .Table 8-34 Mapping: Element Factory method to Element Declaration
+[[a3518]]
 [cols=","]
 |===
 | `{name}` | `@XmlElementDecl.name()`
 | `{target namespace}` | if `@XmlElementDecl.namespace()` is `"##default"`,
 then the value of the `targetNamespace` to which the
 package of the class containing the factory method is mapped as
-specified in link:jaxb.html#a2476[See Mapping: Package to XML
-target namespace]
+specified in <<a2476>>
 
 otherwise `@XmlElementDecl.namespace()`
 
 | `{type definition}` | schema type to which the class is mapped as
-specified in link:jaxb.html#a2578[See @XmlType].
+specified in <<xmltype-2>>.
 
 | `{scope}` | `global` if `@XmlElementDecl.scope()` is
 `@XmlElementDecl.GLOBAL`
@@ -2641,8 +2578,7 @@
 }
 ----
 
-For an overview, see the section,
-link:jaxb.html#a2278[See Adapter].
+For an overview, see the section, <<adapter>>.
 
 For detailed information, see the javadocs for
 `jakarta.xml.bind.annotation.adapters.XmlAdapter` and
@@ -2662,8 +2598,7 @@
 }
 ----
 
-For an overview, see
-link:jaxb.html#a2278[See Adapter].
+For an overview, see <<adapter>>.
 
 ===== Scope
 
@@ -2894,7 +2829,7 @@
 
 Each `@XmlJavaTypeAdapter` annotation in
 `@XmlJavaTypeAdapters.value()` must be mapped as specified in
-link:jaxb.html#a3561[See @XmlJavaTypeAdapter].
+<<xmljavatypeadapter>>.
 
 === Default Mapping
 
@@ -3023,8 +2958,8 @@
 
 By default, `java.util.Map<K,V>` must be
 mapped to the following anonymous schema type. The parameterized types K
-and V must be mapped as specified in link:jaxb.html#a2386[See
-Type Arguments and Wildcards]. The anonymous schema type is at the
+and V must be mapped as specified in <<Type Arguments and Wildcards>>.
+The anonymous schema type is at the
 point of reference.
 
 [source,xml,indent=2]
diff --git a/spec/src/main/asciidoc/ch09-compatibility.adoc b/spec/src/main/asciidoc/ch09-compatibility.adoc
index bfb46c8..3023fa1 100644
--- a/spec/src/main/asciidoc/ch09-compatibility.adoc
+++ b/spec/src/main/asciidoc/ch09-compatibility.adoc
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2020 Contributors to the Eclipse Foundation
+// Copyright (c) 2020, 2021 Contributors to the Eclipse Foundation
 //
 
 == Compatibility
@@ -20,24 +20,21 @@
 
 A JAXB implementation must implement the
 processing model specified in Appendix B,
-link:jaxb.html#a3856[See Runtime Processing]”.
+<<Runtime Processing>>.
 
 A JAXB implementation included in a product
 that supports software development must support a schema generator. A
 schema generator must support all the Java Types to XML Schema mapping
-specified in Section 8, link:jaxb.html#a2236[See Java Types To
-XML]”.
+specified in <<Java Types To XML>>.
 
 A JAXB implementation included in a product
 that supports software development must support a schema compiler. All
 operating modes of a schema compiler must support all the XML
 Schema-to-Java bindings described in this specification. Additionally,
 any operating mode must not implement a default binding for XML
-Schema-to-Java bindings as an alternative to those specified in Section
-6, link:jaxb.html#a694[See Binding XML Schema to Java
-Representations]” nor alternative interpretations for the standard
-customizations described in Section 7, link:jaxb.html#a1498[See
-Customizing XML Schema to Java Representation Binding].”
+Schema-to-Java bindings as an alternative to those specified in
+<<Binding XML Schema to Java Representations>> nor alternative interpretations for the standard
+customizations described in <<Customizing XML Schema to Java Representation Binding>>.
 
 The default operating mode for a schema
 compiler MUST report an error when extension binding declaration is
@@ -47,13 +44,11 @@
 following cases:
 
 . to alter a binding customization that is
-allowed to be associated with a schema element as specified in Section
-7, link:jaxb.html#a1498[See Customizing XML Schema to Java
-Representation Binding].”
+allowed to be associated with a schema element as specified in
+<<Customizing XML Schema to Java Representation Binding>>.
 . to associate a binding customization with a
-schema element where it is disallowed as specified in Section 7,
-link:jaxb.html#a1498[See Customizing XML Schema to Java
-Representation Binding].”
+schema element where it is disallowed as specified in
+<<Customizing XML Schema to Java Representation Binding>>.
 
 The default operating mode for a schema
 compiler MUST report an error when processing a schema that does not