Complete chapter 7

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc b/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
index 81f5d27..60eed3d 100644
--- a/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
+++ b/spec/src/main/asciidoc/ch07-customize_xml_schema.adoc
@@ -7,9 +7,9 @@
 The default binding of source schema
 components to derived Java representation by a binding compiler
 sometimes may not meet the requirements of a JAXB application. In such
-cases, the default binding can be customized using a binding
-declaration. Binding declarations are specified by a _binding language_
-, the syntax and semantics of which are defined in this chapter.
+cases, the default binding can be customized using a __binding declaration__.
+Binding declarations are specified by a __binding language__,
+the syntax and semantics of which are defined in this chapter.
 
 All JAXB implementations are required to
 provide customization support specified here unless explicitly stated as
@@ -18,14 +18,13 @@
 === Binding Language
 
 The binding language is an XML based language
-which defines constructs referred to as binding declarations. A binding
+which defines constructs referred to as __binding declarations__. A binding
 declaration can be used to customize the default binding between an XML
 schema component and its Java representation.
 
-http://java.sun.com./xml/ns/jaxb[The schema
-for binding declarations is defined in the namespace]
-_http://java.sun.com/xml/ns/jaxb_ . This specification uses the
-namespace prefix “ _jaxb_ ” to refer to the namespace of binding
+The schema for binding declarations is defined in the namespace
+`https://jakarta.ee/xml/ns/jaxb`. This specification uses the
+namespace prefix `"jaxb"` to refer to the namespace of binding
 declarations. For example,
 
 [source,xml,indent=4]
@@ -42,10 +41,10 @@
 There are two ways to associate a binding
 declaration with a schema element:
 
-* as part of the source schema (inline
-annotated schema)
+* as part of the source schema (_inline
+annotated schema_)
 * external to the source schema in an
-external binding declaration.
+_external binding declaration_.
 
 The syntax and semantics of the binding
 declaration is the same regardless of which of the above two methods is
@@ -78,14 +77,14 @@
 
 The namespaces containing extension binding
 declarations are specified to a JAXB processor by the occurrence of the
-global attribute _<jaxb:extensionBindingPrefixes>_ within an instance of
-_<xs:schema>_ element. The value of this attribute is a
+global attribute `<jaxb:extensionBindingPrefixes>` within an instance of
+`<xs:schema>` element. The value of this attribute is a
 whitespace-separated list of namespace prefixes. The namespace bound to
 each of the prefixes is designated as a customization declaration
-namespace. Prefixes are resolved on the _<xs:schema>_ element that
+namespace. Prefixes are resolved on the `<xs:schema>` element that
 carries this attribute. It is an error if the prefix fails to resolve.
 This feature is quite similar to the extension-element-prefixes
-attribute in [XSLT 1.0] _http://www.w3.org/TR/xslt10/#extension_ ,
+attribute in [XSLT 1.0] `http://www.w3.org/TR/xslt10/#extension`,
 introduces extension namespaces for extension instructions and functions
 for XSLT 1.0.
 
@@ -97,16 +96,16 @@
 ==== Inline Annotated Schema
 
 This method of customization utilizes on the
-_<appinfo>_ element specified by the XML Schema [XSD PART 1]. A binding
-declaration is embedded within the _<appinfo>_ element as illustrated
+`<appinfo>` element specified by the XML Schema [XSD PART 1]. A binding
+declaration is embedded within the `<appinfo>` element as illustrated
 below.
 
 [source,xml,indent=4]
 ----
 <xs:annotation>
-    <xs:appinfo>
-        <binding declaration>
-    </xs:appinfo>
+  <xs:appinfo>
+    <binding declaration>
+  </xs:appinfo>
 </xs:annotation>
 ----
 
@@ -119,7 +118,7 @@
 enables customized binding without requiring modification of the source
 schema. Unlike inline annotation, the remote schema component to which
 the binding declaration applies must be identified explicitly. The
-_<jaxb:bindings>_ element enables the specification of a remote schema
+`<jaxb:bindings>` element enables the specification of a remote schema
 context to associate its binding declaration(s) with. Minimally, an
 external binding declaration follows the following format.
 
@@ -133,12 +132,12 @@
 ----
 
 The schemaLocation attribute is optional for
-specifying _<jaxb:globalBindings>_ , and The node attribute is optional
-for specifying _<jaxb:schemaBindings>_ . The attributes _schemaLocation_
+specifying `<jaxb:globalBindings>`, and the _node_ attribute is optional
+for specifying `<jaxb:schemaBindings>`. The attributes _schemaLocation_
 and _node_ are used to construct a reference to a node in a remote
 schema. The binding declaration is applied to this node by the binding
 compiler as if the binding declaration was embedded in the node’s
-_<xs:appinfo>_ element. The attribute values are interpreted as follows:
+`<xs:appinfo>` element. The attribute values are interpreted as follows:
 
 *  _schemaLocation -_ It is a URI reference
 to a remote schema.
@@ -152,67 +151,66 @@
 ===== Restrictions
 
 * The external binding element
-_<jaxb:bindings>_ is only recognized for processing by a JAXB processor
-when its parent is an _<xs:appinfo>_ element, it is an ancestor of
-another _<jaxb:bindings>_ element, or when it is root element of a
-document. An XML document that has a _<jaxb:bindings>_ element as its
+`<jaxb:bindings>` is only recognized for processing by a JAXB processor
+when its parent is an `<xs:appinfo>` element, it is an ancestor of
+another `<jaxb:bindings>` element, or when it is root element of a
+document. An XML document that has a `<jaxb:bindings>` element as its
 root is referred to as an external binding declaration file.
-* The top-most _<jaxb:binding>_ element
-within an _<xs:appinfo>_ element or the root element of an external
+* The top-most `<jaxb:binding>` element
+within an `<xs:appinfo>` element or the root element of an external
 binding file must have its _schemaLocation_ attribute set.
 
 ==== Version Attribute
 
 The normative binding schema specifies a
-global _version_ attribute. It is used to identify the version of the
+global `version` attribute. It is used to identify the version of the
 binding declarations. For example, a future version of this
 specification may use the version attribute to specify backward
 compatibility. To indicate this version of the specification, the
-_version should_ be _"2.0"._ It is also valid for @version to be “1.0”.
+`version should` be `"2.0"`. It is also valid for @version to be “1.0”.
 If any other version is specified, it must result in an invalid
 customization as specified in link:jaxb.html#a1544[See Invalid
 Customizations].”
 
-The _version_ attribute must be specified in
+The `version` attribute must be specified in
 one of the following ways:
 
 * If customizations are specified in inline
-annotations, the _version_ attribute must be specified in _<xs:schema>_
+annotations, the `version` attribute must be specified in `<xs:schema>`
 element of the source schema. For example,
-
-
++
 [source,xml,indent=4]
 ----
- <xs:schema jaxb:version="2.0">
+ <xs:schema jaxb:version="3.0">
 ----
 
 * If customizations are specified in an
-external binding file, then the _jaxb:version_ attribute must be
-specified in the root element _<jaxb:bindings>_ in the external binding
-file. Alternately, a local _version_ attribute may be used. Thus the
+external binding file, then the `jaxb:version` attribute must be
+specified in the root element `<jaxb:bindings>` in the external binding
+file. Alternately, a local `version` attribute may be used. Thus the
 version can be specified either as
-
-
++
 [source,xml,indent=4]
 ----
- <jaxb:bindings version="2.0" ... />
+ <jaxb:bindings version="3.0" ... />
 ----
 or
++
 [source,xml,indent=4]
 ----
  <jaxb:bindings jaxb:version="2.0" ... />
 ----
-
-Specification of both _version_ and
-_<jaxb:version>_ must result in an invalid customization as specified in
++
+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
 
-A non conforming binding declaration is a
-binding declaration in the _jaxb_ namespace but does not conform to this
+A _non conforming_ binding declaration is a
+binding declaration in the `jaxb` namespace but does not conform to this
 specification. A non conforming binding declaration results in a
-customization error. The binding compiler must report the customization
+_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].”
 
@@ -230,19 +228,17 @@
 addition to the other normative text within this chapter. All examples
 are non-normative.
 
-* Metavariables are in italics.
-* Optional attributes are enclosed in _[
-square="bracket" ]_ .
-* Optional elements are enclosed in _[
-<elementA> ... </elementA> ]_ .
-* Other symbols: ‘ _,_ ” denotes a sequence,
-‘ _|_ ’ denotes a choice, ‘ _+_ ’ denotes one or more, ‘ _*_ ’ denotes
+* Metavariables are in _italics_.
+* Optional attributes are enclosed in `[ square="bracket" ]`.
+* Optional elements are enclosed in `[ <elementA> ... </elementA> ]`.
+* Other symbols: ‘`,`’ denotes a sequence,
+‘`|`’ denotes a choice, ‘`+`’ denotes one or more, ‘`*`’ denotes
 zero or more.
-* The prefix _xs:_ is used to refer to schema
+* The prefix `xs:` is used to refer to schema
 components in W3C XML Schema namespace.
 * In examples, the binding declarations as
-well as the customized code are shown in bold like this: <appinfo>
-<annotation> or getAddress().
+well as the customized code are shown in bold like this:
+*<appinfo> <annotation>* or *getAddress()*.
 
 === Naming Conventions
 
@@ -267,34 +263,33 @@
 ==== Scope
 
 When a customization value is defined in a
-binding declaration, it is associated with a scope. A scope of a
+binding declaration, it is associated with a _scope_. A scope of a
 customization value is the set of schema elements to which it applies.
 If a customization value applies to a schema element, then the schema
-element is said to be covered by the scope of the customization value.
+element is said to be _covered_ by the scope of the customization value.
 The scopes are:
 
 * *global scope*: A customization value defined
-in _<globalBindings>_ has global scope. A global scope covers all the
+in `<globalBindings>` has _global scope_. A global scope covers all the
 schema elements in the source schema and (recursively) any schemas that
 are included or imported by the source schema.
 * *schema scope*: A customization value defined
-in <schemaBindings> has schema scope. A schema scope covers all the
+in `<schemaBindings>` has _schema scope_. A schema scope covers all the
 schema elements in the target namespace of a schema.
 * *definition scope*: A customization value in
 binding declarations of a type definition or global declaration has
-definition scope. A definition scope covers all schema elements that
+_definition scope_. A definition scope covers all schema elements that
 reference the type definition or the global declaration. This is more
 precisely specified in the context of binding declarations later on in
 this chapter.
 * *component scope*: A customization value in a
-binding declaration has component scope if the customization value
+binding declaration has _component scope_ if the customization value
 applies only to the schema element that was annotated with the binding
 declaration.
 
+.Scoping Inheritance and Overriding For Binding Declarations
 image:images/xmlb-18.png[image]
 
-===== Scoping Inheritance and Overriding For Binding Declarations
-
 The different scopes form a taxonomy. The
 taxonomy defines both the inheritance and overriding semantics of
 customization values. A customization value defined in one scope is
@@ -332,12 +327,28 @@
 link:jaxb.html#a2217[See Annotation Restrictions]” outlines how
 these are addressed.
 
-* 
+[NOTE]
+.Design Note
+====
+The reason for specifying using the XML syntax instead of
+abstract schema model is as follows. For most part,
+there is a one-to-one mapping between schema elements
+and the abstract schema components to which they are bound.
+However, there are certain exceptions: local attributes and particles.
+A local attribute is mapped to two schema components:
+{attribute declaration} and {attribute use}. But the XML parsing
+process associates the annotation with the {attribute declaration}
+not the {attribute use}. This is tricky and not obvious.
+Hence for ease of understanding, a choice was made to specify
+customization at the surface syntax level instead.
 
-=== _<globalBindings>_ Declaration
+====
 
-The customization values in “<
-_globalBindings>_ ” binding declaration have global scope. This binding
+
+=== `<globalBindings>` Declaration
+
+The customization values in `"<globalBindings>"`
+binding declaration have global scope. This binding
 declaration is therefore useful for customizing at a global level.
 
 ==== Usage
@@ -353,7 +364,7 @@
     [ underscoreBinding = "asWordSeparator" | "asCharInWord" ]
     [ typesafeEnumBase = "typesafeEnumBase" ]
     [ typesafeEnumMemberName = "skipGeneration" |
-                              "generateName" | "generateError" ]
+                               "generateName" | "generateError" ]
     [ typesafeEnumMaxMembers = “xxxx”]
     [ enableJavaNamingConventions = "true" | "false" | "1" | "0" ]
     [ generateElementClass = "false" | "true" | "0" | "1" ]
@@ -361,7 +372,7 @@
     [ generateValueClass = "true" | "true" | "0" | "1" ]
     [ optionalProperty = "wrapper" | "primitive" | "isSet" ]
     [ mapSimpleTypeDef = "true" | "false" | "1" | "0" ]
-    [ localScoping = "nested" | "toplevel" ] > +
+    [ localScoping = "nested" | "toplevel" ] >
     [ <javaType> ... </javaType> ]*
     [ <serializable uid=”xxxx”/> ]*
 </globalBindings>
@@ -370,79 +381,77 @@
 The following customization values are
 defined in global scope:
 
-*  _collectionType_ if specified, must be
-either “ _indexed"_ or any fully qualified class name that implements
-_java.util.List._ The default value is to any fully qualified class name
-that implements _java.util.List_ .
-*  _fixedAttributeAsConstantProperty_ if
+* `_collectionType_` if specified, must be
+either `"indexed"` or any fully qualified class name that implements
+`_java.util.List_`. The default value is to any fully qualified class name
+that implements `_java.util.List_`.
+* `_fixedAttributeAsConstantProperty_` if
 specified , defines the customization value
-_fixedAttributeAsConstantProperty_ . The value must be one of _"true",
-false", "1" or"0"._ The default value is _"false"_ .
-*  _generateIsSetMethod_ if specified,
-defines the customization value of _generateIsSetMethod._ The value must
-be one of _"true", false", "1" or"0"._ The default value is _"false"_ .
+`_fixedAttributeAsConstantProperty_`. The value must be one of `"true"`,
+`"false"`, `"1"` or `"0"`. The default value is `"false"`.
+* `_generateIsSetMethod_` if specified,
+defines the customization value of `_generateIsSetMethod_`. The value must
+be one of `"true"`, `"false"`, `"1"` or `"0"`. The default value is `"false"`.
 Consider customizing using the newly introduced _optionalProperty_
-before using this JAXB 1.0 customization.
-*  _enableFailFastCheck_ if specified,
-defines the customization value _enableFailFastCheck._ The value must be
-one of _"true", "false", "1" or"0"._ If enableFailFastCheck is "true" or
-"1" and the JAXB implementation supports this optional checking, type
+before using this JAXB customization.
+* `_enableFailFastCheck_` if specified,
+defines the customization value `_enableFailFastCheck`_. The value must be
+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"_ .
-*  _choiceContentProperty_ if
-specified,defines the customization value _choiceContentProperty_ . The
-value must be one of _"true", false", "1" or"0"._ The default value is
-_"false"_ .
-*  _underscoreBinding_ if specified, defines
-the customization value _underscoreBinding_ . The value must be one of
-_"asWordSeparator" or "asCharInWord"._ The default value is
-_"asWordSeparator"_ .
-*  _enableJavaNamingConventions_ if
-specified, defines the customization value _enableJavaNamingConventions_
-. The value must be one of _"true", false", "1" or"0"._ The default
-value is _"true"_ .
-*  _typesafeEnumBase_ if specified, defines
-the customization value _typesafeEnumBase._ The value must be a list of
+link:jaxb.html#a541[See 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"`.
+The default value is `"false"`.
+* `_underscoreBinding_` if specified, defines
+the customization value `_underscoreBinding_`. The value must be one of
+`"asWordSeparator"` or `"asCharInWord"`. The default value is
+`"asWordSeparator"`.
+* `_enableJavaNamingConventions_` if
+specified, defines the customization value `_enableJavaNamingConventions_`.
+The value must be one of `"true"`, `"false"`, `"1"` or `"0"`.
+The default value is `"true"`.
+* `_typesafeEnumBase_` if specified, defines
+the customization value `_typesafeEnumBase_`. The value must be a list of
 QNames, each of which must resolve to a simple type definition. Only
 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
+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
-value of _typesafeEnumBase_ is _“xs:string”._
-
-The _typesafeEnumBase_ cannot contain the
+value of `_typesafeEnumBase_` is `"xs:string"`.
++
+The `_typesafeEnumBase_` cannot contain the
 following simple types and therefore a JAXB implementation is not
 required to support the binding of the these types to typesafe
-enumeration class: _"xs:QName", "xs:NOTATIION”, xs:base64Binary",
-"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
+enumeration class: `_"xs:QName"_`, `_"xs:NOTATIION"_`, `_"xs:base64Binary"_`,
+`_"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
-any other simple type listed in _typesafeEnumBase_ to a typesafe
+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_` 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.
-*  _typesafeEnumMaxMembers_ if specified,
+* `_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
+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
 each element declaration that has an element factory method generated
-for it. Its default value is false.
-*  _generateElementProperty_ if specified as
+for it. Its default value is `"false"`.
+* `_generateElementProperty_` if specified as
 true, controls the generation of JAXBElement property. The value must be
-one of "true", "false", "1", or "0". The default is absence of the
+one of `"true"`, `"false"`, `"1"` or `"0"`. The default is absence of the
 value.
-*  _generateValueClass_
- if specified as true, a
+* `_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
@@ -451,13 +460,11 @@
 Java Content Interface]”. The attribute’s default value is true. See
 examples of this binding in link:jaxb.html#a1617[See
 generateElementClass and generateValueClass]”.
-* zero or more _javaType_ binding
+* zero or more `_javaType_` binding
 declarations. Each binding declaration must be specified as described in
 link:jaxb.html#a1981[See <javaType> Declaration].”
-* zero or one serializable binding
-declaration.
-*  _optionalProperty_
- controls how a JAXB property with a
+* zero or one serializable binding declaration.
+* `_optionalProperty_` controls how a JAXB property with a
 primitive base type that represents an optional non-nillable
 element/attribute is bound. If the attribute has the value "wrapper",
 then the base type of the JAXB property is the wrapper class for the
@@ -467,36 +474,36 @@
 “isSet”, it binds the optional property using the primitive base type
 and also the isSet/unset methods are generated for the optional
 property. The attribute’s default value is “wrapper”.
-*  _mapSimpleTypeDef_ controls whether a JAXB
+* `_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
+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]”.
-*  _localScoping_ attribute can have the
+* `_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_
 schema-derived JAXB class or a _toplevel_ schema-derived JAXB class. To
 avoid naming collisions between nested components, the default value for
-this attribute is _nested_ . A developer can customize _localScoping_ to
-_toplevel_ w hen schema components nest too deeply or an application
+this attribute is _nested_. A developer can customize _localScoping_ to
+_toplevel_ when schema components nest too deeply or an application
 would prefer to not work with nested classes.
 
 The semantics of the above customization
 values, if not specified above, are specified when they are actually
 used in the binding declarations.
 
-For inline annotation, a _<globalBindings>_
-is valid only in the annotation element of the _<schema>_ element. There
-must only be a single instance of a _<globalBindings>_ declaration in
-the annotation element of the _<schema>_ element.
+For inline annotation, a `<globalBindings>`
+is valid only in the annotation element of the `<schema>` element. There
+must only be a single instance of a `<globalBindings>` declaration in
+the annotation element of the `<schema>` element.
 
 ==== Customized Name Mapping
 
 A customization value can be used to specify
 a name for a Java object (e.g. class name, package name etc.). In this
-case, a customization value is referred to as a customization name.
+case, a customization value is referred to as a _customization name_.
 
 A customization name is always a legal Java
 identifier (this is formally specified in each binding declaration where
@@ -508,12 +515,12 @@
 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
+Conventions”]. The customization value _enableJavaNamingConventions_
 determines if a customization name is mapped to a Java identifier that
 follows Java language naming conventions or not.
 
-If enableJavaNamingConventions is defined and
-the value is _"true"_ or _"1",_ then the customization name (except for
+If _enableJavaNamingConventions_ is defined and
+the value is `"true"` or `"1"`, then the customization name (except for
 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
@@ -528,7 +535,7 @@
 from it.
 
 The default value for _@underscoreBinding_ is
-_"asWordSeparator"_ and categorizes underscore, ‘_’, as a punctuation
+`"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
@@ -537,8 +544,8 @@
 link:jaxb.html#a4734[See XML Names and derived Java Class,
 Method, and Constant Names].
 
-When @ _underscoreBinding_ is
-_"asCharInWord",_ underscore (‘_’) is considered a special letter within
+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
@@ -551,17 +558,18 @@
 default binding to value class and customization to bind to
 interface/implementation classes.
 
-===== Default Binding to a value class.
+*_Example:_* Default Binding to a value class. +
 
 Schema fragment:
 
 [source,xml,indent=4]
 ----
-<xs:complexType name=”USAddress”>
-    <xs:attribute name=”City” type=”xs:string”/>
+<xs:complexType name="USAddress">
+  <xs:attribute name="City" type="xs:string"/>
 </xs:complexType>
 ----
- Default Value Class:
+
+Default Value Class:
 
 [source,java,indent=4]
 ----
@@ -572,11 +580,11 @@
     ...
 }
 ----
-Customization _<jaxb:globalBinding
-generateValueClass=”false”>_ generates following interface instead of
+Customization `<jaxb:globalBinding generateValueClass="false">`
+generates following interface instead of
 default value class:
 
-===== Customized binding to an interface.
+*_Example:_* Customized binding to an interface. +
 
 [source,java,indent=4]
 ----
@@ -586,24 +594,24 @@
 }
 ----
 
-===== Generation of an Element Class
+*_Example:_* Generation of an Element Class. +
 
 Schema fragment:
 
 [source,xml,indent=4]
 ----
-<xs:element name=”Address” type=”USAddress”/>
+<xs:element name="Address" type="USAddress"/>
 ----
 [source,java,indent=4]
 ----
-// Default Java binding of global element to element instance factory +
+// Default Java binding of global element to element instance factory
 public ObjectFactory {
     JAXBElement<USAddress> createAddress(USAddress value);
 }
 ----
- _<jaxb:globalBinding
-generateElementClass=”true”/>_ results in generation of following
-Element class:
+
+`<jaxb:globalBinding generateElementClass="true"/>` results in generation
+of following Element class:
 
 [source,java,indent=4]
 ----
@@ -613,30 +621,30 @@
 
 ==== @typesafeEnumMemberName
 
-.If there is a collision among the generated
+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, then
 the binding is determined based on the value of @
-_typesafeEnumMemberName_ of element *[jaxb:globalBindings]* .
+`_typesafeEnumMemberName_` of element *[jaxb:globalBindings]*.
 
-*  _skipGeneration +
-_ An enum type is not generated. This is the default behavior if
-_typesafeEnumMemberName_ has not been specified. A binding compiler may
+* _skipGeneration_ +
+An enum type is not generated. This is the default behavior if
+`_typesafeEnumMemberName_` has not been specified. A binding compiler may
 report a warning on why the simple type definition was not bound to an
 enum type.
-*  _generateName +
-_ The constant fields *name* is “ _VALUE__ _<N>_ _"_ where _<N>_ is 1
+* _generateName_ +
+The constant fields *name* is `__"VALUE____<N>"_` where `_<N>_` is 1
 for the first enumeration value and increments by 1 to represent each
 value within the XML enumeration.
-*  _generateError +
-_ An error must be reported.
+* _generateError_ +
+An error must be reported.
 
 ==== <serializable> Declaration
 
 When the serializable customization is
-specified, all schema-derived classes implement _java.io.Serializable_ .
-Each class is generated with a _serialVersionUID_ field set to the value
-specified by _@uid_ .
+specified, all schema-derived classes implement `java.io.Serializable`.
+Each class is generated with a `serialVersionUID` field set to the value
+specified by _@uid_.
 
 [source,java,indent=4]
 ----
@@ -644,9 +652,9 @@
 ----
 The JAXB user is required to identify when
 schema-derived classes do not follow
-_http://java.sun.com/j2se/1.4.2/docs/guide/serialization/spec/version.html#wp4602[Java
+_https://docs.oracle.com/javase/8/docs/platform/serialization/spec/version.html#a6519§[Java
 serialization class evolution rules]_ and change the generated
-_serialVersionUID_ field by changing the *[serializable]* element’s
+`serialVersionUID` field by changing the *[serializable]* element’s
 attribute _@uid_ value.
 
 ==== @generateElementProperty
@@ -656,23 +664,23 @@
 JAXBElement. This customization lets you control this behavior. This
 attribute may take two values:
 
-*  _true: +
-_ Always generate properties to use JAXBElement, unless overriden by
-_<jaxb:property generateElementProperty=”false”/>_ on individual
+* _true_: +
+Always generate properties to use JAXBElement, unless overriden by
+`<jaxb:property generateElementProperty="false"/>` on individual
 property.
-*  _false: +
-_ When generating properties from _<element nillable=”true”
-minOccurs=”0”/>_ , generate a property not to use JAXBElement, as if the
-element declaration were just _<element nillable=”true” />_ , unless
-overriden by _<jaxb:property generateElementProperty=”true”/>_ on
+* _false_: +
+When generating properties from `<element nillable=”true” minOccurs=”0”/>`,
+generate a property not to use JAXBElement, as if the
+element declaration were just `<element nillable=”true” />`, unless
+overriden by `<jaxb:property generateElementProperty="true"/>` on
 individual property. It is an error to specify this customization, when
 the property is required to be JAXBElement (such as when a property
 contains multiple elements with different names but of the same type.)
 
-===  _<schemaBindings>_ Declaration
+===  `<schemaBindings>` Declaration
 
 The customization values in
-_<schemaBindings>_ binding declaration have schema scope. This binding
+`<schemaBindings>` binding declaration have schema scope. This binding
 declaration is therefore useful for customizing at a schema level.
 
 ==== Usage
@@ -684,74 +692,81 @@
     [ <nameXmlTransform> ... </nameXmlTransform>]*
 </schemaBindings>
 
-
 <package [ name = "packageName" ]
     [ <javadoc> ... </javadoc> ]
 </package>
 
-
 <nameXmlTransform>
-    [ <typeName         [ suffix="suffix" ]
-                        [ prefix="prefix" ] /> ]
-    [ <elementName      [ suffix="suffix" ]
-                        [ prefix="prefix" ] /> ]
-    [ <modelGroupName   [ suffix="suffix" ]
-                        [ prefix="prefix" ] /> ]
-    [ <anonymousTypeName    [ suffix="suffix" ]
-                            [ prefix="prefix" ] /> ]
+    [ <typeName           [ suffix="suffix" ]
+                          [ prefix="prefix" ] /> ]
+    [ <elementName        [ suffix="suffix" ]
+                          [ prefix="prefix" ] /> ]
+    [ <modelGroupName     [ suffix="suffix" ]
+                          [ prefix="prefix" ] /> ]
+    [ <anonymousTypeName  [ suffix="suffix" ]
+                          [ prefix="prefix" ] /> ]
 </nameXmlTransform>
 ----
 
-For readability, the _<nameXmlTransform>_ and
-_<package>_ elements are shown separately. However, they are local
-elements within the _<schemaBindings>_ element.
+For readability, the `<nameXmlTransform>` and
+`<package>` elements are shown separately. However, they are local
+elements within the `<schemaBindings>` element.
 
 The following customizations are defined in
 the schema scope:
 
-*  _map_ if specified, prevents the classes
-from being generated from this schema. When the value is “0” or “false”,
-then no class/interface/enum will be generated from this package. map
-defaults to true.
+* _map_ if specified, prevents the classes
+from being generated from this schema. When the value is `"0"` or `"false"`,
+then no class/interface/enum will be generated from this package. _map_
+defaults to `"true"`.
 
 The semantics of the customization value, if
 not specified above, are specified when they are actually used in the
 binding declarations.
 
-For inline annotation, a _<schemaBindings>_
-is valid only in the annotation element of the _<schema>_ element. There
-must only be a single instance of a _<schemaBindings>_ declaration in
-the annotation element of the _<schema>_ element.
+For inline annotation, a `<schemaBindings>`
+is valid only in the annotation element of the `<schema>` element. There
+must only be a single instance of a `<schemaBindings>` declaration in
+the annotation element of the `<schema>` element.
 
 If one source schema includes (via the
 include mechanism specified by XSD PART 1) a second source schema, then
-the _<schemaBindings>_ declaration must be declared in the first
+the `<schemaBindings>` declaration must be declared in the first
 including source schema. It should be noted that there is no such
-restriction on _<schemaBindings>_ declarations when one source schema
-imports another schema since the scope of _<schemaBindings>_ binding
+restriction on `<schemaBindings>` declarations when one source schema
+imports another schema since the scope of `<schemaBindings>` binding
 declaration is schema scope.
 
-===== package __
+===== package
 
 Usage
 
-*  _name_ if specified, defines the
-customization value _packageName_ . _packageName_ must be a valid Java
+* `_name_` if specified, defines the
+customization value `_packageName_`. `_packageName_` must be a valid Java
 package name.
-* < _javadoc>_ if specified, customizes the
-package level Javadoc. < _javadoc>_ must be specified as described in
+* `_<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
-section._
-* xml
+Javadoc Customization].” The Javadoc section customized is the `package
+section`.
 
-The semantics of the _packageName_ is
-specified in the context where it is used. If neither _packageName_ nor
-the < _javadoc>_ element is specified, then the binding declaration has
+[NOTE]
+.Design Note
+====
+The word “package” has been prefixed to `_name_` used in the binding declaration.
+This is because the attribute or element tag names “name” is not unique by itself
+across all scopes. For e.g., “name” attribute can be specified
+in the <property> declaration. The intent is to disambiguate by reference such as `"packageName"`.
+
+====
+
+The semantics of the `_packageName_` is
+specified in the context where it is used. If neither `_packageName_` nor
+the `_<javadoc>_` element is specified, then the binding declaration has
 no effect.
 
-*Example: Customizing Package Name*
+*_Example:_* Customizing Package Name +
 
 [source,xml,indent=4]
 ----
@@ -760,7 +775,7 @@
 </jaxb:schemaBindings>
 ----
 
-specifies “ _org.example.po_ ” as the package
+specifies `"org.example.po"` as the package
 to be associated with the schema.
 
 =====  nameXmlTransform
@@ -779,46 +794,46 @@
 in different XML Schema symbol spaces. Normally, collisions are supposed
 to be resolved using customization. However, since there are many
 collisions for the UDDI V2.0 schema, this is not a convenient solution.
-Hence the binding declaration _nameXmlTransform_ is being provided to
+Hence the binding declaration `nameXmlTransform` is being provided to
 automate name collision resolution.
 
-The _nameXmlTransform_ allows a _suffix_ and
-a _prefix_ to be specified on a per symbol space basis. The following
+The `nameXmlTransform` allows a `_suffix_` and
+a `_prefix_` to be specified on a per symbol space basis. The following
 symbol spaces are supported:
 
-*  _<typeName>_ for the symbol space “type
+*  `<typeName>` for the symbol space “type
 definitions”
-*  _<elementName>_ for the symbol space
+*  `<elementName>` for the symbol space
 “element definitions”
-*  _<modelGroupName>_ for the symbol space
+*  `<modelGroupName>` for the symbol space
 “model group definitions.”
-*  _<anonymousTypeName>_ for customizing Java
+*  `<anonymousTypeName>` for customizing Java
 value class to which an anonymous type is bound.footnote:[XML schema does not
 associate anonymous types with a specific symbol space. However,
 _nameXmlTransform_ is used since it provides a convenient way to
 customize the value class to which an anonymous type is bound.]
 
-If _suffix_ is specified, it must be appended
-to all the default XML names in the symbol space. The _prefix_ if
+If `_suffix_` is specified, it must be appended
+to all the default XML names in the symbol space. The `_prefix_` if
 specified, must be prepended to the default XML name. Furthermore, this
 XML name transformation must be done after the XML name to Java
 Identifier algorithm is applied to map the XML name to a Java
 identifier. The XML name transformation must not be performed on
 customization names.
 
-By using a different _prefix_ and/or _suffix_
+By using a different `_prefix_` and/or `_suffix_`
 for each symbol space, identical names in different symbol spaces can be
 transformed into non-colliding XML names.
 
- _anonymousTypeName_
+`*anonymousTypeName*`
 
-The _<anonymousTypeName>_ declaration can be
+The `<anonymousTypeName>` declaration can be
 used to customize the suffix and prefix for the Java value class. If
-_prefix_ is specified, then it must be prepended to the Java value class
+`_prefix_` is specified, then it must be prepended to the Java value class
 name for the anonymous type. If suffix is specified, it must be
 appended.
 
-===  _<class>_ Declaration
+=== `<class>` Declaration
 
 This binding declaration can be used to
 customize the binding of a schema component to an element class, value
@@ -846,29 +861,29 @@
 [source,xml,indent=4]
 ----
 <class [ name = "className" ]
-       [ implClass = "implClass" ]>
-       [ ref = "className" ]
-       [ <javadoc> _..._ </javadoc> ]
+       [ implClass = "implClass" ]
+       [ ref = "className" ] >
+       [ <javadoc> ... </javadoc> ]
 </class>
 ----
 
-*  _className_ is the name of the derived
+* `_className_` is the name of the derived
 value class, if specified. It must be a legal Java class name and must
 not contain a package prefix. The package prefix is inherited from the
-current value of package _._
-*  _implClass_ if specified, is the name of
-the implementation class for _className_ and must include the complete
+current value of _package_.
+* `_implClass_` if specified, is the name of
+the implementation class for `_className_` and must include the complete
 package name. Note that this customization only impacts the return value
-for _className_ ’s factory method. This customization is ignored when
-_new_ is used to create instances of a schema-derived Value class.
-*  _ref_ if specified, is the name of the
+for `className` ’s factory method. This customization is ignored when
+`new` is used to create instances of a schema-derived Value class.
+* `_ref_` if specified, is the name of the
 value class that is provided outside the schema compiler. This
 customization causes a schema compiler to refer to this external class,
 as opposed to generate a definition. It must include the complete
-package name. This attribute is mutually exclusive with the _className_
-attribute and the _implClass_ attribute.
-*  _<javadoc>_ element, if specified
-customizes the Javadoc for the derived value class. _<javadoc>_ must be
+package name. This attribute is mutually exclusive with the `_className_`
+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].”
 
@@ -880,41 +895,47 @@
 specified in a common section here and referenced from
 link:jaxb.html#a1718[See Customizable Schema Elements].”
 
-* name: The name is _className_ if specified.
+* *name*: The name is `_className_` if specified.
 * *package name:* The name of the package is
-_packageName_ inherited from a scope that covers this schema element. +
- +
-*NOTE:* The _packageName_ is only set in the <package> declaration. The
-scope of _packageName_ is schema scope and is thus inherited by all
+`_packageName_` inherited from a scope that covers this schema element.
++
+[NOTE]
+.Note
+====
+The `_packageName_` is only set in the `<package>` declaration. The
+scope of `_packageName_` is schema scope and is thus inherited by all
 schema elements within the schema.
+
+====
+
 * *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
-section._
+Customization].” The Javadoc section customized is the `class/interface
+section`.
 
 ==== Customizable Schema Elements
 
 ===== Complex Type Definition
 
-When _<class>_ customization specified in the
+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].”
 
-*Example: Class Customization: Complex Type Definition To Java value class*
+*_Example:_* Class Customization: Complex Type Definition To Java value class +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="USAddress">
-    <xs:annotation> <xs:appinfo>
-        <jaxb:class name="MyAddress" />
-    </xs:appinfo></xs:annotation>
-    <xs:sequence>...</xs:sequence>
-    <xs:attribute name="country" type="xs:string"/>
+  <xs:annotation><xs:appinfo>
+    <jaxb:class name="MyAddress" />
+  </xs:appinfo></xs:annotation>
+  <xs:sequence>...</xs:sequence>
+  <xs:attribute name="country" type="xs:string"/>
 </xs:complexType>
 ----
 
@@ -932,24 +953,24 @@
 
 ===== Simple Type Definition
 
-When _<class>_ customization specified in the
+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
 the customization overrides as specified in
 link:jaxb.html#a1713[See Customization Overrides].”
 
-*Example: Class Customization: Simple Type Definition To Java value class*
+*_Example:_* Class Customization: Simple Type Definition To Java value class +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:simpleType name="SKU">
-    <xs:annotation> <xs:appinfo>
-        <jaxb:class/>
-    </xs:appinfo></xs:annotation>
-    <xs:restriction base=”xs:int”/>
+  <xs:annotation><xs:appinfo>
+    <jaxb:class/>
+  </xs:appinfo></xs:annotation>
+  <xs:restriction base=”xs:int”/>
 </xs:simpleType>
 ----
 
@@ -967,40 +988,38 @@
 
 ===== Model Group Definition
 
-It is invalid to place a _<jaxb:class>_
-customization on a model group.
+It is invalid to place a `<jaxb:class>` customization on a model group.
 
 ===== Model Group
 
-It is invalid to place a _<jaxb:class>_
-customization on an unnamed model group.
+It is invalid to place a `<jaxb:class>` customization on an unnamed model group.
 
 ===== Global Element Declaration
 
-A < _class_ > declaration is allowed in the
+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
+`_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].”
 
-*Example : Class Customization: Global Element to Class*
+*_Example:_* Class Customization: Global Element to Class +
 
 XML Schema Fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="AComplexType">
-    <xs:sequence>
-        <xs:element name="A" type="xs:int"/>
-        <xs:element name="B" type="xs:string"/>
-    </xs:sequence>
+  <xs:sequence>
+    <xs:element name="A" type="xs:int"/>
+    <xs:element name="B" type="xs:string"/>
+  </xs:sequence>
 </xs:complexType>
 
 <xs:element name="AnElement" type="AComplexType">
-    <xs:annotation><xs:appinfo>
-        <jaxb:class name="MyElement"/>
-    </xs:appinfo></xs:annotation>
+  <xs:annotation><xs:appinfo>
+    <jaxb:class name="MyElement"/>
+  </xs:appinfo></xs:annotation>
 </xs:element>
 ----
 
@@ -1038,21 +1057,20 @@
 
 * local element reference (using the “ref”
 attribute) to a global element declaration.
-* local element declaration (“ref” attribute
-is not used).
+* local element declaration (“ref” attribute is not used).
 
-A _<class>_ declaration is allowed in the
+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 for a local element reference. However, the
-_implClass_ attribute is not allowed.
+`_implClass_` attribute is not allowed.
 
-A _<class>_ customization on local element
+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
 element reference is never bound to a Java Element class.
 
-A _<class>_ customization on local element
+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
@@ -1061,25 +1079,24 @@
 Instance]” applying the customization overrides as specified in
 link:jaxb.html#a1713[See Customization Overrides].”
 
-*Example: Class Customization: Local Element Declaration To Java Element*
+*_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 link:jaxb.html#a1359[See Examples].
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="Base">
-    <xs:choice maxOccurs="unbounded">
-        <xs:element name="A" type="xs:string">
-            <xs:annotation><xs:appinfo>
-                <jaxb:class name="Bar"/>
-            </xs:appinfo></xs:annotation>
-        </xs:element>
-        <xs:element name="B" type="xs:string"/>
-        <xs:element name="C" type="xs:int"/>
-    </xs:choice>
+  <xs:choice maxOccurs="unbounded">
+    <xs:element name="A" type="xs:string">
+      <xs:annotation><xs:appinfo>
+        <jaxb:class name="Bar"/>
+      </xs:appinfo></xs:annotation>
+    </xs:element>
+    <xs:element name="B" type="xs:string"/>
+    <xs:element name="C" type="xs:int"/>
+  </xs:choice>
 </xs:complexType>
 ----
 
@@ -1090,22 +1107,22 @@
 import jakarta.xml.bind.JAXBElement;
 public class ObjectFactory {
     // element instance factories only
-    // JAXBElement<String> createBaseA(String value); //default code
-    JAXBElement<String> createBaseBar(String value); //Customized
+    // JAXBElement<String> createBaseA(String value); // default code
+    JAXBElement<String> createBaseBar(String value); // Customized
     JAXBElement<String> createBaseB(String value);
     JAXBElement<Integer> createBaseC(Integer value);
 }
 public class Base {
-static public class Bar extends JAXBElement<String> {...}// Customized code
+    static public class Bar extends JAXBElement<String> {...} // Customized code
     /**
-    * A general content list that can contain element
-    * instances of JAXBElement<String> or JAXBElement<Integer>.
-    */
+     * A general content list that can contain element
+     * instances of JAXBElement<String> or JAXBElement<Integer>.
+     */
     List<Object> getBarOrBOrC() {...}
 }
 ----
 
-=== _<property>_ Declaration
+=== `<property>` Declaration
 
 This binding declaration allows the
 customization of a binding of an XML schema element to its Java
@@ -1115,7 +1132,7 @@
 
 The scope of customization value can either
 be definition scope or component scope depending upon which XML schema
-element the < _property>_ binding declaration is specified.
+element the `_<property>_` binding declaration is specified.
 
 ==== Usage
 
@@ -1125,10 +1142,10 @@
     [ collectionType = "propertyCollectionType" ]
     [ fixedAttributeAsConstantProperty = "true" | "false" | "1" | "0" ]
     [ generateIsSetMethod = "true" | "false" | "1" | "0" ]
-    [ enableFailFastCheck="true" | "false" | "1" | "0" ]
-    [ generateElementProperty= “true” | “false” | “1” | “0” ]
-    [ attachmentRef = “resolve” | “doNotResolve” | “default” ]
-    [ <baseType name=”fully qualified Java class”> ... </baseType> ]
+    [ enableFailFastCheck = "true" | "false" | "1" | "0" ]
+    [ generateElementProperty = "true" | "false" | "1" | "0" ]
+    [ attachmentRef = "resolve" | "doNotResolve" | "default" ] >
+    [ <baseType name = "fully qualified Java class"> ... </baseType> ]
     [ <javadoc> ... </javadoc> ]
 </property>
 
@@ -1137,112 +1154,110 @@
 </baseType>
 ----
 
-For readability, the _<baseType>_ element is
+For readability, the `<baseType>` element is
 shown separately. However, it can be used only as a local element within
-the _<property>_ element.
+the `<property>` element.
 
 The use of this declaration is subject to the
 constraints specified in link:jaxb.html#a1825[See Usage
-Constraints].”
+Constraints].
 
 The customization values defined are:
 
-*  _name_ if specified , defines the
-customization value _propertyName;_ it must be a legal Java identifier.
-*  _collectionType_ if specified, defines the
-customization value _propertyCollectionType_ which is the collection
-type for the property. _propertyCollectionType_ if specified, must be
-either “ _indexed"_ or any fully qualified class name that implements
-_java.util.List._
-*  _fixedAttributeAsConstantProperty_ if
+* `_name_` if specified, defines the
+customization value `_propertyName;_` it must be a legal Java identifier.
+* `_collectionType_` if specified, defines the
+customization value `_propertyCollectionType_` which is the collection
+type for the property. `_propertyCollectionType_` if specified, must be
+either `"indexed"` or any fully qualified class name that implements
+`_java.util.List_`.
+* `_fixedAttributeAsConstantProperty_` if
 specified , defines the customization value
-_fixedAttributeAsConstantProperty_ . The value must be one of _"true",
-false", "1" or"0"._
-*  _generateIsSetMethod_ if specified,
-defines the customization value of _generateIsSetMethod._ The value must
-be one of _"true", false", "1" or"0"._
-*  _enableFailFastCheck_ if specified,
-defines the customization value _enableFailFastCheck._ The value must be
-one of _"true", false", "1" or"0"._
-*  _@generateElementProperty_ if specified,
+`_fixedAttributeAsConstantProperty_`. The value must be one of
+`"true"`, `"false"`, `"1"` or `"0"`.
+* `_generateIsSetMethod_` if specified,
+defines the customization value of `_generateIsSetMethod_`. The value must
+be one of `"true"`, `"false"`, `"1"` or `"0"`.
+* `_enableFailFastCheck_` if specified,
+defines the customization value `_enableFailFastCheck_`. The value must be
+one of `"true"`, `"false"`, `"1"` or `"0"`.
+* `@generateElementProperty` if specified,
 controls the generation of JAXBElement property. The value must be one
-of "true", "false", "1", or "0". The default is absence of the value. It
-is an error for this attribute to be present if this customization is
+of `"true"`, `"false"`, `"1"` or `"0"`. The default is absence of the value.
+It is an error for this attribute to be present if this customization is
 attached to local or global attribute declarations. This customization
 affects the binding as follows. It is an error to specify this
-customization, when the property is required to be _JAXBElement_ (such
+customization, when the property is required to be `_JAXBElement_` (such
 as when a property contains multiple elements with different names but
 of the same type.)
-*  _true_ : Always generate properties to use
-_JAXBElement_ .
-*  _false_ : When generating properties from
-_<element nillable="true" minOccurs="0" />_ , generate a property not to
-use JAXBElement, as if the element declaration were just _<element
-nillable="true"/>_ .
-*  _@attachmentRef_ has a default value of
+** _true_ : Always generate properties to use `_JAXBElement_`.
+** _false_ : When generating properties from
+`_<element nillable="true" minOccurs="0" />_`, generate a property not to
+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]”. +
  +
-When _@attachmentRef_ value is _resolve_ and the property’s base type is
-or derives from _xsd:anyURI_ , the schema-derived JAXB property has a
-base type of _javax.activation.DataHandler_ and the property is
-annotated with _@XmlAttachmentRef_ . +
+When `@attachmentRef` value is _resolve_ and the property’s base type is
+or derives from `xsd:anyURI`, the schema-derived JAXB property has a
+base type of `jakarta.activation.DataHandler` and the property is
+annotated with `@XmlAttachmentRef`. +
  +
-Disabling autoresolving an element/attribute of type _ref:swaRef_ : +
-When _@attachmentRef_ value is _doNotResolve_ and the property’s base
-type derives from standard schema type _ref:swaRef,_ the schema-derived
-JAXB property has the base type _String_ , derived from _xsd:anyURI,_
-and _@XmlAttachmentRef_ is not generated for the property.
-*  _<javadoc>_ element, if specified
-customizes the Javadoc for the property’s getter method. _<javadoc>_
+Disabling autoresolving an element/attribute of type `ref:swaRef`: +
+When `@attachmentRef` value is _doNotResolve_ and the property’s base
+type derives from standard schema type `ref:swaRef`, the schema-derived
+JAXB property has the base type `String`, derived from `xsd:anyURI`,
+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].”
 
-==== _baseType_
+==== baseType
 
-The _<baseType>_ element is intended to allow
+The `<baseType>` element is intended to allow
 the customization of a base type for a JAXB property. This element can
 only be a child of <jaxb:property> element.
 
 [source,xml,indent=4]
 ----
-<baseType name=”fully qualified Java class”>
+<baseType name="fully qualified Java class>">
     <javaType> ... </javaType>
 </baseType>
 ----
 
 
-The _@name_ attribute enables either the
+The `@name` attribute enables either the
 specialization or generalization of the default base type binding for a
-JAXB property. Child element _<javaType>_ is used to convert the default
+JAXB property. Child element `<javaType>` is used to convert the default
 base type to a Java class. These two mutual exclusive usages of the
 <baseType> customization are described below.
 
 ===== Conversion using Child element <javaType>
 
-Optional child element < _javaType>_ , if
-specified, defines the customization value _javaType_ and must be
+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
+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.
 
 The schema-derived JAXB property is annotated
-with _@XmlJavaTypeAdapter_ specified in Section 8.
-_@XmlJavaTypeAdapter.value()_ is set to a generated
+with `@XmlJavaTypeAdapter` specified in Section 8.
+`@XmlJavaTypeAdapter.value()` is set to a generated
 classfootnote:[There is no need to
 standardize the name of the generated class since
 _@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
+`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
+<javaType> Declaration]. The generated class’ `marsha` method must call
 the <javaType> customization’s print method.
 
 ===== Generalize/Specialize baseType with attribute @name
 
-The _name_ attribute for _<baseType>_ enables
+The `name` attribute for`<baseType` enables
 more precise control over the actual base type for a JAXB property. This
 customization enables specifying an alternative base type than the
 property’s default base type. The alternative base type must still be in
@@ -1251,7 +1266,7 @@
 of the default Java base type for the property. The customization
 enables one to specialize or generalize the properties binding.
 
-The _name_ attribute value must be a fully
+The `name` attribute value must be a fully
 qualified Java class name. When the default base type is a primitive
 type, consider the default Java base type to be the Java wrapper class
 of that primitive type.
@@ -1259,71 +1274,68 @@
 Generalizing the basetype using this
 customization enables simple type substitution for a JAXB property
 representing with too restrictive of a default base type. To enable all
-possible valid type substitutions, the _name_ attribute should be
-_java.lang.Object_ . However, if for example, it is known that all type
+possible valid type substitutions, the `name` attribute should be
+`java.lang.Object`. However, if for example, it is known that all type
 substitutions will share a more specific Java super interface/class than
-_java.lang.Object_ , that Java class name can be used achieve a stronger
+`java.lang.Object`, that Java class name can be used achieve a stronger
 typed binding. With this customization, the JAXB annotation generated
-for the property’s _@XmlElement.type()_ or _@XmlAttribute.type()_ is
+for the property’s `@XmlElement.type()` or `@XmlAttribute.type()` is
 still the default Java datatype for the element/attribute’s
 schema-defined type.
 
 The schema-derived customized JAXB property
 is annotated, either explicitly or by default mapping annotations, with
-the mapping annotation _@XmlElement_ , specified in Section 8.10.1. The
-_@XmlElement_ annotation element type is derived in terms of the
+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]
 as follows:
 
-====== Annotate JAXB property with @XmlElement element-value pairs
-
-[width="100%",cols="50%,50%",options="header",]
+.Annotate JAXB property with @XmlElement element-value pairs
+[cols=",",options="header"]
 |===
-|@XmlElement element
-|@XmlElement value
-|type |the java
-type binding of the element declaration’s _\{type definition}_
+| @XmlElement element | @XmlElement value
+| type |the java type binding of the element declaration’s _{type definition}_
 |===
 
 Note that the Java class for
-_@XmlElement.type()_ can differ from the recommended JAXB property’s
+`@XmlElement.type()` can differ from the recommended JAXB property’s
 base type to enable type substitution of java.lang.Object. This binding
 enables unmarshalling of the Element’s simple content when it is not
-qualified with an _xsi:type_ as the element’s schema-declared type.
-_@XmlElement.type()_ acts as the default _xsi:type_ for a JAXB property
+qualified with an `xsi:type` as the element’s schema-declared type.
+`@XmlElement.type()` acts as the default `xsi:type` for a JAXB property
 where the property’s base type was generalized to allow for type
 substitution of an element declaration with a simple type definition.
 
 Specializing the basetype using this
 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
+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
 that binds to a specific type, the baseType @name schema customization
 can be used to specialize the binding.
 
-====== Specialize binding of an IDREF via customization
+*_Example:_* Specialize binding of an IDREF via customization +
 
 Given XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="Book">
-    <xs:sequence>
-        <xs:element name="author" type="xs:IDREF"/>
-            <xs:annotation><xs:appinfo>
-                <jaxb:property>
-                    <jaxb:baseType name=”AuthorBio.class”/>
-                </jaxb:property>
-            </xs:appinfo></xs:annotation>
-        <!-- ... -->
-    </xs:sequence>
+  <xs:sequence>
+    <xs:element name="author" type="xs:IDREF"/>
+      <xs:annotation><xs:appinfo>
+        <jaxb:property>
+          <jaxb:baseType name=”AuthorBio.class”/>
+        </jaxb:property>
+      </xs:appinfo></xs:annotation>
+    <!-- ... -->
+  </xs:sequence>
 </xs:complexType>
 <xs:complexType name="AuthorBio">
-    <xs:sequence><!-- ... --> </xs:sequence>
-    <xs:attribute name="name" type="xs:ID"/>
+  <xs:sequence><!-- ... --> </xs:sequence>
+  <xs:attribute name="name" type="xs:ID"/>
 </xs:complexType>
 ----
 
@@ -1345,58 +1357,66 @@
 
 ===== Usage Constraints
 
-The usage constraints on _<property>_ are
+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:
 
-. The _<baseType>_ is only allowed with the
+. 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].”
-. <baseType> can either have a name attribute
-or a <javaType>, they both can not exist at the same time.
-. The _fixedAttributeAsConstantProperty_ is
+.. 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].
+. `<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.
-. If a _<property>_ declaration is associated
-with the _<complexType>_ , then a _<property>_ customization cannot be
+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
-_<complexType>_ :
-. Local Element
-. Model group
-. Model Group Reference
-
-The reason is that a _<property>_ declaration
+`<complexType>`:
++
+--
+.. Local Element
+.. Model group
+.. Model Group Reference
+--
+The reason is that a `<property>` declaration
 associated with a complex type binds the content model of the complex
-type to a general content property. If a _<property>_ declaration is
+type to a general content property. If a `<property>` declaration is
 associated with a schema element listed above, it would create a
 conflicting customization.
 
-* 
+[NOTE]
+.Design Note
+====
+A Local Attribute is excluded from the list above.
+The reason is that a local attribute is not part of the content model
+of a complex type. This allows a local attribute to be customized
+(using a <property> declaration) independently
+from the customization of a complex type’s content model.
 
-*Example: Property Customization: simple type customization*
+====
+
+*_Example:_* Property Customization: simple type customization +
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="internationalPrice">
-    ....
-    <xs:attribute name="currency" type="xs:string">
-        <xs:annotation> <xs:appinfo>
-            <jaxb:property>
-                <jaxb:baseType>
-                    <jaxb:javaType name="java.math.BigDecimal"
+  ....
+  <xs:attribute name="currency" type="xs:string">
+    <xs:annotation><xs:appinfo>
+      <jaxb:property>
+        <jaxb:baseType>
+          <jaxb:javaType name="java.math.BigDecimal"
     parseMethod="jakarta.xml.bind.DatatypeConverter.parseInteger"
     printMethod="jakarta.xml.bind.DatatypeConverter.printInteger"/>
-                </jaxb:baseType>
-            </jaxb:property>
-        </xs:appinfo></xs:annotation>
-    </xs:attribute>
+        </jaxb:baseType>
+      </jaxb:property>
+    </xs:appinfo></xs:annotation>
+  </xs:attribute>
 </xs:complexType>
 ----
 
@@ -1417,35 +1437,35 @@
 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].”
+Customizable Schema Elements].
 
-* *name:* If propertyName is defined, then it
+* *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].”
-* *base type:* The basetype is
-_propertyBaseType_ if defined. The propertyBaseType is defined by a XML
+* *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].”
-* *collection type:* The collection type is
-_propertyCollectionType_ if specified; otherwise it is the
-_propertyCollectionType_ inherited from a scope that covers this 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
+* *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._
-* 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
+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
 class.
 
 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]”:
+link:jaxb.html#a1861[See Local Attribute]:
 
-* If generateIsSetMethod is “true” or “1”,
+* If `_generateIsSetMethod_` is `"true"` or `"1"`,
 then additional methods as specified in link:jaxb.html#a610[See
 isSet Property Modifier]” must be generated.
-* If enableFailFastCheck is “true” or “1”
+* 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
 implementation in this version of the specification.
@@ -1454,7 +1474,7 @@
 
 ===== Global Attribute Declaration
 
-A < _property_ > declaration is allowed in
+A `_<property>_` declaration is allowed in
 the annotation element of the global attribute declaration.
 
 The binding declaration does not bind the
@@ -1477,7 +1497,7 @@
 * local attribute declaration (“ref”
 attribute is not used).
 
-A < _property_ > declaration is allowed in
+A `_<property>_` declaration is allowed in
 the annotation element of a local
 attribute.link:jaxb.html#a2217[See Annotation Restrictions]”
 contains more information regarding the annotation element for a local
@@ -1485,36 +1505,37 @@
 specified in link:jaxb.html#a1786[See Usage]” and have component
 scope.
 
-If _javaType_ is defined, then the
-_propertyBaseType_ is defined to be Java datatype specified in the
-_"name"_ attribute of the _javaType_ .
+If `_javaType_` is defined, then the
+`_propertyBaseType_` is defined to be Java datatype specified in the
+`"name"` attribute of the `_javaType_`.
 
-* If _fixedAttributeAsConstantProperty_ is “
-_true"_ or “ _1"_ and the local attribute is a fixed, the local
+* 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]”
+link:jaxb.html#a1277[See Bind to a Java Constant property]
 applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].” The
-generateIsSetMethod, choiceContentProperty and enableFailFastCheck must
-be considered to have been set to false.
+link:jaxb.html#a1847[See 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]”
 applying customization overrides as specified in
 link:jaxb.html#a1847[See Customization Overrides].”
 
-*Example: Customizing Java Constant Property*
+*_Example:_* Customizing Java Constant Property +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="USAddress">
-    <xs:attribute name="country" type="xs:NMTOKEN" fixed="US">
-        <xs:annotation><xs:appinfo>
-            <jaxb:property name="MY_COUNTRY"
-                           fixedAttributeAsConstantProperty="true"/>
-            </xs:appinfo></xs:annotation>
-        </xs:attribute>
+  <xs:attribute name="country" type="xs:NMTOKEN" fixed="US">
+    <xs:annotation><xs:appinfo>
+      <jaxb:property name="MY_COUNTRY"
+                     fixedAttributeAsConstantProperty="true"/>
+    </xs:appinfo></xs:annotation>
+  </xs:attribute>
 </xs:complexType>
 ----
 
@@ -1527,18 +1548,18 @@
 }
 ----
 
-*Example 2: Customizing to other Java Property*
+*_Example 2:_* Customizing to other Java Property +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="USAddress"> +
-    <xs:attribute name="country" type="xs:string">
-        <xs:annotation><xs:appinfo>
-            <jaxb:property name="MyCountry"/>
-        </xs:appinfo></xs:annotation>
-    </xs:attribute>
+  <xs:attribute name="country" type="xs:string">
+    <xs:annotation><xs:appinfo>
+      <jaxb:property name="MyCountry"/>
+    </xs:appinfo></xs:annotation>
+  </xs:attribute>
 </xs:complexType>
 ----
 
@@ -1554,16 +1575,16 @@
 }
 ----
 
-*Example 3: Generating IsSet Methods*
+*_Example 3:_* Generating IsSet Methods +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:attribute name="account" type = "xs:int">
-    <xs:annotation><xs:appinfo>
-        <jaxb:property generateIsSetMethod="true"/>
-    </xs:appinfo></xs:annotation>
+  <xs:annotation><xs:appinfo>
+    <jaxb:property generateIsSetMethod="true"/>
+  </xs:appinfo></xs:annotation>
 </xs:attribute>
 ----
 
@@ -1579,7 +1600,7 @@
 
 ===== Global Element Declaration
 
-A _<property>_ declaration is allowed in the
+A `_<property>_` declaration is allowed in the
 annotation element of a global element declaration. However, the usage
 is constrained as follows:
 
@@ -1602,7 +1623,7 @@
 * local element declaration (“ref” attribute
 is not used).
 
-A <property> declaration is allowed in the
+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 for a local element reference.
@@ -1611,23 +1632,23 @@
 specified in link:jaxb.html#a1786[See Usage]” and have component
 scope.
 
-If _javaType_ is defined, then the
-_propertyBaseType_ is defined to be Java datatype specified in the
-_"name"_ attribute of the _javaType_ .
+If `_javaType_` is defined, then the
+`_propertyBaseType_` is defined to be Java datatype specified in the
+`"name"` attribute of the `_javaType_`.
 
 The local element must be bound as specified
-in link:jaxb.html#a1414[See Content Model Default Binding]”
+in link:jaxb.html#a1414[See Content Model Default Binding]
 applying customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides].”
+link:jaxb.html#a1847[See 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].”
+link:jaxb.html#a1944[See Model Group].
 
 ===== Wildcard
 
-A _<property>_ declaration is allowed in the
+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.
@@ -1637,22 +1658,21 @@
 wildcard schema component]” applying customization overrides as
 specified in link:jaxb.html#a1847[See Customization Overrides].”
 
-Example: The following schema example is from
-UDDI V2.0
+*_Example:_* The following schema example is from UDDI V2.0 +
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="businessEntityExt">
-    <xs:sequence>
-        <xs:any namespace="##other"
-                processContents="strict"
-                minOccurs="1" maxOccurs="unbounded">
-            <xs:annotation><xs:appinfo>
-                <jaxb:property name="Extension"/>
-            </xs:appinfo></xs:annotation>
-        </xs:any>
-        ....
-    </xs:sequence>
+  <xs:sequence>
+    <xs:any namespace="##other"
+            processContents="strict"
+            minOccurs="1" maxOccurs="unbounded">
+      <xs:annotation><xs:appinfo>
+        <jaxb:property name="Extension"/>
+      </xs:appinfo></xs:annotation>
+    </xs:any>
+    ....
+  </xs:sequence>
 </xs:complexType>
 ----
 
@@ -1669,41 +1689,40 @@
 
 ===== Model Group
 
-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
+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
 scope.
 
 The customized binding of a model group is
 determined by the following:
 
-*  _choiceContentProperty_ attribute in
-_<globalBindings>_ .
-* If propertyBaseType is defined and a
-_<property>_ declaration is also present, then the customization
+* `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] 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
+. 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].”
+Set].
 
-*Example1: Property Customization: Model Group To ChoiceContent Property*
+*_Example 1:_* Property Customization: Model Group To ChoiceContent Property +
 
 XML Schema fragment
 
 [source,xml,indent=4]
 ----
 <xs:annotation><xs:appinfo>
-    <jaxb:globalBindings choiceContentProperty="true"/>
+  <jaxb:globalBindings choiceContentProperty="true"/>
 </xs:appinfo></xs:annotation>
 <xs:complexType name=”AType”>
-    <xs:choice>
-        <xs:element name="foo" type="xs:int"/>
-        <xs:element name="bar" type="xs:string"/>
-    </xs:choice>
+  <xs:choice>
+    <xs:element name="foo" type="xs:int"/>
+    <xs:element name="bar" type="xs:string"/>
+  </xs:choice>
 </xs:complexType>
 ----
 
@@ -1713,7 +1732,7 @@
 ----
 class ObjectFactory {
     JAXBElement<Integer> createAtypeFoo(Integer value);
-    JAXBElement<String> createAtypeBar(String value);
+    JAXBElement<String>  createAtypeBar(String value);
 }
 public class AType {
     void setFooOrBar(Object o) {...}    //customized code
@@ -1721,24 +1740,24 @@
 }
 ----
 
-The _choiceContentProperty_ is required to
+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:_* Property Customization: Model Group To General Content Property +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:complexType name="Base">
-    <xs:choice maxOccurs="unbounded">
-        <xs:annotation><xs:appinfo>
-            <jaxb:property name="items" />
-        </xs:appinfo></xs:annotation>
-        <xs:element name="A" type="xs:string"/>
-        <xs:element name="B" type="xs:string"/>
-        <xs:element name="C" type="xs:int"/>
-    </xs:choice>
+  <xs:choice maxOccurs="unbounded">
+    <xs:annotation><xs:appinfo>
+      <jaxb:property name="items" />
+    </xs:appinfo></xs:annotation>
+    <xs:element name="A" type="xs:string"/>
+    <xs:element name="B" type="xs:string"/>
+    <xs:element name="C" type="xs:int"/>
+  </xs:choice>
 </xs:complexType>
 ----
 
@@ -1748,15 +1767,15 @@
 ----
 public class Base {
     /**
-    * A general content list that can contain
-    * instances of Base.A, Base.B and Base.C.
-    */
+     * A general content list that can contain
+     * instances of Base.A, Base.B and Base.C.
+     */
     // List getAOrBOrC(); - default
-    List getItems()\{...} // Customized Code
+    List getItems() {...} // Customized Code
 }
 ----
 
-*Example 3: Property Customization: Model Group To Content Property Set*
+*_Example 3:_* Property Customization: Model Group To Content Property Set +
 
 XML Schema fragment:
 
@@ -1764,30 +1783,30 @@
 ----
 <xs:complexType name="USAddress"/>
 <xs:complexType name="PurchaseOrderType">
-    <xs:sequence>
-        <xs:choice>
-            <xs:group ref="shipAndBill"/>
-            <xs:element name="singleUSAddress" type="USAddress">
-                <xs:annotation><xs:appinfo>
-                    <jaxb:property name="address"/>
-                </xs:appinfo></xs:annotation>
-            </xs:element>
-        </xs:choice>
-    </xs:sequence>
+  <xs:sequence>
+    <xs:choice>
+      <xs:group ref="shipAndBill"/>
+      <xs:element name="singleUSAddress" type="USAddress">
+        <xs:annotation><xs:appinfo>
+          <jaxb:property name="address"/>
+        </xs:appinfo></xs:annotation>
+      </xs:element>
+    </xs:choice>
+  </xs:sequence>
 </xs:complexType>
 <xs:group name="shipAndBill">
-    <xs:sequence>
-        <xs:element name="shipTo" type="USAddress">
-            <xs:annotation><xs:appinfo>
-                <jaxb:property name="shipAddress"/>
-            </appinfo></annotation>
-        </xs:element>
-        <xs:element name="billTo" type="USAddress">
-            <xs:annotation><xs:appinfo>
-                <jaxb:property name="billAddress"/>
-            </xs:appinfo></xs:annotation>
-        </xs:element>
-    </xs:sequence>
+  <xs:sequence>
+    <xs:element name="shipTo" type="USAddress">
+      <xs:annotation><xs:appinfo>
+        <jaxb:property name="shipAddress"/>
+      </appinfo></annotation>
+    </xs:element>
+    <xs:element name="billTo" type="USAddress">
+      <xs:annotation><xs:appinfo>
+        <jaxb:property name="billAddress"/>
+      </xs:appinfo></xs:annotation>
+    </xs:element>
+  </xs:sequence>
 </xs:group>
 ----
 
@@ -1807,7 +1826,7 @@
 A model group reference is a reference to a
 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
+link:jaxb.html#a2217[See Annotation Restrictions] contains more
 information regarding the annotation element for a model group
 reference.
 
@@ -1816,13 +1835,13 @@
 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].”
+link:jaxb.html#a1847[See Customization Overrides].
 
 ===== ComplexType
 
-A _<property>_ customization is allowed on
+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 link:jaxb.html#a1786[See Usage] and
 have component scope. The result of this customization depends upon the
 content type of the complex type.
 
@@ -1831,23 +1850,33 @@
 specified in link:jaxb.html#a973[See Simple Content Binding].”
 applying the customization overrides as specified in
 link:jaxb.html#a1847[See Customization Overrides].” If
-_javaType_ is defined, then the _propertyBaseType_ is defined to be Java
-datatype specified in the _"name"_ attribute of the _javaType_ .
+`_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]”
 applying the customization overrides as specified in
-link:jaxb.html#a1847[See Customization Overrides]".
-* 
+link:jaxb.html#a1847[See Customization Overrides].
 
-=== _<javaType>_ Declaration
+[NOTE]
+.Design Note
+====
+The <property> declaration is not allowed on an annotation element
+of attribute group definition. However, attributes within
+the attribute group definition can themselves be customized
+as described in the “Local Attribute” section above.
+Section 7.8.4.2, “Local Attribute.”
 
-A _<javaType>_ declaration provides a way to
+====
+
+=== `<javaType>` Declaration
+
+A `<javaType>` declaration provides a way to
 customize the binding of an XML schema atomic datatype to a Java
-datatype, referred to as the target Java datatype. The target Java
+datatype, referred to as the _target Java datatype_. The target Java
 datatype can be a Java built-in data type or an application specific
-Java datatype. This declaration also provides two additional methods: a
-parse method and a print method.
+Java datatype. This declaration also provides two additional methods:
+a _parse method_ and a _print method_.
 
 The parse method converts a lexical
 representation of the XML schema datatype into a value of the target
@@ -1863,189 +1892,197 @@
 
 [source,xml,indent=4]
 ----
-<javaType name=" _javaType_ "
-            [ xmlType=" _xmlType_ " ]
-            [ parseMethod="parseMethod" ]
-            [ printMethod="printMethod" ]>
+<javaType name="javaType"
+            [ xmlType = "xmlType" ]
+            [ parseMethod = "parseMethod" ]
+            [ printMethod = "printMethod" ]>
 ----
 
 The binding declaration can be used in one of
 the following:
 
-* a _<globalBindings>_ declaration.
+* a `<globalBindings>` declaration.
 * annotation element of one of the XML schema
 elements specified in link:jaxb.html#a2079[See Customizable
 Schema Elements].”
-* in a <property> declaration. See
-link:jaxb.html#a1783[See <property> Declaration].” This can be
+* in a `<property>` declaration. See
+link:jaxb.html#a1783[See <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
+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.
 
 ===== name
 
-The _javaType_ , if specified, is the Java
-datatype to which _xmlType_ is to be bound. Therefore, _javaType_ must
+The `_javaType_`, if specified, is the Java
+datatype to which `_xmlType_` is to be bound. Therefore, `_javaType_` must
 be a legal Java type name, which may include a package prefix. If the
 package prefix is not present, then the Java type name must be one of
 the Java built-in primitive types [JLS - Java Language Specification,
 Second Edition, Section 4.2, “Primitive Types and Values”]. (For
-example, “ _int_ ”) or a Java class in the unnamed package. If class
+example, `"int"`) or a Java class in the unnamed package. If class
 javaType declares a public constructor with following signature,
-_javaType(java.lang.String)_ , _parseMethod_ attribute does not need to
+`javaType(java.lang.String)`, `parseMethod` attribute does not need to
 be specified.
 
-=====  _xmlType_
+===== xmlType
 
-The _xmlType_ , if specified, is the name of
-the XML Schema datatype to which _javaType_ is to bound. If specified,
-_xmlType_ must be a XML atomic datatype derived from restriction. The
-use of the _xmlType_ is further constrained as follows.
+The `_xmlType_`, if specified, is the name of
+the XML Schema datatype to which `_javaType_` is to bound. If specified,
+`_xmlType_` must be a XML atomic datatype derived from restriction. The
+use of the `_xmlType_` is further constrained as follows.
 
-The purpose of the _xmlType_ attribute is to
+The purpose of the `_xmlType_` attribute is to
 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
+`_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
 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,
+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].”
+link:jaxb.html#a1544[See 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]”
+Customization: User Specified Parse Method]
 
-=====  _parseMethod_
+===== parseMethod
 
 The parse method if specified, must be
 applied during unmarshalling in order to convert a string from the input
 document into a value of the target Java datatype. The parse method must
 be invoked as follows:
 
-* 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
+* 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
 target type is a class that defines a constructor as follows:
-*  _String_ as the first parameter of the
-constructor.
-
++
+--
+** `String` as the first parameter of the constructor.
+--
++
 To apply the conversion to a string it must
 generate code that invokes this constructor, passing it the input
 string.
 
 * The parse method may be specified in the
-form _ClassName.methodName,_ where the ClassName is a fully qualified
+form _ClassName.methodName,_ where the _ClassName_ is a fully qualified
 class name that includes the package name. A compiler must assume that
 the class _ClassName_ exists and that it defines a static method named
 _methodName_ that takes:
-*  _String_ as the first argument.
-
++
+--
+** `String` as the first argument.
+--
++
 To apply the conversion to a string it must
 generate code that invokes this method, passing it the input string.
 
 * The parse method may be specified in the
-form _methodName_ provided _javaType_ is not a Java primitive type (such
-as _"int"_ ). If _javaType_ is Java primitive type, then this must
+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,
+link:jaxb.html#a1544[See 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
+class `_javaType_`. The binding compiler must therefore prefix the
+`_javaType_` to the _methodName_ and process `_javaType_`._methodName_ as
 specified in above.
 
 The string passed to parse method can be any
-lexical representation for _xmlType_ as specified in [XSD PART2].
+lexical representation for `xmlType` as specified in [XSD PART2].
 
 If parseMethod attribute is not specified,
-_xmlType_ is not a primitive or wrapper class and _javaType_ has an
+`xmlType` is not a primitive or wrapper class and `javaType` has an
 accessible one argument constructor, where the argument is type
-_java.lang.String_ , input text is parsed by invoking _new_ with a
-_java.lang.String_ parameter.
+`java.lang.String`, input text is parsed by invoking `new` with a
+`java.lang.String` parameter.
 
-=====  _printMethod_
+===== printMethod
 
 The print method if specified, must be
 applied during marshalling in order to convert a value of the target
 type into a lexical representation:
 
 * The print method is specified in the form
-_methodName_ provided _javaType_ is not a Java primitive type (such as
-_"int"_ ). If _javaType_ is Java primitive type, then this must result
+_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,
+link:jaxb.html#a1544[See 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
+returns a `String`. To apply the conversion it must generate code to
 invoke this method upon an instance of the target Java datatype.
 * If the print method is specified in the
 form _ClassName.methodName_ then the compiler must assume that the class
 _ClassName_ exists and that it defines a static method named
 _methodName_ that returns a string that takes the following:
-* the first parameter is the target Java
++
+--
+** the first parameter is the target Java
 datatype.
-
+--
++
 To apply the conversion to a string it must
 generate code that invokes this method, passing it a value of the target
 Java datatype.
 
 The lexical representation to which the value
 of the target type is converted can be any lexical representation for
-_xmlType_ as specified in [XSD PART2].
+`xmlType` as specified in [XSD PART2].
 
-If _printMethod_ attribute is not specified
-and _xmlType_ is not a primitive or wrapper class, _javaType.toString()_
+If `printMethod` attribute is not specified
+and `xmlType` is not a primitive or wrapper class, `javaType.toString()`
 is used as the default print method..
 
 
 
-====  _DatatypeConverter_
+==== DatatypeConverter
 
 Writing customized parse and print methods
 can be difficult for a Java programmer. This requires a programmer to
 understand the lexical representations of XML schema datatypes. To make
-it easier, an interface, _DatatypeConverterInterface,_ and a class
-_DatatypeConverter_ are defined to expose the parse and print methods of
+it easier, an interface, `DatatypeConverterInterface`, and a class
+`DatatypeConverter` are defined to expose the parse and print methods of
 a JAXB implementation. These can be invoked by user defined parse and
 print methods. This shifts the burden of dealing with lexical spaces
 back to the JAXB implementation.
 
-The _DatatypeConverterInterface_ defines
+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
-_jakarta.xml.bind.DatatypeConverterInterface_ .
+`jakarta.xml.bind.DatatypeConverterInterface`.
 
-The _DatatypeConverter_ class defines a
+The `DatatypeConverter` class defines a
 static parse and print method corresponding to each parse and print
-method respectively in the _DatatypeConverterInterface_ interface. The
-property _jakarta.xml.bind.DatatypeConverter_ can be used to select the
+method respectively in the `DatatypeConverterInterface` interface. The
+property `jakarta.xml.bind.DatatypeConverter` can be used to select the
 name of a class that provides an implementation of the parse and print
 methods. The name specified in the property must be a fully qualified
-class name and must implement the interface _DatatypeConverterInterface_
+class name and must implement the interface `DatatypeConverterInterface`
 . The class is fully specified by the Javadoc specified in
-_jakarta.xml.bind.DatatypeConverter_ .
+`jakarta.xml.bind.DatatypeConverter`.
 
 ===== Usage
 
 The following example demonstrates the use of
-the _DatatypeConverter_ class for writing a customized parse and print
+the `DatatypeConverter` class for writing a customized parse and print
 method.
 
-*Example: javaType Customization: User Specified Parse Method*
+*_Example:_* 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
+type `"xs:date"` is bound to a Java datatype `long` using user specified
 print and parse methods.
 
 [source,xml,indent=4]
@@ -2076,13 +2113,13 @@
 ----
 
 The implementation of the print methods (
-_parseDate_ and _printDate_ ) are provided by the user.
+`_parseDate_` and `_printDate_`) are provided by the user.
 
 The customization is applied during the
 processing of XML instance document. During unmarshalling, the JAXB
-implementation invokes _myParseDate_ . If _myParseDate_ method throws a
-_ParseException_ , then the JAXB implementation code catches the
-exception, and generate a _parseConversionEvent_ .
+implementation invokes `_myParseDate_`. If `_myParseDate_` method throws a
+`_ParseException_`, then the JAXB implementation code catches the
+exception, and generate a `_parseConversionEvent_`.
 
 ===== Lexical And Value Space
 
@@ -2093,10 +2130,10 @@
 Examples of multiple lexical representations
 for a single value are:
 
-* For boolean, the value _true_ has two
-lexical representations _"true"_ and _"1"._
-* For integer, the value _1_ has two lexical
-representations _"1.0"_ and _"1"._
+* For boolean, the value `true` has two
+lexical representations `"true"` and `"1"`.
+* For integer, the value `1` has two lexical
+representations `"1.0"` and `"1"`.
 
 XSD PART 2 also specifies a canonical
 representation for all XML schema atomic datatypes.
@@ -2105,16 +2142,29 @@
 methods are as follows:
 
 * A JAXB implementation of a parse method in
-_DatatypeConverterInterface_ must be capable of a processing all lexical
+`DatatypeConverterInterface` must be capable of a processing all lexical
 representations for a value as specified by [XSD PART 2]. This ensures
 that an instance document containing a value in any lexical
 representation specified by [XSD PART 2] can be marshalled.
 * A JAXB implementation of a print method in
-_DatatypeConverterInterface_ must convert a value into any lexical
+`DatatypeConverterInterface` must convert a value into any lexical
 representation of the XML schema datatype to which the parse method
 applies, as specified by [XSD PART 2] and which is valid with respect to
 the application’s schema.
-* 
+
+[NOTE]
+.Design Note
+====
+The print methods that are exposed may not be portable. The only
+requirement on a print method is that it must output
+a lexical representation that is valid with respect to the schema.
+So two vendors can choose to output different lexical representations.
+However, there is value in exposing them despite being non portable.
+Without the print method, a user would have to be knowledgeable about
+how to output a lexical representation for a given schema datatype,
+which is not desirable.
+
+====
 
 ==== Built-in Conversions
 
@@ -2129,29 +2179,29 @@
 [source,xml,indent=4]
 ----
 <xs:simpleType name="foo" type="xs:long">
-    <xs:annotation><xs:appinfo>
-        <jaxb:javaType name="int"/>
-    </xs:appinfo></xs:annotation>
+  <xs:annotation><xs:appinfo>
+    <jaxb:javaType name="int"/>
+  </xs:appinfo></xs:annotation>
 </xs:simpleType>
 ----
 
 If the parse method is omitted, then a JAXB
 implementation must perform the one of the following binding options:
 
-. If _javaType_ is one of the following
-primitive types or its corresponding wrapper class _byte, short, int,
-long, float, double_ , bind _xmlType_ to its default Java datatype using
-the parse method for the _xmlType_ defined in _DatatypeConverter_ . If
-necessary, convert the default Java datatype for _xmlType_ to value of
-type _javaType_ by a type cast.
-. Else if default Java datatype defines a
-public one-argument constructor that takes a _java.lang.String_ , use
-_new_ with a _java.lang.String_ parameter for parsing.
-. Else javaType(java.lang.String) does not
+.. If `_javaType_` is one of the following
+primitive types or its corresponding wrapper class `byte`, `short`, `int`,
+`long`, `float`, `double` , bind `_xmlType_` to its default Java datatype using
+the parse method for the `_xmlType_` defined in `DatatypeConverter`. If
+necessary, convert the default Java datatype for `xmlType` to value of
+type `_javaType_` by a type cast.
+.. Else if default Java datatype defines a
+public one-argument constructor that takes a `java.lang.String`, use
+`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].
 
-*Example: javaType Customization: Java Built-in Type*
+*_Example:_* 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.
@@ -2176,35 +2226,35 @@
 
 Since a Java built-in is specified, a parse
 or a print method need not be specified. A JAXB implementation uses the
-parse and print methods defined in _DatatypeConverter_ class for
+parse and print methods defined in `DatatypeConverter` class for
 converting between lexical representations and values. A JAXB
 implementation unmarshals an input value using the following methods:
 
-[source,java,indent=4]
+[source,java,indent=8]
 ----
-    int j =(int)DataTypeConverter.parseLong(string);
+int j = (int) DataTypeConverter.parseLong(string);
 ----
 
 ==== Events
 
-The parse method _parseMethod_ may fail,
+The parse method `_parseMethod_` may fail,
 since it is only defined on those strings that are valid representations
 of target Java datatype values and it can be applied to arbitrary
 strings. A parse method must indicate failure by throwing an exception
 of whatever type is appropriate, though it should never throw a
-_TypeConstraintException_ . A JAXB unmarshaller process must ensure that
+`TypeConstraintException`. A JAXB unmarshaller process must ensure that
 an exception thrown by a parse method is caught and, if appropriate, a
-_parseConversionEvent_ event is generated.
+`parseConversionEvent` event is generated.
 
-The print method _printMethod_ usually does
+The print method `_printMethod_` usually does
 not fail. If it does, then the JAXB implementation must ensure that the
 exception thrown by a print method is caught and a
-_printConversionEvent_ is generated.
+`printConversionEvent` is generated.
 
 ==== Customization Overrides
 
-The _<javaType>_ overrides the default
-binding of _xmlType_ to the Java datatype specified in
+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].
 
@@ -2212,54 +2262,54 @@
 
 ==== Simple Type Definition
 
-A _<javaType>_ binding declaration is allowed
+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
+`_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
 definition scope and thus covers all references to this simple type
 definition.
 
 If the simple type definition is mapped to a
-schema-derived type, an _@XmlJavaTypeAdapter_ is generated on that
-class. Annotation element _@XmlJavaTypeAdapter.value()_ is set to a
+schema-derived type, an `@XmlJavaTypeAdapter` is generated on that
+class. Annotation element `@XmlJavaTypeAdapter.value()` is set to a
 generated classfootnote:[There is no need to
 standardize the name of the generated class since
 _@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
+`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
+<javaType> Declaration]. The generated class’ `marshal` method must call
 the <javaType> customization’s print method.
 
-=====  _GlobalBindings_
+===== 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
+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.
 
 For each element or attribute declaration
-that references an _xmlType_ that has a globalBindings _<javaType>_
+that references an `xmlType` that has a globalBindings `<javaType>`
 customization specified for it, the corresponding JAXB property is
-annotated with _@XmlJavaTypeAdapter_ .
+annotated with `@XmlJavaTypeAdapter`.
 
-=====  _<property><baseType>_ declaration
+===== `<property><baseType>` declaration
 
-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
+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
+link:jaxb.html#a1801[See baseType] also
 apply.
 
 The schema-derived JAXB property is annotated
-with _@XmlJavaTypeAdapter_ as specified in
-link:jaxb.html#a1801[See baseType]”.
+with `@XmlJavaTypeAdapter` as specified in
+link:jaxb.html#a1801[See baseType].
 
-=== _<typesafeEnum>_ Declaration
+=== `<typesafeEnum>` Declaration
 
 This binding declaration allows the
 customization of a binding of an XML schema element to its Java
@@ -2272,7 +2322,7 @@
 ----
 <typesafeEnumClass>
     [ name = "enumClassName" ]
-    [ map = “true” | “false” | “1” | “0” ]
+    [ map = "true" | "false" | "1" | "0" ]
     [ ref = "enumClassName" ]
     [ <typesafeEnumMember> ... </typesafeEnumMember> ]*
     [ <javadoc> enumClassJavadoc </javadoc> ]
@@ -2284,88 +2334,88 @@
 </typesafeEnumMember>
 ----
 There are two binding declarations
-_<typesafeEnumClass>_ and _<typesafeEnumMember>_ . The two binding
+`_<typesafeEnumClass>_` and `_<typesafeEnumMember>_`. The two binding
 declarations allow the enumeration members of an enumeration class and
 enumeration class itself to be customized independently.
 
-The < _typesafeEnumClass>_ declaration
+The `_<typesafeEnumClass>_` declaration
 defines the following customization values:
 
-*  _name_ defines the customization value
-_enumClassName_ , if specified. _enumClassName_ must be a legal Java
-Identifier; it must not have a package prefix. +
+* `name` defines the customization value
+`_enumClassName_`, if specified. `_enumClassName_` must be a legal Java
+Identifier; it must not have a package prefix.
  +
-For an anonymous simple type, the _name_ attribute must be present. If
+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].”
-*  _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
-type. _map_ defaults to _true_ .
-*  _ref_ if specified, is the name of the
+link:jaxb.html#a1544[See 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
+type. `map` defaults to `true`.
+* `ref` if specified, is the name of the
 enum class that is provided outside the schema compiler. This
 customization causes a schema compiler to refer to this external enum,
 as opposed to generate a definition. It must include the complete
-package name. This attribute is mutually exclusive with the _className_
-attribute and the _map_ attribute.
-*  _<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].”
-* Zero or more _<typesafeEnumMember>_
+package name. This attribute is mutually exclusive with the `className`
+attribute and the `map` attribute.
+* `<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].
+* Zero or more `_<typesafeEnumMember>_`
 declarations. The customization values are as defined as specified by
-the _<typesafeEnumMember>_ declaration.
+the `_<typesafeEnumMember>_` declaration.
 
-The _<typesafeEnumMember>_ declaration
+The `_<typesafeEnumMember>_` declaration
 defines the following customization values:
 
-*  _name_ must always be specified and
-defines a customization value _enumMemberName_ . _enumMemberName_ must
+* `name` must always be specified and
+defines a customization value `_enumMemberName_`. `_enumMemberName_` must
 be a legal Java identifier.
-*  _value_ defines a customization value
-_enumMemberValue_ , if specified. _enumMemberValue_ must be the
-enumeration value specified in the source schema. The usage of _value_
+* `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].”
-*  _<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>` 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].
 
 For inline annotation, the
-_<typesafeEnumClass>_ must be specified in the annotation element of the
-< _simpleType_ > element. The _<typesafeEnumMember>_ must be specified
+`<typesafeEnumClass>` must be specified in the annotation element of the
+`<simpleType>` element. The `<typesafeEnumMember>` must be specified
 in the annotation element of the enumeration member. This allows the
 enumeration member to be customized independently from the enumeration
 class.
 
-====  _value_ Attribute
+==== `value` Attribute
 
 The purpose of the _value_ attribute is to
 support customization of an enumeration value using an external binding
-syntax. When the _<typesafeEnumMember>_ is used in an inline annotation,
+syntax. When the `<typesafeEnumMember>` is used in an inline annotation,
 the enumeration value being customized can be identified by the
 annotation element with which it is associated. However, when an
 external binding declaration is used, while possible, it is not
 desirable to use XPath to identify an enumeration value.
 
 So when customizing using external binding
-syntax, the _value_ attribute must be provided. This serves as a key to
-identify the enumeration value to which the _<typesafeEnumMember>_
+syntax, the `value` attribute must be provided. This serves as a key to
+identify the enumeration value to which the `<typesafeEnumMember>`
 applies. It’s use is therefore further constrained as follows:
 
-* When _<typesafeEnumMember>_ is specified in
+* When `<typesafeEnumMember>` is specified in
 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].”
-* When _<typesafeEnumMember>_ is scoped to
-the _typesafeEnumClass_ declaration, the value attribute must be
+* 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
-enumeration member to which the _<typesafeEnumMember>_ applies.
+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
@@ -2381,17 +2431,17 @@
 
 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
+`<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].”
 
 In combined inline annotation, the
 enumeration value and the enumeration class are customized together i.e.
-the _<typesafeEnumMember>_ is used as a child element of
-_<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
+the `<typesafeEnumMember>` is used as a child element of
+`<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].”
@@ -2404,66 +2454,74 @@
 common section here and referenced from link:jaxb.html#a1857[See
 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].”
-* *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].”
-* *enumclass javadoc:* _enumClassJavaDoc_ if
-defined, customizes the _class/interface section (_
-link:jaxb.html#a2145[See Javadoc Sections]”) for the enumeration
+* *name*: If _enumClassName_ is defined, then the
+name obtained by mapping _enumClassName_ as specified in
+link:jaxb.html#a1608[See 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].
+* *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].”
-* *enum constant set:* Each member of the set
+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].”
-* *javadoc:* _enumMemberJavaDoc_ if defined,
-customizes the _field section (_ link:jaxb.html#a2145[See
+** *name*: If _enumMemberName_ is defined, the
+name obtained by mapping _enumMemberName_ as specified in
+link:jaxb.html#a1608[See 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].”
+link:jaxb.html#a2163[See Javadoc Customization].
 
 ==== Customizable Schema Elements
 
 Any XML Schema simple type which has an
-enumeration facet can be customized with _<jaxb:typesafeEnumClass>_
+enumeration facet can be customized with `<jaxb:typesafeEnumClass>`
 declaration with the following exception. If the simple type definition
-derives from _xs:QName. xs:NOTATIION, xs:base64Binary, xs:hexBinary,
-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
+derives from `_xs:QName_`. `_xs:NOTATIION_`, `_xs:base64Binary_`, `_xs:hexBinary_`,
+`_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
+link:jaxb.html#a1544[See 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.
 
-* 
+[NOTE]
+.Design Note
+====
+The rationale for not allowing a type definition that derives from `xs:ID`
+to bind to an enum type is to avoid complicating the resolution of `xs:IDREF`
+values to `xs:ID` values. It is easiest if `xs:ID` values are always mapped to
+an instance of `java.lang.String`.
 
-*Example 1: typesafeEnum Customization: Split Inline Annotation*
+====
+
+*_Example 1:_* typesafeEnum Customization: Split Inline Annotation +
 
 XML Schema fragment:
 
 [source,xml,indent=4]
 ----
 <xs:simpleType name="USState">
-    <xs:annotation><xs:appinfo>
-        <jaxb:typesafeEnumClass name="USStateAbbr"/>
-    </xs:appinfo></xs:annotation>
-    <xs:restriction base="xs:NCName">
-        <xs:enumeration value="AK">
-            <xs:annotation><xs:appinfo>
-                <jaxb:typesafeEnumMember name="STATE_AK"/>
-            </xs:appinfo></xs:annotation>
-        </xs:enumeration>
-        <xs:enumeration value="AL">
-            <xs:annotation><xs:appinfo>
-                <jaxb:typesafeEnumMember name="STATE_AL"/>
-            </xs:appinfo></xs:annotation>
-        </xs:enumeration>
-    </xs:restriction>
+  <xs:annotation><xs:appinfo>
+    <jaxb:typesafeEnumClass name="USStateAbbr"/>
+  </xs:appinfo></xs:annotation>
+  <xs:restriction base="xs:NCName">
+    <xs:enumeration value="AK">
+      <xs:annotation><xs:appinfo>
+        <jaxb:typesafeEnumMember name="STATE_AK"/>
+      </xs:appinfo></xs:annotation>
+    </xs:enumeration>
+    <xs:enumeration value="AL">
+      <xs:annotation><xs:appinfo>
+        <jaxb:typesafeEnumMember name="STATE_AL"/>
+      </xs:appinfo></xs:annotation>
+    </xs:enumeration>
+  </xs:restriction>
 </xs:simpleType>
 ----
 
@@ -2478,7 +2536,7 @@
 };
 ----
 
-*Example 2: typesafeEnum Customization: External Binding Declaration*
+*_Example 2:_* typesafeEnum Customization: External Binding Declaration +
 
 The following example shows how to customize
 the above XML schema fragment using an external binding syntax.
@@ -2491,11 +2549,11 @@
 </jaxb:typesafeEnumClass>
 ----
 
-The attribute _value_ must be specified for
-_<typesafeEnumMember>_ . This identifies the enumeration member to which
-_<typesafeEnumMember>_ applies.
+The attribute `value` must be specified for
+`<typesafeEnumMember>`. This identifies the enumeration member to which
+`<typesafeEnumMember>` applies.
 
-*Example 3: typesafeEnum Customization: Combined Inline Annotation*
+*_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
@@ -2504,57 +2562,52 @@
 [source,xml,indent=4]
 ----
 <xs:simpleType name="USState">
-    <xs:annotation><xs:appinfo>
-        <jaxb:typesafeEnumClass name="USStateAbbr">
-            <jaxb:typesafeEnumMember name="STATE_AK" value="AK"/>
-            <jaxb:typesafeEnumMember name="STATE_AL" value="AL"/>
-        </jaxb:typesafeEnumClass>
-    </xs:appinfo></xs:annotation>
-    <xs:restriction base="xs:NCName">
-        <xs:enumeration value="AK"/>
-        <xs:enumeration value="AL"/>
-    </xs:restriction>
+  <xs:annotation><xs:appinfo>
+    <jaxb:typesafeEnumClass name="USStateAbbr">
+      <jaxb:typesafeEnumMember name="STATE_AK" value="AK"/>
+      <jaxb:typesafeEnumMember name="STATE_AL" value="AL"/>
+    </jaxb:typesafeEnumClass>
+  </xs:appinfo></xs:annotation>
+  <xs:restriction base="xs:NCName">
+    <xs:enumeration value="AK"/>
+    <xs:enumeration value="AL"/>
+  </xs:restriction>
 </xs:simpleType>
 ----
 
 The attribute value must be specified for
-_typesafeEnumMember_ . This identifies the enumeration member to which
+`typesafeEnumMember`. This identifies the enumeration member to which
 the binding declaration applies.
 
-===  _<javadoc>_ Declaration
+=== `<javadoc>` Declaration
 
-The _<javadoc>_ declaration allows the
+The `<javadoc>` declaration allows the
 customization of a javadoc that is generated when an XML schema
 component is bound to its Java representation.
 
 This binding declaration is not a global XML
 element. Hence it can only be used as a local element within the content
 model of another binding declaration. The binding declaration in which
-it is used determines the section of the Javadoc that is customized.
+it is used determines the _section_ of the Javadoc that is customized.
 
 ==== Javadoc Sections
 
 The terminology used for the javadoc sections
 is derived from “Requirements for Writing Java API Specifications” which
-can be found online at http:
-_//java.sun.com/j2se/javadoc/writingapispecs/index.html._
+can be found online at `https://www.oracle.com/java/technologies/javase/api-specifications.html`.
 
 The following sections are defined for the
 purposes for customization:
 
-* package section (corresponds to package
-specification)
-* class/interface section (corresponds to
-class/interface specification)
-* method section (corresponds to method
-specification)
-* field section (corresponds to field
-specification)
+* package section (corresponds to package specification)
+* class/interface section (corresponds to class/interface specification)
+* method section (corresponds to method specification)
+* field section (corresponds to field specification)
 
 ==== Usage
 
-Note that the text content of a _<javadoc>_
-element must use _CDATA_ or _&lt;_ to escape embedded HTML tags.
+Note that the text content of a `<javadoc>`
+element must use `CDATA` or `\&lt;` to escape embedded HTML tags.
 
 [source,xml,indent=4]
 ----
@@ -2577,31 +2630,30 @@
 ==== Javadoc Customization
 
 The Javadoc must be generated from the
-_<javadoc>_ element if specified. The Javadoc section depends upon where
-_<javadoc>_ element is used. JAXB providers may generate additional
+`<javadoc>` element if specified. The Javadoc section depends upon where
+`<javadoc>` element is used. JAXB providers may generate additional
 provider specific Javadoc information (for example, contents of the
-_<xs:documentation>_ element).
+`<xs:documentation>` element).
 
-===  _<dom>_ Declaration
+=== `<dom>` Declaration
 
-The _<dom>_ customization binds an XML Schema
+The `<dom>` customization binds an XML Schema
 component to DOM rather than to a strongly typed Java representation.
 Specifically, JAXB bindings for mixed content and wildcard result in a
 hybrid mixture of strongly typed Java instances with DOM nodes or
 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 JAX-WS 2.0
+represented as DOM. This customization also meets a Jakarta XML Web Services
 databinding requirement from link:jaxb.html#a179[See Disabling
 Databinding]”.
 
 ==== Usage
 
-The syntax for the customization is the
-following:
+The syntax for the customization is the following:
 
 [source,xml,indent=4]
 ----
-    <dom [ [type= "w3c" | _otherDomRepresentations_ ] />
+    <dom [ [type= "w3c" | otherDomRepresentations ] />
 ----
 
 You can use the optional type attribute to
@@ -2612,39 +2664,36 @@
 This customization can be attached to the
 following XML Schema components:
 
-* Element declaration ( _<xs:element>_ )
-* Type definition ( _<xs:complexType>_ and
-_<xs:simpleType>_ )
-* Wildcard ( _<xs:any>_ )
-* Model groups ( _<xs:choice>_ _,_ _<xs:all>_
-_,_ _<xs:sequence>_ )
-* Model group definition ( _<xs:group>_ )
+* Element declaration (`<xs:element>`)
+* Type definition (`<xs:complexType>` and `<xs:simpleType>`)
+* Wildcard (`<xs:any>`)
+* Model groups (`<xs:choice>`, `<xs:all>`, `<xs:sequence>`)
+* Model group definition (`<xs:group>`)
 * Particle
 
 For all of the above cases, the Java
 representation of the DOM element is an instance of the Element class
 for the specified DOM representation. For example, W3C DOM element is
-bound to _org.w3c.dom.Element_ .
+bound to `org.w3c.dom.Element`.
 
-Special Case Handling of DOM customization on
-a:
+Special Case Handling of DOM customization on a:
 
-*  _type definition_ - it is semantically
+* _type definition_ - it is semantically
 equivalent to placing the dom customization on each element declaration
 referencing that type definition.
-*  _global element declaration_ - it is
+* _global element declaration_ - it is
 semantically equivalent to placing the dom customization on each element
-declaration referencing, via _@ref_ , the global element declaration.
+declaration referencing, via `@ref` , the global element declaration.
 The dom customization on the global element declaration does not cause
 that element to be unmarshalled as DOM when it is the root element of an
 XML document nor when the element is part of a wildcard content JAXB
 property.
-*  _mixed content_ - if an XML schema
-component is annotated with a _dom_ customization and that XML schema
+* _mixed content_ - if an XML schema
+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]”.
+Bind mixed content].
 
 The dom customization allows one to disable
 databinding and process a part of a document using other technologies
@@ -2652,22 +2701,22 @@
 
 ==== Examples
 
-*Wildcard Binding Example*
+*_Wildcard Binding Example_*
 
 A wildcard is mapped to a List of
-_org.w3c.dom.Element_ . Each element that matches to the wildcard will
+`org.w3c.dom.Element`. Each element that matches to the wildcard will
 be turned into a DOM tree.
 
 [source,xml,indent=4]
 ----
 <xs:complexType name=”foo”>
-    <xs:sequence>
-        <xs:any maxOccurs="unbounded" processContents="lax">
-            <xs:annotation><xs:appinfo>
-                <jaxb:dom/>
-            </xs:appinfo></xs:annotation>
-        </xs:any>
-    </xs:sequence>
+  <xs:sequence>
+    <xs:any maxOccurs="unbounded" processContents="lax">
+      <xs:annotation><xs:appinfo>
+        <jaxb:dom/>
+      </xs:appinfo></xs:annotation>
+    </xs:any>
+  </xs:sequence>
 </xs:complexType>
 ----
 
@@ -2680,28 +2729,28 @@
 }
 ----
 
-*Wildcard and Mixed Content Binding Example*
+*_Wildcard and Mixed Content Binding Example_*
 
 If the complexType definition above is
-defined to have mixed content, due to element _[complexType]_ __ having
-attribute _@mixed=”true”_ , the JAXB binding is:
+defined to have mixed content, due to element *[complexType]* having
+attribute `@mixed="true"`, the JAXB binding is:
 
 [source,java,indent=4]
 ----
 import org.w3c.dom.Element;
 public class Foo {
-    /* Element content is represented _org.w3c.dom.Element_ .
-    * Character data information is represented as instances of
-    * _java.lang.String_ . */
+    /* Element content is represented org.w3c.dom.Element.
+     * Character data information is represented as instances of
+     * java.lang.String. */
     @XmlMixed
     @XmlAnyElement(lax=”false”)
     List<Object> getContent() {...}
 }
 ----
 
-===  _<inlineBinaryData>_ Declaration
+=== `<inlineBinaryData>` Declaration
 
-The _<inlineBinaryData>_ customization
+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].
@@ -2713,7 +2762,7 @@
 
 [source,xml,indent=4]
 ----
-    <inlineBinaryData/>
+<inlineBinaryData/>
 ----
 
 This customization disables considering the
@@ -2722,25 +2771,24 @@
 This customization can be attached to the
 following XML Schema components:
 
-* Element declaration ( _<xs:element>_ ) with
-binary data or
-* Type definition ( _<xs:complexType>_ and
-_<xs:simpleType>_ ) deriving from binary datatype
+* Element declaration (`<xs:element>`) with binary data or
+* Type definition (`<xs:complexType>` and
+`<xs:simpleType>`) deriving from binary datatype
 
 When a schema component that binds to a JAXB
-property is customized with <inlineBinaryData>, its schema-derived JAXB
-property is annotated with _@XmlInlineBinaryData_ . When a type
-definition is customized with <inlineBinaryData>, its schema-derived
-class is annotated with program annotation _@XmlInlineBinaryData_ .
+property is customized with `<inlineBinaryData>`, its schema-derived JAXB
+property is annotated with `@XmlInlineBinaryData`. When a type
+definition is customized with `<inlineBinaryData>`, its schema-derived
+class is annotated with program annotation `@XmlInlineBinaryData`.
 
-===  _<factoryMethod>_ Declaration
+=== `<factoryMethod>` Declaration
 
-The _<factoryMethod>_ customization provides
+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
+generated in a package’s `ObjectFactory` class introduced in
+link:jaxb.html#a482[See Java Package]. This customization is
 useful to resolve name collisions between factory methods in the
-schema-derived _ObjectFactory_ class.
+schema-derived `ObjectFactory` class.
 
 ==== Usage
 
@@ -2754,24 +2802,24 @@
 
 The customization value defined is:
 
-*  _name -_ each character of name must be a
+* `_name_` - each character of name must be a
 valid part of a Java identifier as determined by
-_java.lang.Character.isJavaIdentifierPart()._
+`java.lang.Character.isJavaIdentifierPart()`.
 
 The name of the factory method is generated
 by concatenating the following components:
 
-* The string constant _create_
-*  _@name_ ’s value
+* The string constant `create`
+* ``@name``’s value
 
 ===== Usage Constraints
 
-The usage constraints on _<factoryMethod>_
+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:
 
-.  _<factoryMethod>_ is only allowed to
+. `<factoryMethod>` is only allowed to
 annotate an element declaration or a type definition.
 
 Note that this customization does not require
@@ -2804,10 +2852,10 @@
 [source,xml,indent=4]
 ----
 <xs:element name = "Customer">
-    <xs:complexType>
-        <xs:element ref = "Name"/>
-        <xs:element ref = "Address" />
-    </xs:complexType>
+  <xs:complexType>
+    <xs:element ref = "Name"/>
+    <xs:element ref = "Address" />
+  </xs:complexType>
 </xs:element>
 ----
 
@@ -2828,7 +2876,7 @@
 abstract schema component as follows:
 
 * The annotation element on an attribute ref
-is associated with \{Attribute Use}
+is associated with {Attribute Use}
 * The annotation element on a model group ref
-or an element reference is associated with the \{particle}.
+or an element reference is associated with the {particle}.