You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2023/04/19 13:53:26 UTC

[sis] branch geoapi-4.0 updated: Replace more
elements by HTML headings in Javadoc. A few years ago we didn't used HTML headings because the policy about which numbers to use was not clear. But since Java 13 (approximately), the policy has been clarified by Apache SIS javadoc hasn't been updated. Using HTML headings is more readable in source code, but also produces better HTML output, with better semantic. It is also more readable in the Javadoc snippets shown in IDE.

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

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new 81046a2097 Replace more <div class="note"> elements by HTML headings in Javadoc. A few years ago we didn't used HTML headings because the policy about which numbers to use was not clear. But since Java 13 (approximately), the policy has been clarified by Apache SIS javadoc hasn't been updated. Using HTML headings is more readable in source code, but also produces better HTML output, with better semantic. It is also more readable in the Javadoc snippets shown in IDE.
81046a2097 is described below

commit 81046a2097d3b161f9e05dccf5cf3d9e5be34b02
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed Apr 19 15:46:29 2023 +0200

    Replace more <div class="note"> elements by HTML headings in Javadoc.
    A few years ago we didn't used HTML headings because the policy about which numbers to use was not clear.
    But since Java 13 (approximately), the policy has been clarified by Apache SIS javadoc hasn't been updated.
    Using HTML headings is more readable in source code, but also produces better HTML output, with better semantic.
    It is also more readable in the Javadoc snippets shown in IDE.
---
 .../org/apache/sis/gui/coverage/GridRowSkin.java   |   9 +-
 .../java/org/apache/sis/gui/map/MapCanvas.java     |   2 +-
 .../org/apache/sis/coverage/BandedCoverage.java    |   5 +-
 .../org/apache/sis/feature/AbstractAttribute.java  |   4 +-
 .../org/apache/sis/feature/AbstractFeature.java    |  12 +-
 .../apache/sis/feature/AbstractIdentifiedType.java |   5 +-
 .../apache/sis/feature/DefaultAttributeType.java   |  15 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |   8 +-
 .../sis/feature/FoliationRepresentation.java       |  10 +-
 .../sis/feature/InvalidFeatureException.java       |   6 +-
 .../java/org/apache/sis/feature/Validator.java     |   6 +-
 .../sis/feature/builder/FeatureTypeBuilder.java    |  12 +-
 .../apache/sis/feature/builder/TypeBuilder.java    |   6 +-
 .../java/org/apache/sis/filter/DistanceFilter.java |   6 +-
 .../java/org/apache/sis/filter/Optimization.java   |   5 +-
 .../java/org/apache/sis/image/ComputedImage.java   |   2 +-
 .../java/org/apache/sis/image/ImageProcessor.java  |  11 +-
 .../org/apache/sis/image/LanczosInterpolation.java |   5 +-
 .../java/org/apache/sis/image/PixelIterator.java   |  21 ++-
 .../java/org/apache/sis/image/PlanarImage.java     |   6 +-
 .../java/org/apache/sis/image/TransferType.java    |   6 +-
 .../main/java/org/apache/sis/image/Transferer.java |   6 +-
 .../internal/coverage/j2d/ScaledColorModel.java    |   6 +-
 .../java/org/apache/sis/internal/filter/Node.java  |   6 +-
 .../org/apache/sis/internal/filter/Visitor.java    |   4 +-
 .../org/apache/sis/feature/FeatureTestCase.java    |   7 +-
 .../sis/internal/jaxb/gco/GO_CharacterString.java  |  10 +-
 .../apache/sis/internal/jaxb/gco/PropertyType.java |   4 +-
 .../org/apache/sis/internal/jaxb/gcx/FileName.java |   4 +-
 .../apache/sis/internal/jaxb/gcx/MimeFileType.java |   4 +-
 .../apache/sis/internal/jaxb/gml/GMLAdapter.java   |   4 +-
 .../org/apache/sis/internal/jaxb/gml/Measure.java  |   4 +-
 .../apache/sis/internal/metadata/AxisNames.java    |   4 +-
 .../sis/internal/metadata/sql/Initializer.java     |   4 +-
 .../sis/internal/metadata/sql/LocalDataSource.java |   4 +-
 .../sis/internal/metadata/sql/SQLUtilities.java    |   5 +-
 .../sis/internal/metadata/sql/ScriptRunner.java    |   6 +-
 .../apache/sis/internal/simple/SimpleCitation.java |   6 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |   5 +-
 .../apache/sis/metadata/ModifiableMetadata.java    |   6 +-
 .../java/org/apache/sis/metadata/TreeNode.java     |   6 +-
 .../org/apache/sis/metadata/TreeNodeChildren.java  |   8 +-
 .../iso/DefaultExtendedElementInformation.java     |   3 +-
 .../apache/sis/metadata/iso/DefaultIdentifier.java |  12 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |   4 +-
 .../acquisition/DefaultEnvironmentalRecord.java    |   3 +-
 .../metadata/iso/acquisition/DefaultObjective.java |   4 +-
 .../sis/metadata/iso/citation/AbstractParty.java   |   4 +-
 .../sis/metadata/iso/citation/Citations.java       |  36 ++--
 .../sis/metadata/iso/citation/DefaultCitation.java |  13 +-
 .../iso/citation/DefaultOnlineResource.java        |   3 +-
 .../sis/metadata/iso/content/DefaultBand.java      |   3 +-
 .../iso/content/DefaultFeatureTypeInfo.java        |   3 +-
 .../iso/content/DefaultImageDescription.java       |   3 +-
 .../iso/content/DefaultSampleDimension.java        |  11 +-
 .../DefaultDigitalTransferOptions.java             |   3 +-
 .../metadata/iso/distribution/DefaultMedium.java   |   3 +-
 .../iso/extent/DefaultGeographicBoundingBox.java   |   6 +-
 .../iso/extent/DefaultGeographicDescription.java   |  15 +-
 .../metadata/iso/extent/DefaultVerticalExtent.java |   6 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |  12 +-
 .../iso/identification/DefaultBrowseGraphic.java   |   3 +-
 .../DefaultRepresentativeFraction.java             |  15 +-
 .../iso/identification/DefaultResolution.java      |   3 +-
 .../DefaultServiceIdentification.java              |   3 +-
 .../iso/lineage/DefaultNominalResolution.java      |   3 +-
 .../iso/maintenance/DefaultScopeDescription.java   |  17 +-
 .../sis/metadata/iso/spatial/DefaultDimension.java |   7 +-
 .../iso/spatial/DefaultGeometricObjects.java       |   3 +-
 .../spatial/DefaultGridSpatialRepresentation.java  |   3 +-
 .../org/apache/sis/metadata/sql/Dispatcher.java    |   6 +-
 .../java/org/apache/sis/util/iso/AbstractName.java |   8 +-
 .../apache/sis/util/iso/DefaultNameFactory.java    |   8 +-
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |   5 +-
 .../main/java/org/apache/sis/util/iso/Names.java   |  34 ++--
 .../main/java/org/apache/sis/util/iso/Types.java   |  29 ++--
 .../java/org/apache/sis/xml/TransformedEvent.java  |   8 +-
 .../org/apache/sis/xml/TransformingNamespaces.java |   6 +-
 .../org/apache/sis/xml/TransformingWriter.java     |  21 +--
 .../src/main/java/org/apache/sis/xml/XML.java      |  16 +-
 .../apache/sis/metadata/PropertyAccessorTest.java  |   6 +-
 .../apache/sis/test/xml/DocumentComparator.java    |   5 +-
 .../java/org/apache/sis/test/xml/TestCase.java     |   3 +-
 .../referencing/gazetteer/AbstractLocation.java    |  11 +-
 .../referencing/gazetteer/FinalLocationType.java   |  16 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |  12 +-
 .../gazetteer/ModifiableLocationType.java          |  33 ++--
 .../org/apache/sis/geometry/AbstractEnvelope.java  |  40 +++--
 .../java/org/apache/sis/geometry/Envelope2D.java   |   8 +-
 .../java/org/apache/sis/geometry/Envelopes.java    |  18 +-
 .../org/apache/sis/geometry/GeneralEnvelope.java   |   9 +-
 .../apache/sis/geometry/WraparoundAdjustment.java  |   6 +-
 .../referencing/CC_GeneralOperationParameter.java  |   5 +-
 .../jaxb/referencing/CC_OperationMethod.java       |  12 +-
 .../referencing/CC_OperationParameterGroup.java    |   6 +-
 .../sis/internal/jaxb/referencing/SC_CRS.java      |   6 +-
 .../internal/jaxb/referencing/SC_SingleCRS.java    |   6 +-
 .../sis/internal/referencing/MergedProperties.java |   4 +-
 .../internal/referencing/NilReferencingObject.java |   6 +-
 .../apache/sis/internal/referencing/RTreeNode.java |  12 +-
 .../internal/referencing/ReferencingUtilities.java |   5 +-
 .../apache/sis/internal/referencing/Resources.java |   4 +-
 .../referencing/j2d/IntervalRectangle.java         |   6 +-
 .../apache/sis/internal/referencing/j2d/Tile.java  |   8 +-
 .../referencing/provider/Equirectangular.java      |   4 +-
 .../referencing/provider/GeodeticOperation.java    |   6 +-
 .../referencing/provider/Geographic3Dto2D.java     |   4 +-
 .../referencing/provider/RegionalMercator.java     |   3 +-
 .../referencing/provider/VerticalOffset.java       |   2 +-
 .../java/org/apache/sis/io/wkt/Convention.java     |   4 +-
 .../main/java/org/apache/sis/io/wkt/Element.java   |   6 +-
 .../org/apache/sis/io/wkt/FormattableObject.java   |   9 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |  34 ++--
 .../java/org/apache/sis/io/wkt/KeywordCase.java    |   5 +-
 .../java/org/apache/sis/io/wkt/KeywordStyle.java   |  18 +-
 .../org/apache/sis/io/wkt/MathTransformParser.java |   6 +-
 .../main/java/org/apache/sis/io/wkt/Parser.java    |   6 +-
 .../main/java/org/apache/sis/io/wkt/Symbols.java   |   4 +-
 .../java/org/apache/sis/io/wkt/Transliterator.java |  15 +-
 .../sis/io/wkt/UnformattableObjectException.java   |  10 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |   6 +-
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |   9 +-
 .../main/java/org/apache/sis/io/wkt/Warnings.java  |   9 +-
 .../sis/parameter/DefaultParameterDescriptor.java  |  12 +-
 .../parameter/DefaultParameterDescriptorGroup.java |  10 +-
 .../sis/parameter/DefaultParameterValue.java       |  11 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |   4 +-
 .../org/apache/sis/parameter/ParameterBuilder.java |  11 +-
 .../java/org/apache/sis/parameter/Parameters.java  |  20 +--
 .../org/apache/sis/parameter/TensorParameters.java |   5 +-
 .../sis/parameter/UnmodifiableParameterValue.java  |  11 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   3 +-
 .../main/java/org/apache/sis/referencing/CRS.java  |  13 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |   9 +-
 .../apache/sis/referencing/GeodeticCalculator.java |  12 +-
 .../apache/sis/referencing/IdentifiedObjects.java  |  11 +-
 .../sis/referencing/ImmutableIdentifier.java       |  12 +-
 .../apache/sis/referencing/NamedIdentifier.java    |   4 +-
 .../apache/sis/referencing/crs/AbstractCRS.java    |   5 +-
 .../sis/referencing/crs/DefaultCompoundCRS.java    |   4 +-
 .../sis/referencing/crs/DefaultDerivedCRS.java     |  10 +-
 .../sis/referencing/crs/DefaultEngineeringCRS.java |   4 +-
 .../sis/referencing/crs/DefaultGeocentricCRS.java  |   4 +-
 .../sis/referencing/crs/DefaultGeographicCRS.java  |   4 +-
 .../sis/referencing/crs/DefaultImageCRS.java       |   9 +-
 .../sis/referencing/crs/DefaultParametricCRS.java  |   9 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |   4 +-
 .../sis/referencing/crs/DefaultTemporalCRS.java    |  14 +-
 .../sis/referencing/crs/DefaultVerticalCRS.java    |   4 +-
 .../apache/sis/referencing/cs/AxesConvention.java  |  14 +-
 .../sis/referencing/cs/CoordinateSystems.java      |  19 +--
 .../sis/referencing/cs/DefaultCartesianCS.java     |   4 +-
 .../cs/DefaultCoordinateSystemAxis.java            |   4 +-
 .../sis/referencing/cs/DefaultCylindricalCS.java   |   4 +-
 .../sis/referencing/cs/DefaultEllipsoidalCS.java   |   4 +-
 .../apache/sis/referencing/cs/DefaultLinearCS.java |   4 +-
 .../sis/referencing/cs/DefaultParametricCS.java    |   4 +-
 .../apache/sis/referencing/cs/DefaultPolarCS.java  |   4 +-
 .../sis/referencing/cs/DefaultSphericalCS.java     |   4 +-
 .../apache/sis/referencing/cs/DefaultTimeCS.java   |   4 +-
 .../sis/referencing/cs/DefaultUserDefinedCS.java   |   4 +-
 .../sis/referencing/cs/DefaultVerticalCS.java      |   4 +-
 .../sis/referencing/cs/DirectionAlongMeridian.java |   8 +-
 .../sis/referencing/datum/BursaWolfParameters.java |  19 +--
 .../sis/referencing/datum/DatumShiftGrid.java      |  32 ++--
 .../sis/referencing/datum/DefaultEllipsoid.java    |  23 ++-
 .../referencing/datum/DefaultEngineeringDatum.java |   4 +-
 .../referencing/datum/DefaultGeodeticDatum.java    |   9 +-
 .../sis/referencing/datum/DefaultImageDatum.java   |   8 +-
 .../referencing/datum/DefaultParametricDatum.java  |   8 +-
 .../referencing/datum/DefaultPrimeMeridian.java    |   4 +-
 .../referencing/datum/DefaultTemporalDatum.java    |   8 +-
 .../referencing/datum/DefaultVerticalDatum.java    |  14 +-
 .../factory/AuthorityFactoryIdentifier.java        |   8 +-
 .../referencing/factory/FactoryDataException.java  |   4 +-
 .../factory/GeodeticAuthorityFactory.java          | 143 ++++++++--------
 .../referencing/factory/GeodeticObjectFactory.java | 150 ++++++++---------
 .../factory/IdentifiedObjectFinder.java            |  22 ++-
 .../referencing/factory/IdentifiedObjectSet.java   |   6 +-
 .../factory/InvalidGeodeticParameterException.java |   5 +-
 .../factory/MultiAuthoritiesFactory.java           |  12 +-
 .../factory/UnavailableFactoryException.java       |   4 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |  80 +++++----
 .../sis/referencing/factory/sql/SQLTranslator.java |   5 +-
 .../operation/AbstractCoordinateOperation.java     |  15 +-
 .../operation/CoordinateOperationContext.java      |  14 +-
 .../operation/CoordinateOperationRegistry.java     |  24 +--
 .../operation/DefaultConcatenatedOperation.java    |  10 +-
 .../referencing/operation/DefaultConversion.java   |  14 +-
 .../sis/referencing/operation/DefaultFormula.java  |   4 +-
 .../operation/DefaultOperationMethod.java          |  27 +--
 .../operation/DefaultTransformation.java           |   4 +-
 .../operation/InverseOperationMethod.java          |  13 +-
 .../operation/MismatchedDatumException.java        |   4 +-
 .../referencing/operation/SubOperationInfo.java    |   7 +-
 .../operation/builder/LinearTransformBuilder.java  |  23 ++-
 .../operation/builder/ResidualGrid.java            |   5 +-
 .../operation/matrix/GeneralMatrix.java            |   5 +-
 .../sis/referencing/operation/matrix/Matrices.java |   4 +-
 .../matrix/MismatchedMatrixSizeException.java      |   4 +-
 .../matrix/NoninvertibleMatrixException.java       |   4 +-
 .../operation/projection/AuthalicConversion.java   |   6 +-
 .../operation/projection/AzimuthalEquidistant.java |   6 +-
 .../operation/projection/ConformalProjection.java  |   4 +-
 .../operation/projection/CylindricalEqualArea.java |   6 +-
 .../referencing/operation/projection/Mercator.java |   8 +-
 .../operation/projection/NormalizedProjection.java |  11 +-
 .../operation/projection/ObliqueStereographic.java |   6 +-
 .../operation/projection/TransverseMercator.java   |  12 +-
 .../operation/transform/AbstractMathTransform.java |  28 ++--
 .../transform/AbstractMathTransform2D.java         |   6 +-
 .../operation/transform/CartesianToPolar.java      |   4 +-
 .../operation/transform/ConcatenatedTransform.java |   9 +-
 .../operation/transform/ContextualParameters.java  |   4 +-
 .../operation/transform/CopyTransform.java         |   5 +-
 .../operation/transform/DatumShiftTransform.java   |  25 ++-
 .../transform/DefaultMathTransformFactory.java     |  31 ++--
 .../transform/EllipsoidToCentricTransform.java     |  18 +-
 .../transform/ExponentialTransform1D.java          |   9 +-
 .../transform/InterpolatedGeocentricTransform.java |   5 +-
 .../transform/InterpolatedMolodenskyTransform.java |   6 +-
 .../operation/transform/InterpolatedTransform.java |   3 +-
 .../operation/transform/LinearInterpolator1D.java  |   6 +-
 .../operation/transform/LinearTransform.java       |   4 +-
 .../transform/LogarithmicTransform1D.java          |   5 +-
 .../operation/transform/MolodenskyFormula.java     |   6 +-
 .../operation/transform/MolodenskyTransform.java   |   6 +-
 .../operation/transform/PassThroughTransform.java  |   4 +-
 .../operation/transform/PolarToCartesian.java      |   4 +-
 .../operation/transform/ScaleTransform.java        |   5 +-
 .../transform/SpecializableTransform.java          |   4 +-
 .../operation/transform/SphericalToCartesian.java  |   4 +-
 .../operation/transform/TranslationTransform.java  |   5 +-
 .../operation/transform/WraparoundTransform.java   |  27 ++-
 .../apache/sis/parameter/ParameterFormatTest.java  |  16 +-
 .../sis/referencing/GeodeticCalculatorTest.java    |   2 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |   6 +-
 .../operation/DefaultConversionTest.java           |  14 +-
 .../referencing/operation/matrix/MatricesTest.java |  18 +-
 .../sis/internal/system/DelayedExecutor.java       |   4 +-
 .../sis/internal/system/DelayedRunnable.java       |  11 +-
 .../internal/system/ReferenceQueueConsumer.java    |   4 +-
 .../apache/sis/internal/util/CollectionsExt.java   |   4 +-
 .../apache/sis/internal/util/DefinitionURI.java    |  55 +++---
 .../sis/internal/util/StandardDateFormat.java      |   6 +-
 .../sis/internal/util/TreeFormatCustomization.java |   4 +-
 .../java/org/apache/sis/io/CompoundFormat.java     |  29 ++--
 .../main/java/org/apache/sis/io/TabularFormat.java |   3 +-
 .../java/org/apache/sis/math/DecimalFunctions.java |  30 ++--
 .../java/org/apache/sis/math/FunctionProperty.java |  22 +--
 .../src/main/java/org/apache/sis/math/Line.java    |   4 +-
 .../java/org/apache/sis/math/MathFunctions.java    |  39 +++--
 .../src/main/java/org/apache/sis/math/Plane.java   |   5 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |  28 ++--
 .../java/org/apache/sis/measure/AbstractUnit.java  |   4 +-
 .../java/org/apache/sis/measure/AngleFormat.java   |   6 +-
 .../org/apache/sis/measure/MeasurementRange.java   |   4 +-
 .../java/org/apache/sis/measure/NumberRange.java   |   5 +-
 .../main/java/org/apache/sis/measure/Units.java    | 184 +++++++--------------
 .../apache/sis/setup/InstallationResources.java    |   6 +-
 .../apache/sis/setup/OptionalInstallations.java    |   6 +-
 .../main/java/org/apache/sis/util/ArraysExt.java   |  20 +--
 .../java/org/apache/sis/util/CharSequences.java    |  33 ++--
 .../java/org/apache/sis/util/ComparisonMode.java   |  11 +-
 .../main/java/org/apache/sis/util/Deprecable.java  |   6 +-
 .../src/main/java/org/apache/sis/util/Locales.java |   4 +-
 .../org/apache/sis/util/LocalizedException.java    |   6 +-
 .../java/org/apache/sis/util/ObjectConverter.java  |  11 +-
 .../main/java/org/apache/sis/util/Workaround.java  |   4 +-
 .../org/apache/sis/util/collection/RangeSet.java   |   8 +-
 .../org/apache/sis/util/collection/TreeTable.java  |  10 +-
 .../java/org/apache/sis/util/logging/Logging.java  |  23 ++-
 .../apache/sis/util/logging/MonolineFormatter.java |   5 +-
 .../java/org/apache/sis/util/resources/Errors.java |   4 +-
 .../sis/util/resources/IndexedResourceBundle.java  |  10 +-
 .../org/apache/sis/util/resources/Messages.java    |   4 +-
 .../org/apache/sis/util/resources/Vocabulary.java  |   4 +-
 .../test/java/org/apache/sis/test/TestRunner.java  |   5 +-
 .../apache/sis/storage/event/StoreListeners.java   |  11 +-
 279 files changed, 1453 insertions(+), 1617 deletions(-)

diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
index 4545ab5485..8cb8c243ab 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
@@ -56,16 +56,17 @@ final class GridRowSkin extends CellSkinBase<GridRow> {
      * Invoked during the layout pass to position the cells to be rendered by this row.
      * This method also sets the content of the cell.
      *
-     * <div class="note"><b>Note:</b> I'm not sure it is a good practice to add/remove children
-     * and to modify text values here, but I have not identified another place yet. However, the
-     * JavaFX implementation of table skin seems to do the same, so I presume it is okay.</div>
-     *
      * The {@code width} argument can be a large number (for example 24000) because it includes
      * the area outside the view. In order to avoid creating a large amount of {@link GridCell}
      * instances, this method have to find the current view port area and render only the cells
      * in that area. We do not have to do that vertically because the vertical virtualization
      * is done by {@link GridViewSkin} parent class.
      *
+     * <h4>Implementation note</h4>
+     * I'm not sure it is a good practice to add/remove children and to modify text values here,
+     * but I have not identified another place yet. However, the JavaFX implementation of table
+     * skin seems to do the same, so I presume it is okay.
+     *
      * @param  x       the <var>x</var> position of this row, usually 0.
      * @param  y       the <var>y</var> position of this row, usually 0 (this is a relative position).
      * @param  width   width of the row, including the area currently hidden because out of view.
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
index 78c37612f6..b20c9996f1 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
@@ -1407,7 +1407,7 @@ public abstract class MapCanvas extends PlanarCanvas {
      * This is especially useful when the first gesture event is a tiny change because the user just started
      * panning or zooming.
      *
-     * <h4>Design note:</h4>
+     * <h4>Design note</h4>
      * using a thread for waiting seems a waste of resources, but a thread (likely this one) is going to be used
      * for real after the waiting time is elapsed. That thread usually exists anyway in {@link BackgroundThreads}
      * as an idle thread, and it is unlikely that other parts of this JavaFX application need that thread in same
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
index a64416ff7b..ea581d952d 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
@@ -37,13 +37,12 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
  *   <li>Sample dimensions (bands) are accessed by band index with the first band at index 0.</li>
  * </ul>
  *
- * <div class="note"><b>Comparison with ISO 19123:</b>
- * by contrast an ISO {@code Coverage} does not restrict sample values to primitive types,
+ * <h2>Comparison with ISO 19123</h2>
+ * By contrast an ISO {@code Coverage} does not restrict sample values to primitive types,
  * does not require all sample dimensions to use the same type,
  * and sample values are accessed by field names instead of band indices.
  * Said otherwise, an ISO {@code Coverage} can provide a complex structure (a {@link org.opengis.util.Record})
  * at every location while this {@code BandedCoverage} class provides only primitive arrays such as {@code float[]}.
- * </div>
  *
  * The effect of above restrictions appears in {@link #getSampleDimensions()} and
  * {@link Evaluator#apply(DirectPosition)} method signatures.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
index 545156f1ba..835601879d 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
@@ -92,13 +92,13 @@ public abstract class AbstractAttribute<V> extends Field<V> implements Attribute
     /**
      * Other attributes that describes this attribute, or {@code null} if not yet created.
      *
-     * <div class="note"><b>Design note:</b>
+     * <h4>Design note</h4>
      * We could question if it is a good idea to put this field here, given that this field add a slight cost
      * to all attribute implementations while only a small fraction of them will want attribute characteristics.
      * Since attributes may exist in a very large amount, that question may be significant.
      * However, {@link AbstractFeature} tries hard to not create {@code Attribute} instances at all (it tries to
      * store only their value instead), so we presume that peoples who ask for {@code Attribute} instances are
-     * willing to accept their cost.</div>
+     * willing to accept their cost.
      *
      * @see #characteristics()
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
index b644531b7f..3d823e76e7 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
@@ -144,8 +144,8 @@ public abstract class AbstractFeature implements Feature, Serializable {
      * desired, then {@link #getPropertyValue(String)} is preferred since it gives to SIS a chance to
      * avoid the creation of {@link AbstractAttribute} or {@link AbstractAssociation} instances.</p>
      *
-     * <div class="note"><b>Note for subclass implementers:</b>
-     * the default implementation returns an instance that redirect all read and write operations to
+     * <h4>Note for subclass implementers</h4>
+     * The default implementation returns an instance that redirect all read and write operations to
      * {@link #getPropertyValue(String)} and {@link #setPropertyValue(String, Object)} respectively.
      * That default implementation is intended to make easier for developers to create their own
      * customized <code>AbstractFacture</code> implementations, but has drawbacks:
@@ -153,7 +153,7 @@ public abstract class AbstractFeature implements Feature, Serializable {
      * and the returned {@code Property} implementation is not very efficient
      * since it has to perform multiple lookups and type checks.
      * Implementers are encouraged to override this method if they can provide a more efficient implementation.
-     * Note that this is already the case when using implementations created by {@link DefaultFeatureType#newInstance()}.</div>
+     * Note that this is already the case when using implementations created by {@link DefaultFeatureType#newInstance()}.
      *
      * @param  name  the property name.
      * @return the property of the given name (never {@code null}).
@@ -187,8 +187,8 @@ public abstract class AbstractFeature implements Feature, Serializable {
      * in this feature. When default implementations are sufficient, the {@link #setPropertyValue(String, Object)}
      * method is preferred.
      *
-     * <div class="note"><b>Note for subclass implementers:</b>
-     * the default implementation verifies that the given property has the expected type and a null or empty
+     * <h4>Note for subclass implementers</h4>
+     * The default implementation verifies that the given property has the expected type and a null or empty
      * {@linkplain AbstractAttribute#characteristics() map of characteristics}, then delegates to
      * {@link #setPropertyValue(String, Object)}.
      * That default implementation is intended to make easier for developers to create their own
@@ -196,7 +196,7 @@ public abstract class AbstractFeature implements Feature, Serializable {
      * the given {@code Property} instance is not stored (only its {@linkplain AbstractAttribute#getValue() value}
      * is stored), and it cannot have custom {@linkplain AbstractAttribute#characteristics() characteristics}.
      * Implementers are encouraged to override this method if they can provide a better implementation.
-     * Note that this is already the case when using implementations created by {@link DefaultFeatureType#newInstance()}.</div>
+     * Note that this is already the case when using implementations created by {@link DefaultFeatureType#newInstance()}.
      *
      * @param  property  the property to set.
      * @throws PropertyNotFoundException if the name of the given property is not a property name of this feature.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
index 5b8b09389d..da15ab6b1b 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
@@ -255,12 +255,11 @@ public class AbstractIdentifiedType implements IdentifiedType, Deprecable, Seria
      * <p>For {@linkplain DefaultFeatureType feature types}, the name is mandatory and shall be unique
      * in the unit processing the data (e.g. a {@link org.apache.sis.storage.DataStore} reading a file).</p>
      *
-     * <div class="note"><b>Note for subclasses:</b>
-     * this method is final because it is invoked (indirectly) by subclass constructors,
+     * <h4>API design note</h4>
+     * This method is final because it is invoked (indirectly) by subclass constructors,
      * and invoking a user-overrideable method at construction time is not recommended.
      * Furthermore, this attribute is often used as the primary key for {@code IdentifiedType} instances
      * and need some guarantees about its stability.
-     * </div>
      *
      * @return the type name.
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
index 00c813eba5..1e9dcbb97d 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
@@ -41,7 +41,7 @@ import org.opengis.feature.AttributeType;
  * is typically the name of the {@linkplain DefaultFeatureType feature type} containing this attribute, but this is
  * not mandatory. The scope could also be defined by the ontology for example.
  *
- * <div class="note"><b>Note:</b>
+ * <div class="note"><b>Analogy:</b>
  * Compared to the Java language, {@code AttributeType} is equivalent to {@link java.lang.reflect.Field}
  * while {@code FeatureType} is equivalent to {@link Class}.
  * Attribute characterization (discussed below) is similar to {@link java.lang.annotation.Annotation}.
@@ -65,7 +65,7 @@ import org.opengis.feature.AttributeType;
  * The accuracy value is often constant for all instances of that attribute
  * (e.g. for all temperature measurements in the same dataset), but this is not mandatory.
  *
- * <div class="note"><b>Design note:</b>
+ * <h3>Design notes</h3>
  * Such accuracy could be stored as an ordinary, independent, attribute (like another column in a table),
  * but storing accuracy as a {@linkplain #characteristics() characteristic} of the measurement attribute instead
  * provides the following advantages:
@@ -78,7 +78,6 @@ import org.opengis.feature.AttributeType;
  *   <li>In the common case of a {@linkplain DefaultFeatureType#isSimple() simple feature} with characteristics
  *       that are constants, declaring them as attribute characteristics allows to specify the constants only once.</li>
  * </ul>
- * </div>
  *
  * Constant values of characteristics are given by their {@linkplain #getDefaultValue() default value}.
  * It is still possible for any specific {@code Attribute} instance to specify their own value,
@@ -298,18 +297,16 @@ public class DefaultAttributeType<V> extends FieldType implements AttributeType<
 
     /**
      * Other attribute types that describes this attribute type.
+     * The characteristics are enumerated in the {@linkplain Map#values() map values}.
+     * The {@linkplain Map#keySet() map keys} are the {@code String} representations
+     * of characteristics {@linkplain #getName() name}, for more convenient lookups.
      * See <cite>"Attribute characterization"</cite> in class Javadoc for more information.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * An attribute that carries a measurement (e.g. air temperature) may have another attribute that holds the
      * measurement accuracy. The accuracy is often constant for all measurements in a dataset, but not necessarily.
      * If the accuracy is a constant, then the characteristics {@linkplain #getDefaultValue() default value}
      * shall hold that constant.
-     * </div>
-     *
-     * The characteristics are enumerated in the {@linkplain Map#values() map values}.
-     * The {@linkplain Map#keySet() map keys} are the {@code String} representations
-     * of characteristics {@linkplain #getName() name}, for more convenient lookups.
      *
      * @return other attribute types that describes this attribute type, or an empty map if none.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
index 29841e9f5a..6b79167dfd 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
@@ -141,13 +141,12 @@ public class DefaultFeatureType extends AbstractIdentifiedType implements Featur
      * names have been resolved. However, a value of {@code false} only means that we are not sure,
      * and that {@link #resolve(FeatureType, Map)} should check again.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Implementation note</h4>
      * Strictly speaking, this field should be declared {@code volatile} since the names could
      * be resolved late after construction, after the {@code DefaultFeatureType} instance became
      * used by different threads. However, this is not the intended usage of deferred associations.
      * Furthermore, a wrong value ({@code false} when it should be {@code true}) should only cause
      * more computation than needed, without changing the result.
-     * </div>
      */
     private transient boolean isResolved;
 
@@ -828,11 +827,10 @@ public class DefaultFeatureType extends AbstractIdentifiedType implements Featur
      * if we compare {@code FeatureType} to {@link Class} in the Java language, then this method is equivalent
      * to {@link Class#getSuperclass()} except that feature types allow multi-inheritance.</div>
      *
-     * <div class="note"><b>Note for subclasses:</b>
-     * this method is final because it is invoked (indirectly) by constructors, and invoking a user-overrideable
+     * <h4>API note</h4>
+     * This method is final because it is invoked (indirectly) by constructors, and invoking a user-overrideable
      * method at construction time is not recommended. Furthermore, many Apache SIS methods need guarantees about
      * the stability of this collection.
-     * </div>
      *
      * @return  the parents of this feature type, or an empty set if none.
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/FoliationRepresentation.java b/core/sis-feature/src/main/java/org/apache/sis/feature/FoliationRepresentation.java
index 475d8d5cbf..ef303c2c42 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/FoliationRepresentation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/FoliationRepresentation.java
@@ -20,9 +20,11 @@ package org.apache.sis.feature;
 /**
  * Specifies whether trajectories are represented in a single <cite>moving feature</cite> instance
  * or fragmented in distinct static feature instances.
+ * This enumeration can be used with {@link org.apache.sis.storage.DataStore}
+ * as a hint about desired representation of moving features.
  *
- * <div class="note"><b>Example:</b>
- * consider the following trajectories:
+ * <h2>Example</h2>
+ * Consider the following trajectories:
  *
  * <table class="sis">
  *   <caption>Moving features example</caption>
@@ -37,10 +39,6 @@ package org.apache.sis.feature;
  * with some time representation (for example by adding a temporal dimension in each coordinate) and dynamic "Status"
  * property. Or alternatively, we can keep John Smith's trajectory fragmented in two {@code Feature} instance where
  * each instance can be handled as a static feature.
- * </div>
- *
- * This enumeration can be used with {@link org.apache.sis.storage.DataStore} as a hint about desired representation
- * of moving features.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.0
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java b/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java
index 6e14737c1e..4936d7509b 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/InvalidFeatureException.java
@@ -27,9 +27,9 @@ import org.opengis.feature.InvalidPropertyValueException;
 /**
  * Thrown when a feature fails at least one conformance test.
  *
- * <div class="note"><b>Note:</b>
- * this exception extends {@link InvalidPropertyValueException} because an Apache SIS feature
- * can be invalid only if a property is invalid.</div>
+ * <h2>API design note</h2>
+ * This exception extends {@link InvalidPropertyValueException} because an Apache SIS feature
+ * can be invalid only if a property is invalid.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java b/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
index e0e0be83c7..4ea92464f9 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
@@ -73,13 +73,13 @@ final class Validator {
      * Adds a report for a constraint violation. If the given {@code report} is {@code null}, then this method creates
      * a new {@link DefaultDomainConsistency} instance with the measure identification set to the property name.
      *
-     * <div class="note"><b>Note:</b>
-     * setting {@code measureIdentification} to the property name may look like a departure from ISO intent,
+     * <h4>Implementation note</h4>
+     * Setting {@code measureIdentification} to the property name may look like a departure from ISO intent,
      * since the former should be an identification of the <em>quality measurement</em> rather than the measure itself.
      * (setting {@code measureDescription} to {@code type.getDescription()} would probably be wrong for that reason).
      * However, {@code measureIdentification} is only an identifier, not a full description of the quality measurement
      * We are not strictly forbidden to use the same identifier for both the quality measurement than the measurement
-     * itself. However, strictly speaking, maybe we should use a different scope.</div>
+     * itself. However, strictly speaking, maybe we should use a different scope.
      *
      * @param  report       where to add the result, or {@code null} if not yet created.
      * @param  type         description of the property for which a constraint violation has been found.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
index b20b207623..ced68fa848 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
@@ -482,9 +482,9 @@ public class FeatureTypeBuilder extends TypeBuilder {
      * Sets the {@code FeatureType} name as a generic name.
      * If another name was defined before this method call, that previous value will be discarded.
      *
-     * <div class="note"><b>Note for subclasses:</b>
-     * all {@code setName(…)} convenience methods in this builder delegate to this method.
-     * Consequently, this method can be used as a central place where to control the creation of all names.</div>
+     * <h4>Note for subclasses</h4>
+     * All {@code setName(…)} convenience methods in this builder delegate to this method.
+     * Consequently, this method can be used as a central place where to control the creation of all names.
      *
      * @return {@code this} for allowing method calls chaining.
      */
@@ -722,8 +722,8 @@ public class FeatureTypeBuilder extends TypeBuilder {
      * Geometric objects outside the above list can still be used by declaring their type explicitly.
      * However, in this case there is no isolation level between the geometry types and the library that implement them.
      *
-     * <div class="note"><b>Example:</b>
-     * the following code creates an attribute named "MyPoint" with values of class
+     * <h4>Example</h4>
+     * The following code creates an attribute named "MyPoint" with values of class
      * {@link java.awt.geom.Point2D} if the library in use is {@linkplain GeometryLibrary#JAVA2D Java2D}.
      * The Coordinate Reference System (CRS) uses (<var>longitude</var>, <var>latitude</var>) axes on the WGS 84 datum.
      * Finally that new attribute is declared the feature <em>default</em> geometry:
@@ -736,7 +736,7 @@ public class FeatureTypeBuilder extends TypeBuilder {
      *
      * If the library in use is JTS or ESRI instead of Java2D,
      * then the {@code Point} class of those libraries will be used instead of {@code Point2D}.
-     * The fully-qualified class names are given in the {@link GeometryLibrary} javadoc.</div>
+     * The fully-qualified class names are given in the {@link GeometryLibrary} javadoc.
      *
      * @param  type  kind of geometric object (point, polyline or polygon).
      * @return a builder for an {@code AttributeType}.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
index 59d7249d4e..e43fb60753 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
@@ -219,9 +219,9 @@ public abstract class TypeBuilder implements Localized {
      * Sets the {@code IdentifiedType} name as a generic name.
      * If another name was defined before this method call, that previous value will be discarded.
      *
-     * <div class="note"><b>Note for subclasses:</b>
-     * all {@code setName(…)} convenience methods in this builder delegate to this method.
-     * Consequently, this method can be used as a central place where to control the creation of all names.</div>
+     * <h4>Note for subclasses</h4>
+     * All {@code setName(…)} convenience methods in this builder delegate to this method.
+     * Consequently, this method can be used as a central place where to control the creation of all names.
      *
      * @param  name  the generic name (cannot be {@code null}).
      * @return {@code this} for allowing method calls chaining.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java b/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java
index aea44fe99c..739e3988cf 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/DistanceFilter.java
@@ -37,9 +37,9 @@ import org.opengis.filter.DistanceOperatorName;
  * Spatial operations between two geometries and using a distance.
  * The nature of the operation depends on the subclass.
  *
- * <div class="note"><b>Note:</b>
- * this class has 3 parameters, but the third one is not an expression.
- * It still a "binary" operator if we count only the expressions.</div>
+ * <h2>API design note</h2>
+ * This class has 3 parameters, but the third one is not an expression.
+ * It still a "binary" operator if we count only the expressions.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java b/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
index 8c0971ce4f..6870fdceb4 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
@@ -93,11 +93,12 @@ public class Optimization {
      * Filters and expressions already optimized. Also used for avoiding never-ending loops.
      * The map is created when first needed.
      *
-     * <div class="note"><b>Note:</b> the same map is used for filters and expressions.
+     * <h4>Implementation note</h4>
+     * The same map is used for filters and expressions.
      * It is not a problem if keys do not implement the two interfaces at the same time.
      * If it happens anyway, it should still be okay because the method signatures are
      * the same in both interfaces (only the return type changes), so the same methods
-     * would be invoked no matter if we consider the keys as a filter or an expression.</div>
+     * would be invoked no matter if we consider the keys as a filter or an expression.
      */
     private Map<Object,Object> done;
 
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
index fa024899ef..4a1756a737 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
@@ -204,7 +204,7 @@ public abstract class ComputedImage extends PlanarImage implements Disposable {
      * and the {@linkplain SampleModel#getHeight() sample model height}
      * determines this {@linkplain #getTileHeight() image tile height}.
      *
-     * <h4>Design note:</h4>
+     * <h4>Design note</h4>
      * {@code ComputedImage} requires the sample model to have exactly the desired tile size
      * otherwise tiles created by {@link #createTile(int, int)} will consume more memory
      * than needed.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
index 57741fd29c..f3927fb049 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
@@ -98,14 +98,14 @@ import org.apache.sis.coverage.grid.GridCoverageProcessor;
  * For each image operations, above properties are combined with parameters given to the operation method.
  * Each method in this {@code ImageProcessor} class documents the properties used in addition of method parameters.
  *
- * <div class="note"><b>API design:</b>
- * properties (setter methods) are used for values that can be applied unchanged on many different images.
+ * <h2>API design</h2>
+ * Properties (setter methods) are used for values that can be applied unchanged on many different images.
  * For example, the {@linkplain #getInterpolation() interpolation method} can be specified once and used
  * unchanged for many {@link #resample resample(…)} operations.
  * On the other hand, method arguments are used for values that are usually specific to the image to process.
  * For example, the {@link MathTransform} argument given to the {@link #resample resample(…)} operation depends
  * tightly on the source image and destination bounds (also given in arguments); those information usually need
- * to be recomputed for each image.</div>
+ * to be recomputed for each image.
  *
  * <h2>Deferred calculations</h2>
  * Methods in this class may compute the result at some later time after the method returned, instead of computing
@@ -719,15 +719,14 @@ public class ImageProcessor implements Cloneable {
      * {@link Statistics#accept(double)} to ignore them. The {@link #filterNodataValues(Number...)}
      * convenience method can be used for building an operator filtering "no data" sample values.
      *
-     * <div class="note"><b>API design note:</b>
-     * the {@code areaOfInterest} and {@code sampleFilters} arguments are complementary.
+     * <h5>API design note</h5>
+     * The {@code areaOfInterest} and {@code sampleFilters} arguments are complementary.
      * Both of them filter the data accepted for statistics. In ISO 19123 terminology,
      * the {@code areaOfInterest} argument filters the <cite>coverage domain</cite> while
      * the {@code sampleFilters} argument filters the <cite>coverage range</cite>.
      * Another connection with OGC/ISO standards is that {@link DoubleUnaryOperator} in this context
      * does the same work than {@linkplain SampleDimension#getTransferFunction() transfer function}.
      * It can be useful for images not managed by a {@link org.apache.sis.coverage.grid.GridCoverage}.
-     * </div>
      *
      * <h4>Properties used</h4>
      * This operation uses the following properties in addition to method parameters:
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/LanczosInterpolation.java b/core/sis-feature/src/main/java/org/apache/sis/image/LanczosInterpolation.java
index e63411da84..f8254d2e93 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/LanczosInterpolation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/LanczosInterpolation.java
@@ -163,8 +163,9 @@ final class LanczosInterpolation extends Interpolation {
      * This is a component of Lanczos filter's kernel in two dimensions, which is L(x,y) = L(x)L(y).
      * In this implementation, the given <var>x</var> value must be pre-multiplied by {@link Math#PI}.
      *
-     * <div class="note"><b>Note:</b> the multiplication by π is a normalization that causes
-     * the definite integral of the function over the real numbers to equal 1.</div>
+     * <h4>Implementation note</h4>
+     * The multiplication by π is a normalization that causes the definite integral
+     * of the function over the real numbers to equal 1.
      *
      * @param  x     must be between −{@link #a}⋅π and +{@link #a}⋅π inclusive.
      * @param  sinx  value of {@code Math.sin(x)}.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java b/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
index de8817afa0..fccf8bdae5 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
@@ -1067,14 +1067,14 @@ public class PixelIterator {
      * {@code byte[]}, <i>etc.</i>): it is used for transferring values in a packed format between compatible
      * Java2D sample or color models. That {@code Object} should generally not be used directly by the caller.
      *
-     * <div class="note"><b>Example:</b>
-     * if an image has Red, Green, Blue and Alpha bands, then the {@link #getPixel(int[])} methods will return
+     * <p>Data elements are useful for copying values in another image using the same sample model,
+     * or for getting colors with a call to {@link java.awt.image.ColorModel#getRGB(Object)}.</p>
+     *
+     * <h4>Example</h4>
+     * If an image has Red, Green, Blue and Alpha bands, then the {@link #getPixel(int[])} methods will return
      * arrays of length 4 containing the individual values for each band, no matter how those bands are stored
      * in the image. By contrast this {@code getDataElements​(…)} method may return an array of length 1 with
-     * all sample values packed as a single ARGB value.</div>
-     *
-     * Data elements are useful for copying values in another image using the same sample model,
-     * or for getting colors with a call to {@link java.awt.image.ColorModel#getRGB(Object)}.
+     * all sample values packed as a single ARGB value.
      *
      * @param  dest  a pre-allocated array where to store the data elements, or {@code null} if none.
      * @return the data elements for current pixel.
@@ -1365,14 +1365,13 @@ public class PixelIterator {
      * {@link Window} implementation backed by an array of {@code double[]}.
      * This is the implementation used by Apache SIS for most computations.
      *
-     * <div class="note"><b>Performance note</b>
+     * <h2>Performance note</h2>
      * Java2D has numerous optimizations for the integer cases, with no equivalent for the floating point cases.
      * Consequently, if the data buffer is known to use some integer type, it is faster to get integer values and
      * convert them to {@code double} values instead of to request directly floating-point values. However, the
      * improvement is not as much as using {@link BandedIterator} as least for small windows. For that reason,
      * we do not provide the "integers converted to doubles" performance workaround for now. Even if we provided
      * it, this {@code DoubleWindow} would still be necessary for the general case (non-integer data buffers).
-     * </div>
      */
     private final class DoubleWindow extends Window<DoubleBuffer> {
         /**
@@ -1420,11 +1419,11 @@ public class PixelIterator {
     /**
      * Updates the content of given window with the sample values in the region starting at current iterator position.
      *
-     * <div class="note"><b>Performance note</b>
-     * we could store the position of last update in the {@code Window} object and invoke {@code getPixels(…)}
+     * <h4>Performance note</h4>
+     * We could store the position of last update in the {@code Window} object and invoke {@code getPixels(…)}
      * only for window area that changed. Sample values that are still inside the window could be moved with
      * {@code System.arraycopy(…)}. We tried that approach, but performance at least on small windows was worst
-     * than current naive implementation.</div>
+     * than current naive implementation.
      *
      * @param  window  the window to update.
      * @param  data    the array of primitive type where sample values are stored.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
index 0141edf318..9807a2f806 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
@@ -48,14 +48,14 @@ import static java.lang.Math.multiplyFull;
  * of two-dimensional data and should not contain an image with three-dimensional effects.
  * Planar images can be used as data storage for {@link org.apache.sis.coverage.grid.GridCoverage2D}.
  *
- * <div class="note"><b>Note: inspirational source</b>
- * <p>This class takes some inspiration from the {@code javax.media.jai.PlanarImage}
+ * <div class="note"><b>Inspirational source:</b>
+ * this class takes some inspiration from the {@code javax.media.jai.PlanarImage}
  * class defined in the <cite>Java Advanced Imaging</cite> (<abbr>JAI</abbr>) library.
  * That excellent library was 20 years in advance on thematic like defining a chain of image operations,
  * multi-threaded execution, distribution over a computer network, <i>etc.</i>
  * But unfortunately the <abbr>JAI</abbr> library does not seems to be maintained anymore.
  * We do not try to reproduce the full set of JAI functionalities here, but we progressively
- * reproduce some little bits of functionalities as they are needed by Apache SIS.</p></div>
+ * reproduce some little bits of functionalities as they are needed by Apache SIS.</div>
  *
  * <p>This base class does not store any state,
  * but assumes that numbering of pixel coordinates and tile indices start at zero.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/TransferType.java b/core/sis-feature/src/main/java/org/apache/sis/image/TransferType.java
index e6a0dc343c..0d4af679e7 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/TransferType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/TransferType.java
@@ -37,9 +37,9 @@ import org.apache.sis.util.resources.Errors;
  * <p>{@link Raster} and {@link PixelIterator} transfer data in {@code int[]}, {@code float[]} and {@code double[]} arrays.
  * Additionally, {@code PixelIterator} uses also {@link IntBuffer}, {@link FloatBuffer} and {@link DoubleBuffer}.</p>
  *
- * <div class="note"><b>Future evolution:</b>
- * this class may be refactored as an enumeration in a future Java version if
- * <a href="http://openjdk.java.net/jeps/301">JEP 301</a> is implemented.</div>
+ * <h2>Future evolution</h2>
+ * This class may be refactored as an enumeration in a future Java version if
+ * <a href="http://openjdk.java.net/jeps/301">JEP 301</a> is implemented.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.0
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/Transferer.java b/core/sis-feature/src/main/java/org/apache/sis/image/Transferer.java
index 373acfd2c0..87cec1e11a 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/Transferer.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/Transferer.java
@@ -260,10 +260,10 @@ abstract class Transferer {
      * is needed when the target raster does not use the {@code double} type, or does not use a layout that allows
      * us to write directly in the raster array.
      *
-     * <div class="note"><b>Note:</b>
-     * having a source raster with {@code double} data type does not remove the need to use a temporary buffer,
+     * <h2>Implementation note</h2>
+     * Having a source raster with {@code double} data type does not remove the need to use a temporary buffer,
      * because we cannot modify the source data. We still need to allocate a temporary array for collecting the
-     * operation results before final writing in the target array.</div>
+     * operation results before final writing in the target array.
      */
     private static final class DoubleToDouble extends Transferer {
         /** Temporary buffer where to copy data and apply operation. */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
index 1da6d2dc07..f71818494b 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
@@ -148,10 +148,10 @@ final class ScaledColorModel extends ComponentColorModel {
      * Returns {@code true} if the given object is also an instance of {@link ScaledColorModel}
      * with equals color space and same transfer type.
      *
-     * <div class="note"><b>Note:</b>
-     * we have to override this method because the {@link ComponentColorModel#equals(Object)} implementation
+     * <h4>Implementation note</h4>
+     * We have to override this method because the {@link ComponentColorModel#equals(Object)} implementation
      * is confused by our overriding of {@link #getTransparency()} method. However, we do not need to override
-     * {@link #hashCode()}.</div>
+     * {@link #hashCode()}.
      */
     @Override
     public boolean equals(final Object obj) {
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java
index 0572263f99..014679a90d 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Node.java
@@ -117,9 +117,9 @@ public abstract class Node implements Serializable {
      *   <li>{@link CodeList} if this node implements {@link Filter}.</li>
      * </ul>
      *
-     * <div class="note"><b>Note for implementers:</b>
-     * implementations typically return a hard-coded value. If the returned value may vary for the same class,
-     * then implementers should override also the {@link #equals(Object)} and {@link #hashCode()} methods.</div>
+     * <h4>Note for implementers</h4>
+     * Implementations typically return a hard-coded value. If the returned value may vary for the same class,
+     * then implementers should override also the {@link #equals(Object)} and {@link #hashCode()} methods.
      *
      * @return the name of this function.
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
index ee069b57b7..2e71bfa311 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
@@ -41,10 +41,10 @@ import org.opengis.filter.ComparisonOperatorName;
  * and the second parameter is an arbitrary object used as accumulator. For example, the accumulator
  * may be a {@link StringBuilder} where the filter is written as a SQL or CQL statement.
  *
- * <div class="note"><b>Relationship with the visitor pattern</b><br>
+ * <h2>Relationship with the visitor pattern</h2>
  * This class provides similar functionalities than the "visitor pattern".
  * The actions are defined by lambda functions in a {@link HashMap} instead of by overriding methods,
- * but the results are similar.</div>
+ * but the results are similar.
  *
  * <h2>Thread-safety</h2>
  * {@code Visitor} instances are thread-safe if protected methods are invoked at construction time only.
diff --git a/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureTestCase.java b/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureTestCase.java
index 592a0e11e7..fba65a47c4 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureTestCase.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureTestCase.java
@@ -142,9 +142,10 @@ public abstract class FeatureTestCase extends TestCase {
      * Tests the {@link AbstractFeature#getProperty(String)} method. This test uses a very simple and
      * straightforward {@code FeatureType} similar to the ones obtained when reading a ShapeFile.
      *
-     * <div class="note">In a previous SIS version, the first property value was always {@code null}
-     * if the implementation was {@link DenseFeature} (see SIS-178). This test reproduced the bug,
-     * and now aim to avoid regression.</div>
+     * <h4>Historical note</h4>
+     * In a previous SIS version, the first property value was always {@code null}
+     * if the implementation was {@link DenseFeature} (see SIS-178).
+     * This test reproduced the bug, and now aim to avoid regression.
      *
      * @see <a href="https://issues.apache.org/jira/browse/SIS-178">SIS-178</a>
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
index 9b7c9452c5..37c60bd138 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
@@ -245,10 +245,10 @@ public class GO_CharacterString {
      * Returns the code list wrapped in a JAXB element, or {@code null} if the {@link #text} is not a wrapper for
      * a code list. Only one of {@link #getValue()} and {@code getCodeList()} should return a non-null value.
      *
-     * <div class="note"><b>Note:</b>
-     * we have to rely on a somewhat complicated mechanism because the code lists implementations in GeoAPI
+     * <h4>Implementation note</h4>
+     * We have to rely on a somewhat complicated mechanism because the code lists implementations in GeoAPI
      * do not have JAXB annotations. If those annotations are added in a future GeoAPI implementation, then
-     * we could replace this mechanism by a simple property annotated with {@code XmlElementRef}.</div>
+     * we could replace this mechanism by a simple property annotated with {@code XmlElementRef}.
      *
      * @since 0.7
      */
@@ -329,10 +329,10 @@ public class GO_CharacterString {
      * Returns the text as a string, or {@code null} if none.
      * The null value is expected by various {@code PT_FreeText}.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>API note</h4>
      * Returning {@code null} is unusual and not a recommended practice.
      * But precedents exist (for example {@link javax.swing.tree.DefaultMutableTreeNode})
-     * and this class is not for public usage.</div>
+     * and this class is not for public usage.
      *
      * @return the text as a string (may be null).
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
index 46e51f97a2..e3bb936fc4 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/PropertyType.java
@@ -89,7 +89,7 @@ import org.apache.sis.util.resources.Errors;
  * The actual implementation may be slightly more complicated than the above if there is
  * various subclasses to check.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Implementation note</h2>
  * A previous version provided an abstract {@code getElement()} method in this class
  * for enforcing its definition in subclasses. But this has been removed for two reasons:
  * <ul>
@@ -102,7 +102,7 @@ import org.apache.sis.util.resources.Errors;
  *       this increases the size of {@code .class} files by approximately 4.5%.
  *       While quite small, this is a useless overhead since we never need to invoke the
  *       abstract {@code getElement()} from this class.</li>
- * </ul></div>
+ * </ul>
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/FileName.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/FileName.java
index 01741f5c7f..4570dad0cb 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/FileName.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/FileName.java
@@ -74,10 +74,8 @@ public final class FileName {
 
     /**
      * Returns the file path, or {@code null} if none.
-     *
-     * <div class="note"><b>Note:</b>
      * Returning {@code null} is usually not recommended for a {@code toString()} method,
-     * but this class is for internal usage only.</div>
+     * but this class is for internal usage only.
      *
      * @return the file path, or {@code null} if none.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/MimeFileType.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/MimeFileType.java
index 12f2e4812c..8c81a1ebf1 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/MimeFileType.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gcx/MimeFileType.java
@@ -74,10 +74,8 @@ public final class MimeFileType {
 
     /**
      * Returns the MIME type, or {@code null} if none.
-     *
-     * <div class="note"><b>Note:</b>
      * Returning {@code null} is usually not recommended for a {@code toString()} method,
-     * but this class is for internal usage only.</div>
+     * but this class is for internal usage only.
      *
      * @return the MIME type, or {@code null} if none.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/GMLAdapter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/GMLAdapter.java
index f2eb3dd13d..5dc85f6144 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/GMLAdapter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/GMLAdapter.java
@@ -30,9 +30,9 @@ import org.apache.sis.xml.IdentifiedObject;
  * Every GML object to be marshalled have an ID attribute, which is mandatory.
  * If no ID is explicitly set, a default one will be created from the wrapped object.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Future evolution</h2>
  * This class is somewhat temporary. It assigns the ID to the <em>wrapped</em> object.
- * In a future SIS version, we should assign the ID to the object itself.</div>
+ * In a future SIS version, we should assign the ID to the object itself.
  *
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java
index 0d4eab61d8..dac33b234c 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java
@@ -214,10 +214,10 @@ public final class Measure {
      * Sets the unit to the given value, and returns {@code true} if the current {@link #unit} value was different.
      * A return value of {@code true} means that the caller should log a warning.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * Some users wrongly assign the "m" unit to {@code Ellipsoid.inverseFlattening}.
      * The SIS adapter forces the unit to {@link Units#UNITY}, but we want to let the user
-     * know that he probably did something wrong.</div>
+     * know that he probably did something wrong.
      *
      * @param  newUnit  the new unit (cannot be null).
      * @return {@code true} if a different unit was defined before this method call.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
index 6ce45ec6c7..b4c6d0935a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
@@ -210,10 +210,10 @@ public final class AxisNames {
      * Returns the given name in camel case if it is one of the know names.
      * This method canonicalizes also the use of {@code '_'}, {@code '-'} and {@code ' '}.
      *
-     * <div class="note"><b>Rational:</b>
+     * <h4>Rational</h4>
      * Axis names are not really free text. They are specified by ISO 19111 and ISO 19162.
      * SIS does not put restriction on axis names, but we nevertheless try to use a unique
-     * name when we recognize it.</div>
+     * name when we recognize it.
      *
      * @param  name  the name in any case.
      * @return the given name in camel case.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
index 106a9b76ac..45d7946804 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
@@ -73,8 +73,8 @@ public abstract class Initializer {
      * Name of the database to open in the {@code $SIS_DATA/Databases} directory or the directory given by
      * the {@code derby.system.home} property.
      *
-     * <div class="note"><b>Note:</b>
-     * this field is public for the needs of {@code non-free:sis-embedded-data} module.</div>
+     * <h4>Dependency note</h4>
+     * This field is public for the needs of {@code non-free:sis-embedded-data} module.
      */
     public static final String DATABASE = "SpatialMetadata";
 
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/LocalDataSource.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/LocalDataSource.java
index 1897e5b6d7..b5923c713a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/LocalDataSource.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/LocalDataSource.java
@@ -305,8 +305,8 @@ public final class LocalDataSource implements DataSource, Comparable<LocalDataSo
      * Returns {@code true} if the given exception is the one that we expect in successful shutdown of a Derby database.
      * While this method is primarily used for Derby shutdown, the error code tested may be applicable to other systems.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is public for the needs of {@code non-free:sis-embedded-data} module.</div>
+     * <h4>Dependency note</h4>
+     * This method is public for the needs of {@code non-free:sis-embedded-data} module.
      *
      * @param  e  the exception thrown by Derby.
      * @return {@code true} if the exception indicates a successful shutdown.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/SQLUtilities.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/SQLUtilities.java
index dd57a46313..8aff0f53ed 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/SQLUtilities.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/SQLUtilities.java
@@ -100,9 +100,10 @@ public final class SQLUtilities extends Static {
      * method arguments with a name ending by {@code "Pattern"}. Note that not all arguments are pattern; please
      * checks carefully {@link DatabaseMetaData} javadoc for each method.
      *
-     * <div class="note"><b>Example:</b> if a method expects an argument named {@code tableNamePattern},
+     * <h4>Example</h4>
+     * If a method expects an argument named {@code tableNamePattern},
      * then that argument value should be escaped. But if the argument name is only {@code tableName},
-     * then the value should not be escaped.</div>
+     * then the value should not be escaped.
      *
      * @param  pattern  the pattern to escape, or {@code null} if none.
      * @param  escape   value of {@link DatabaseMetaData#getSearchStringEscape()}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/ScriptRunner.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/ScriptRunner.java
index eabb79beb3..5ef740b0c8 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/ScriptRunner.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/ScriptRunner.java
@@ -386,11 +386,11 @@ public class ScriptRunner implements AutoCloseable {
      * Declares that a word in the SQL script needs to be replaced by the given word.
      * The replacement is performed only for occurrences outside identifiers or texts.
      *
-     * <div class="note"><b>Example</b>
-     * this is used for mapping the table names in the EPSG scripts to table names as they were in the MS-Access
+     * <h4>Example</h4>
+     * This is used for mapping the table names in the EPSG scripts to table names as they were in the MS-Access
      * flavor of EPSG database. It may also contains the mapping between SQL keywords used in the SQL scripts to
      * SQL keywords understood by the database. For example if a database does not support the {@code "TEXT"}
-     * data type, it may be replaced by {@code "LONG VARCHAR"}.</div>
+     * data type, it may be replaced by {@code "LONG VARCHAR"}.
      *
      * <b>Limitation:</b> the {@code inScript} word to replace must be a single word with no space.
      * If the text to replace contains two words (for example {@code "CREATE TABLE"}), then revert
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/simple/SimpleCitation.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/simple/SimpleCitation.java
index 67c7ae7d8e..9e837c9e88 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/simple/SimpleCitation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/simple/SimpleCitation.java
@@ -27,11 +27,11 @@ import org.apache.sis.internal.util.Strings;
 /**
  * A trivial implementation of {@link Citation} containing only a title.
  *
- * <div class="note"><b>Design note:</b>
- * we do not put more field than {@link #title} in this {@code SimpleCitation} in order to keep it simple,
+ * <h2>Design note</h2>
+ * We do not put more field than {@link #title} in this {@code SimpleCitation} in order to keep it simple,
  * because the title is the only "universal" property (the need for all other fields will be determined in
  * subclasses on a case-by-case basis) and because {@code SimpleCitation} are sometimes only proxy identified
- * by the {@link #title}.</div>
+ * by the {@link #title}.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.3
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
index 04febe4872..b66610bf6f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
@@ -213,9 +213,10 @@ public class MetadataStandard implements Serializable {
      * return {@code true} for two or more dependencies, then the dependency which should have precedence
      * should be declared first.
      *
-     * <div class="note"><b>Example:</b>: For the ISO 19157 standard reflected by GeoAPI interfaces,
+     * <h4>Example</h4>
+     * For the ISO 19157 standard reflected by GeoAPI interfaces,
      * {@code interfacePackage} shall be the {@link org.opengis.metadata.quality} package.
-     * Its dependency is {@link #ISO_19115} in the {@link org.opengis.metadata} package.</div>
+     * Its dependency is {@link #ISO_19115} in the {@link org.opengis.metadata} package.
      *
      * @param  citation          bibliographical reference to the international standard.
      * @param  interfacePackage  the root package for metadata interfaces.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
index 038ac98167..a4907e1124 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
@@ -144,9 +144,9 @@ public abstract class ModifiableMetadata extends AbstractMetadata {
      * New {@link ModifiableMetadata} instances are initially {@link #EDITABLE}
      * and can be made {@link #FINAL} after construction by a call to {@link ModifiableMetadata#transitionTo(State)}.
      *
-     * <div class="note"><b>Note:</b>
-     * more states may be added in future Apache SIS versions. On possible candidate is {@code STAGED}.
-     * See <a href="https://issues.apache.org/jira/browse/SIS-81">SIS-81</a>.</div>
+     * <h2>Future evolution</h2>
+     * More states may be added in future Apache SIS versions. On possible candidate is {@code STAGED}.
+     * See <a href="https://issues.apache.org/jira/browse/SIS-81">SIS-81</a>.
      *
      * @author  Martin Desruisseaux (Geomatys)
      * @version 1.0
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
index bd3c2c75ad..281acb9731 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
@@ -328,11 +328,11 @@ class TreeNode implements Node {
          * This is used if we want to render a metadata property in a different way than the way implied by JavaBeans.
          * The wrapping operation should be cheap because it will be applied every time the user request the node.
          *
-         * <div class="note"><b>Example:</b>
-         * the {@code "defaultLocale+otherLocale"} property is represented by {@code Map.Entry<Locale,Charset>} values.
+         * <h4>Example</h4>
+         * The {@code "defaultLocale+otherLocale"} property is represented by {@code Map.Entry<Locale,Charset>} values.
          * The nodes created by this class contain those {@code Map.Entry} values, but we want to show them to users as
          * as a {@link java.util.Locale} node with a {@link java.nio.charset.Charset} child. This separation is done by
-         * {@link LocaleAndCharset}.</div>
+         * {@link LocaleAndCharset}.
          */
         final Function<TreeNode,Node> decorator;
 
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
index fb9bd58784..79adbdef3c 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
@@ -379,10 +379,10 @@ final class TreeNodeChildren extends AbstractCollection<TreeTable.Node> {
          * ahead of time by {@link #hasNext()} since we need that information in order to determine
          * if the value needs to be skipped or not.
          *
-         * <div class="note"><b>Note:</b>
+         * <h4>Implementation note</h4>
          * Actually we don't really need to keep this value, since it is not used outside the {@link #hasNext()}
          * method. But we keep it for allowing the {@link #next()} method to opportunistically update the
-         * {@link TreeNode#cachedValue} field.</div>
+         * {@link TreeNode#cachedValue} field.
          */
         private Object nextValue;
 
@@ -403,10 +403,10 @@ final class TreeNodeChildren extends AbstractCollection<TreeTable.Node> {
          * The value of {@link TreeNodeChildren#modCount} at construction time or after
          * the last change done by this iterator. Used for concurrent modification checks.
          *
-         * <div class="note"><b>Note:</b>
+         * <h4>Implementation note</h4>
          * Actually this iterator should be robust to most concurrent modifications.
          * But we check anyway in order to prevent concurrent modifications in user
-         * code, in case a future SIS version become more sensitive to such changes.</div>
+         * code, in case a future SIS version become more sensitive to such changes.
          */
         private int modCountCheck;
 
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
index 2dacd3777f..5899fbca2b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
@@ -228,12 +228,11 @@ public class DefaultExtendedElementInformation extends ISOMetadata implements Ex
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
index 957de6c219..ad4c8bc2b2 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
@@ -277,7 +277,8 @@ public class DefaultIdentifier extends ISOMetadata implements Identifier {
      * Returns the alphanumeric value identifying an instance in the namespace.
      * The code is optionally from a controlled list or pattern.
      *
-     * <div class="note"><b>Example:</b> {@code "4326"}.</div>
+     * <h4>Example</h4>
+     * {@code "4326"}
      *
      * The code is mandatory according ISO specification, but this {@code DefaultIdentifier}
      * implementation does not enforce this restriction.
@@ -305,7 +306,8 @@ public class DefaultIdentifier extends ISOMetadata implements Identifier {
      * Returns the identifier or namespace in which the code is valid.
      * This is often the {@linkplain #getAuthority() authority}'s abbreviation, but not necessarily.
      *
-     * <div class="note"><b>Example:</b> {@code "EPSG"}.</div>
+     * <h4>Example</h4>
+     * {@code "EPSG"}
      *
      * @return the identifier or namespace in which the code is valid, or {@code null} if none.
      *
@@ -334,7 +336,8 @@ public class DefaultIdentifier extends ISOMetadata implements Identifier {
      * This version is included only when the {@linkplain #getCode() code} uses versions.
      * When appropriate, the edition is identified by the effective date, coded using ISO 8601 date format.
      *
-     * <div class="note"><b>Example:</b> the version of the underlying EPSG database.</div>
+     * <h4>Example</h4>
+     * The version of the underlying EPSG database.
      *
      * @return the version identifier for the namespace, or {@code null} if none.
      */
@@ -357,7 +360,8 @@ public class DefaultIdentifier extends ISOMetadata implements Identifier {
     /**
      * Returns the natural language description of the meaning of the code value.
      *
-     * <div class="note"><b>Example:</b> "World Geodetic System 1984".</div>
+     * <h4>Example</h4>
+     * "World Geodetic System 1984".
      *
      * @return the natural language description, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
index 5264a05573..4a2862cfd0 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
@@ -466,10 +466,10 @@ public class DefaultMetadata extends ISOMetadata implements Metadata {
     /**
      * Returns a unique identifier for this metadata record.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Standard usage</h4>
      * OGC 07-045 (Catalog Service Specification — ISO metadata application profile) recommends usage
      * of a UUID (Universal Unique Identifier) as specified by <a href="http://www.ietf.org">IETF</a>
-     * to ensure identifier’s uniqueness.</div>
+     * to ensure identifier’s uniqueness.
      *
      * @return unique identifier for this metadata record, or {@code null}.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
index 6e66813225..4f7f4f8679 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
@@ -96,12 +96,11 @@ public class DefaultEnvironmentalRecord extends ISOMetadata implements Environme
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
index 0a4ea58e30..6709512c64 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
@@ -184,9 +184,9 @@ public class DefaultObjective extends ISOMetadata implements Objective {
      * ({@linkplain IdentifierSpace#ID ID}, {@linkplain IdentifierSpace#UUID UUID}, <i>etc.</i>),
      * thus providing a unified view of every kind of identifiers associated to this objective.
      *
-     * <div class="note"><b>XML note:</b>
+     * <h4>XML marshalling note</h4>
      * The {@code <mac:identifier>} element marshalled to XML will exclude all the above cited identifiers,
-     * for compliance with ISO 19115 model. Those identifiers will appear in other XML elements or attributes.</div>
+     * for compliance with ISO 19115 model. Those identifiers will appear in other XML elements or attributes.
      *
      * @return identification of the objective.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
index 6c15348345..088e9de03b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
@@ -183,9 +183,9 @@ public class AbstractParty extends ISOMetadata implements Party {
      * ({@linkplain IdentifierSpace#ID ID}, {@linkplain IdentifierSpace#UUID UUID}, <i>etc.</i>),
      * thus providing a unified view of every kind of identifiers associated to this party.
      *
-     * <div class="note"><b>XML note:</b>
+     * <h4>XML marshalling note</h4>
      * The {@code <mac:identifier>} element marshalled to XML will exclude all the above cited identifiers,
-     * for compliance with ISO 19115 model. Those identifiers will appear in other XML elements or attributes.</div>
+     * for compliance with ISO 19115 model. Those identifiers will appear in other XML elements or attributes.
      *
      * @return identifiers of the party, or an empty collection if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
index 538386ed53..5d5226c247 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
@@ -51,16 +51,15 @@ import org.apache.sis.metadata.iso.DefaultIdentifier;           // For javadoc
  *       together with information about who maintains those identifiers.</li>
  * </ul>
  *
- * <div class="note"><b>Example:</b> {@code "EPSG:4326"} is a widely-used identifier
+ * For example {@code "EPSG:4326"} is a widely-used identifier
  * for the <cite>“World Geodetic System (WGS) 1984”</cite> Coordinate Reference System (CRS).
  * The {@code "4326"} part is the identifier {@linkplain DefaultIdentifier#getCode() code} and
  * the {@code "EPSG"} part is the identifier {@linkplain DefaultIdentifier#getCodeSpace() code space}.
  * The meaning of codes in that code space is controlled by an {@linkplain DefaultIdentifier#getAuthority() authority},
  * the <cite>“EPSG Geodetic Parameter Dataset”</cite>. The {@linkplain DefaultCitation#getCitedResponsibleParties() cited
  * responsible party} for the EPSG dataset is the <cite>“International Association of Oil &amp; Gas producers”</cite> (IOGP).
- * </div>
  *
- * The constants defined in this class are typically values returned by:
+ * <p>The constants defined in this class are typically values returned by:</p>
  * <ul>
  *   <li>{@link DefaultCitation#getIdentifiers()} for the {@link #ISBN} and {@link #ISSN} constants.</li>
  *   <li>{@link org.apache.sis.referencing.ImmutableIdentifier#getAuthority()} for other {@code IdentifierSpace} constants.</li>
@@ -217,8 +216,8 @@ public final class Citations extends Static {
      * Apache SIS uses this authority mostly for map projection methods and parameters as they were defined in older
      * OGC specifications (in more recent specifications, {@linkplain #EPSG} identifiers tend to be more widely used).
      *
-     * <div class="note"><b>Example</b>
-     * the Mercator projection can be defined by an operation method having the {@code "OGC:Mercator_1SP"} identifier
+     * <h4>Example</h4>
+     * The Mercator projection can be defined by an operation method having the {@code "OGC:Mercator_1SP"} identifier
      * and the following parameters:
      *
      * <table class="sis">
@@ -231,7 +230,7 @@ public final class Citations extends Static {
      * <tr><td>{@code "OGC:scale_factor"}</td>      <td>Scale factor at natural origin</td></tr>
      * <tr><td>{@code "OGC:false_easting"}</td>     <td>False easting</td></tr>
      * <tr><td>{@code "OGC:false_northing"}</td>    <td>False northing</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Specifications referenced</h4>
      * The specification actually referenced by this citation is implementation dependent
@@ -263,8 +262,8 @@ public final class Citations extends Static {
      * This citation is used as the authority for many map projection method and parameter names
      * other than the {@linkplain #EPSG} ones.
      *
-     * <div class="note"><b>Note</b>
-     * many parameter names defined by {@linkplain #OGC} are very similar to the ESRI ones,
+     * <h4>Compatibility note</h4>
+     * Many parameter names defined by {@linkplain #OGC} are very similar to the ESRI ones,
      * except for the case. Examples:
      *
      * <table class="sis">
@@ -277,7 +276,7 @@ public final class Citations extends Static {
      * <tr><td>{@code "ESRI:Scale_Factor"}</td>      <td>{@code "OGC:scale_factor"}</td></tr>
      * <tr><td>{@code "ESRI:False_Easting"}</td>     <td>{@code "OGC:false_easting"}</td></tr>
      * <tr><td>{@code "ESRI:False_Northing"}</td>    <td>{@code "OGC:false_northing"}</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Main usage</h4>
      * This value can be returned by:
@@ -309,8 +308,8 @@ public final class Citations extends Static {
      * This citation is used as the authority for some map projection method and parameter names
      * as used in netCDF files.
      *
-     * <div class="note"><b>Example</b>
-     * the Mercator projection can be defined in a netCDF file with the following parameters:
+     * <h4>Example</h4>
+     * The Mercator projection can be defined in a netCDF file with the following parameters:
      *
      * <table class="sis">
      * <caption>Example of identifiers in netCDF name space</caption>
@@ -322,7 +321,7 @@ public final class Citations extends Static {
      * <tr><td>{@code "NetCDF:scale_factor_at_projection_origin"}</td> <td>Scale factor at natural origin</td></tr>
      * <tr><td>{@code "NetCDF:false_easting"}</td>                     <td>False easting</td></tr>
      * <tr><td>{@code "NetCDF:false_northing"}</td>                    <td>False northing</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Main usage</h4>
      * This value can be returned by:
@@ -847,14 +846,13 @@ public final class Citations extends Static {
      *       if any, and returns the result.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
-     * examples of ignorable identifier characters are <cite>zero width space</cite> or <cite>word joiner</cite>.
-     * Those characters are illegal in XML identifiers, and should therfore be removed if the Unicode identifier
-     * may also be used as XML identifier.</div>
+     * Examples of ignorable identifier characters are <cite>zero width space</cite> or <cite>word joiner</cite>.
+     * Those characters are illegal in XML identifiers, and should therefore be removed if the Unicode identifier
+     * may also be used as XML identifier.
      *
-     * If non-null, the result is suitable for use as a XML identifier except for a few uncommon characters.
+     * <p>If non-null, the result is suitable for use as a XML identifier except for a few uncommon characters.</p>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Compatibility note</h4>
      * the following characters are invalid in XML identifiers. However, since they are valid in Unicode identifiers,
      * they could be included in the string returned by this method:
      * <ul>
@@ -862,7 +860,7 @@ public final class Citations extends Static {
      *   <li>{@code ª} (feminine ordinal indicator)</li>
      *   <li>{@code º} (masculine ordinal indicator)</li>
      *   <li>{@code ⁔}</li>
-     * </ul></div>
+     * </ul>
      *
      * @param  citation  the citation for which to infer the code space, or {@code null}.
      * @return a non-empty code space for the given citation without leading or trailing whitespaces,
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
index 6993fb1d6b..c80182f672 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
@@ -281,7 +281,8 @@ public class DefaultCitation extends ISOMetadata implements Citation {
     /**
      * Returns short name or other language name by which the cited information is known.
      *
-     * <div class="note"><b>Example:</b> "DCW" as an alternative title for "Digital Chart of the World".</div>
+     * <h4>Example</h4>
+     * "DCW" as an alternative title for "Digital Chart of the World".
      *
      * @return other names for the resource, or an empty collection if none.
      */
@@ -365,7 +366,11 @@ public class DefaultCitation extends ISOMetadata implements Citation {
     /**
      * Returns the unique identifier for the resource.
      *
-     * <div class="note"><b>Example:</b> Universal Product Code (UPC), National Stock Number (NSN).</div>
+     * <h4>Examples</h4>
+     * <ul>
+     *   <li>Universal Product Code (UPC)</li>
+     *   <li>National Stock Number (NSN)</li>
+     * </ul>
      *
      * <h4>Unified identifiers view</h4>
      * In this SIS implementation, the collection returned by this method includes the XML identifiers
@@ -373,9 +378,9 @@ public class DefaultCitation extends ISOMetadata implements Citation {
      * as well as the {@linkplain #getISBN() ISBN} and {@linkplain #getISSN() ISSN} codes, thus
      * providing a unified view of every kind of identifiers associated to this citation.
      *
-     * <div class="note"><b>XML note:</b>
+     * <h4>XML marshalling note</h4>
      * The {@code <cit:identifier>} element marshalled to XML will exclude all the above cited identifiers,
-     * for ISO 19115-3 compliance. Those identifiers will appear in other XML elements or attributes.</div>
+     * for ISO 19115-3 compliance. Those identifiers will appear in other XML elements or attributes.
      *
      * @return the identifiers, or an empty collection if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
index cb54630731..6119c3db57 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
@@ -283,9 +283,8 @@ public class DefaultOnlineResource extends ISOMetadata implements OnlineResource
     /**
      * Returns the connection protocol to be used.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Examples</h4>
      * ftp, http get KVP, http POST, <i>etc</i>.
-     * </div>
      *
      * @return connection protocol to be used, or {@code null}.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
index 1b9aa90c65..beee8059ab 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
@@ -131,12 +131,11 @@ public class DefaultBand extends DefaultSampleDimension implements Band {
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
index 950adee149..f30f722fd7 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
@@ -92,12 +92,11 @@ public class DefaultFeatureTypeInfo extends ISOMetadata implements FeatureTypeIn
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
index c2e07172ac..189aaa90ca 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
@@ -150,12 +150,11 @@ public class DefaultImageDescription extends DefaultCoverageDescription implemen
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether
      * a value is out of range). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
index 69e44d747f..3b450d94cf 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
@@ -186,12 +186,11 @@ public class DefaultSampleDimension extends DefaultRangeDimension implements Sam
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
@@ -433,11 +432,11 @@ public class DefaultSampleDimension extends DefaultRangeDimension implements Sam
     /**
      * Returns type of transfer function to be used when scaling a physical value for a given element.
      *
-     * <div class="note"><b>Note on XML marshalling:</b>
+     * <h4>Note on XML marshalling</h4>
      * ISO 19115-2 defines this property in {@linkplain DefaultBand a subtype} for historical reasons.
      * Apache SIS moves this property up in the hierarchy since this property can apply to any sample dimension,
      * not only the measurements in the electromagnetic spectrum. However, this property will not appear in XML
-     * documents unless this {@code SampleDimension} is actually a {@code Band}.</div>
+     * documents unless this {@code SampleDimension} is actually a {@code Band}.
      *
      * @return type of transfer function, or {@code null}.
      */
@@ -514,11 +513,11 @@ public class DefaultSampleDimension extends DefaultRangeDimension implements Sam
      * Returns the smallest distance between which separate points can be distinguished,
      * as specified in instrument design.
      *
-     * <div class="note"><b>Note on XML marshalling:</b>
+     * <h4>Note on XML marshalling</h4>
      * ISO 19115-2 defines this property in {@linkplain DefaultBand a subtype} for historical reasons.
      * Apache SIS moves this property up in the hierarchy since this property can apply to any sample dimension,
      * not only the measurements in the electromagnetic spectrum. However, this property will not appear in XML
-     * documents unless this {@code SampleDimension} is actually a {@code Band}.</div>
+     * documents unless this {@code SampleDimension} is actually a {@code Band}.
      *
      * @return smallest distance between which separate points can be distinguished, or {@code null}.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
index 57af6f9fc5..dcb068867a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
@@ -119,12 +119,11 @@ public class DefaultDigitalTransferOptions extends ISOMetadata implements Digita
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
index 5a63da7b82..c69adc640e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
@@ -132,12 +132,11 @@ public class DefaultMedium extends ISOMetadata implements Medium {
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
index 1e88c3cb84..415eae319e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
@@ -645,12 +645,12 @@ public class DefaultGeographicBoundingBox extends AbstractGeographicExtent imple
      * In both cases, if either this box or the specified box has {@linkplain Double#NaN NaN} bounds,
      * then the corresponding bounds of the result will bet set to NaN.
      *
-     * <div class="note"><b>Rational:</b>
-     * this class is stricter about NaN values than other classes like {@link org.apache.sis.geometry.GeneralEnvelope}.
+     * <h4>Comparison with other API</h4>
+     * This class is stricter about NaN values than other classes like {@link org.apache.sis.geometry.GeneralEnvelope}.
      * The reason is that computations on {@code GeographicBoundingBox} instances are rare ({@code Envelope} instances
      * are preferred for this purpose). Usually, {@code GeographicBoundingBox} values come directly from some metadata
      * structure. Consequently, NaN values in {@code GeographicBoundingBox} means <cite>"information is unknown"</cite>
-     * more often than <cite>"not yet calculated"</cite>.</div>
+     * more often than <cite>"not yet calculated"</cite>.
      *
      * @param  box  the geographic bounding box to add to this box.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicDescription.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicDescription.java
index f53183285e..c6755b1e24 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicDescription.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicDescription.java
@@ -41,10 +41,9 @@ import org.apache.sis.util.iso.Types;
  * In addition, the geographic identifier can optionally have a
  * {@linkplain DefaultIdentifier#getDescription() natural language description}.
  *
- * <div class="note"><b>Example:</b>
- * a geographic area may be identified by the {@code 1731} code in the {@code EPSG} codespace.
+ * <h2>Examples</h2>
+ * A geographic area may be identified by the {@code 1731} code in the {@code EPSG} codespace.
  * The natural language description for {@code EPSG:1731} can be <cite>“France – mainland north of 48.15°N”</cite>.
- * </div>
  *
  * <h2>Limitations</h2>
  * <ul>
@@ -90,9 +89,9 @@ public class DefaultGeographicDescription extends AbstractGeographicExtent imple
      * Callers may consider using the {@linkplain DefaultIdentifier#getDescription() identifier description}
      * as an alternative and keep the code for a more compact string (often a primary key).
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * <code>new DefaultGeographicDescription({@link org.apache.sis.metadata.iso.citation.Citations#EPSG}, "1731")</code>
-     * can stand for <cite>“France – mainland north of 48.15°N”</cite>.</div>
+     * can stand for <cite>“France – mainland north of 48.15°N”</cite>.
      *
      * @param authority  the authority of the identifier code, or {@code null} if none.
      * @param code       the identifier code used to represent a geographic area, or {@code null} if none.
@@ -181,13 +180,13 @@ public class DefaultGeographicDescription extends AbstractGeographicExtent imple
     /**
      * Returns the identifier used to represent a geographic area.
      *
-     * <div class="note"><b>Example:</b>
-     * an identifier with the following properties:
+     * <h4>Example</h4>
+     * An identifier with the following properties:
      * <ul>
      *   <li>the {@code "EPSG"} code space,</li>
      *   <li>the {@code "1731"} code, and</li>
      *   <li>the <cite>“France – mainland north of 48.15°N”</cite> description.</li>
-     * </ul></div>
+     * </ul>
      *
      * @return the identifier used to represent a geographic area, or {@code null}.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
index e76f0b23f3..0e557f1da8 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
@@ -342,13 +342,13 @@ public class DefaultVerticalExtent extends ISOMetadata implements VerticalExtent
      * This happen for example with conversions from "Elevation" axis to "Depth" axis.
      * In case of doubt, this method returns {@code false}.
      *
-     * <div class="note"><b>Note about alternatives:</b>
-     * we could compare axis directions instead, but it would not work with user-defined directions
+     * <h4>Alternatives</h4>
+     * We could compare axis directions instead, but it would not work with user-defined directions
      * or user-defined unit conversions with negative scale factor (should never happen, but we are
      * paranoiac). We could compare the minimum and maximum values after conversions, but it would
      * not work if one or both values are {@code null} or {@code NaN}. Since we want to preserve
      * {@link NilReason}, we still need to know if axes are reversed in order to put the nil reason
-     * in the right location.</div>
+     * in the right location.
      *
      * @param  cv      the conversion computed by {@link #getConversionFrom(VerticalCRS)} (may be {@code null}).
      * @param  sample  the minimum or the maximum value.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
index 12bf524a87..c156990041 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
@@ -173,12 +173,12 @@ public final class Extents extends Static {
      * contains many {@link Identification} or many {@link Extent} instances, then this method returns
      * the {@linkplain DefaultGeographicBoundingBox#add(GeographicBoundingBox) union} of all of them.
      *
-     * <div class="note"><b>Use case:</b>
-     * this convenience method is useful when the metadata is expected to contain only one bounding box,
+     * <h4>Use case</h4>
+     * This convenience method is useful when the metadata is expected to contain only one bounding box,
      * typically because the metadata were obtained from a {@linkplain org.apache.sis.storage.Resource
      * resource} which is known to support only singletons (one raster or one set of features).
      * For more general cases, it is often more appropriate to handle each bounding box separately
-     * using {@link #getGeographicBoundingBox(Extent)}.</div>
+     * using {@link #getGeographicBoundingBox(Extent)}.
      *
      * @param  metadata  the metadata from which to get a global bounding box, or {@code null} if none.
      * @return a global bounding box for all extents found in the given metadata, or {@code null} if none.
@@ -749,10 +749,10 @@ public final class Extents extends Static {
     /**
      * Implementation of {@code intersection(…)} and {@code union(…)} methods.
      *
-     * <div class="note"><b>Note:</b>
-     * the <var>C</var> parameter type should be {@code <C extends ISOMetadata & I>}.
+     * <h4>API note</h4>
+     * The <var>C</var> parameter type should be {@code <C extends ISOMetadata & I>}.
      * But this is not allowed by current Java compiler, because of complexity. See
-     * <a href="https://bugs.openjdk.java.net/browse/JDK-4899305">JDK-4899305</a>.</div>
+     * <a href="https://bugs.openjdk.java.net/browse/JDK-4899305">JDK-4899305</a>.
      *
      * @param  <I>          the metadata interface.
      * @param  <C>          the metadata implementation class. Shall implement {@code <I>}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphic.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphic.java
index 5fce4574a9..f55f6adf31 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphic.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphic.java
@@ -204,9 +204,8 @@ public class DefaultBrowseGraphic extends ISOMetadata implements BrowseGraphic {
     /**
      * Format in which the illustration is encoded.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Examples</h4>
      * CGM, EPS, GIF, JPEG, PBM, PS, TIFF, XWD.
-     * </div>
      *
      * @return format in which the illustration is encoded, or {@code null}.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
index 3d0c0a0095..f41951ac2a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
@@ -124,12 +124,11 @@ public class DefaultRepresentativeFraction extends Number implements Representat
     /**
      * Constructs a new representative fraction initialized to the value of the given object.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      */
@@ -233,10 +232,8 @@ public class DefaultRepresentativeFraction extends Number implements Representat
 
     /**
      * Returns 1 if the {@linkplain #getDenominator() denominator} is equal to 1, or 0 otherwise.
-     *
-     * <div class="note"><b>Rational:</b>
-     * This method is defined that way because scales smaller than 1 can
-     * only be casted to 0, and NaN values are also represented by 0.</div>
+     * This method is implemented that way because scales smaller than 1 can only be casted to 0,
+     * and NaN values are also represented by 0.
      *
      * @return 1 if the denominator is 1, or 0 otherwise.
      */
@@ -247,10 +244,8 @@ public class DefaultRepresentativeFraction extends Number implements Representat
 
     /**
      * Returns 1 if the {@linkplain #getDenominator() denominator} is equal to 1, or 0 otherwise.
-     *
-     * <div class="note"><b>Rational:</b>
-     * This method is defined that way because scales smaller than 1 can
-     * only be casted to 0, and NaN values are also represented by 0.</div>
+     * This method is implemented that way because scales smaller than 1 can only be casted to 0,
+     * and NaN values are also represented by 0.
      *
      * @return 1 if the denominator is 1, or 0 otherwise.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
index ab129b19c5..42c588053e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
@@ -153,12 +153,11 @@ public class DefaultResolution extends ISOMetadata implements Resolution {
      * {@linkplain #getAngularDistance() angular distance} and {@linkplain #getLevelOfDetail() level of detail}
      * are specified, then the first of those values is taken and the other values are silently discarded.</p>
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentification.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentification.java
index fa2c5692e1..b86b178d56 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentification.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentification.java
@@ -232,7 +232,8 @@ public class DefaultServiceIdentification extends AbstractIdentification impleme
     /**
      * Returns a service type name.
      *
-     * <div class="note"><b>Examples:</b> "discovery", "view", "download", "transformation", or "invoke"</div>
+     * <h4>Examples</h4>
+     * "discovery", "view", "download", "transformation", or "invoke".
      *
      * @return a service type name.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
index 6e81be6bc5..eec37596bd 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
@@ -82,12 +82,11 @@ public class DefaultNominalResolution extends ISOMetadata implements NominalReso
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java
index 111de0f434..978c85c9cf 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java
@@ -303,12 +303,11 @@ public class DefaultScopeDescription extends ISOMetadata implements ScopeDescrip
     /**
      * Returns the dataset to which the information applies.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If a geographic data provider is generating vector mapping for the administrative areas
      * and if the data were processed in the same way, then the provider could record the bulk
      * of initial data at {@link ScopeCode#DATASET} level with a
      * “<cite>Administrative area A, B &amp; C</cite>” description.
-     * </div>
      *
      * @return dataset to which the information applies, or {@code null}.
      */
@@ -339,11 +338,10 @@ public class DefaultScopeDescription extends ISOMetadata implements ScopeDescrip
     /**
      * Returns the feature types to which the information applies.
      *
-     * <div class="note"><b>Example:</b>
-     * if an administrative area performs a complete re-survey of the road network,
+     * <h4>Example</h4>
+     * If an administrative area performs a complete re-survey of the road network,
      * the change can be recorded at {@link ScopeCode#FEATURE_TYPE} level with a
      * “<cite>Administrative area A — Road network</cite>” description.
-     * </div>
      *
      * <h4>Conditions</h4>
      * This method returns a modifiable collection only if no other property is set.
@@ -373,11 +371,10 @@ public class DefaultScopeDescription extends ISOMetadata implements ScopeDescrip
     /**
      * Returns the attribute types to which the information applies.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * if an administrative area detects an anomaly in all overhead clearance of the road survey,
      * the correction can be recorded at {@link ScopeCode#ATTRIBUTE_TYPE} level with a
      * “<cite>Administrative area A — Overhead clearance</cite>” description.
-     * </div>
      *
      * <h4>Conditions</h4>
      * This method returns a modifiable collection only if no other property is set.
@@ -407,11 +404,10 @@ public class DefaultScopeDescription extends ISOMetadata implements ScopeDescrip
     /**
      * Returns the feature instances to which the information applies.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If a new bridge is constructed in a road network,
      * the change can be recorded at {@link ScopeCode#FEATURE} level with a
      * “<cite>Administrative area A — New bridge</cite>” description.
-     * </div>
      *
      * <h4>Conditions</h4>
      * This method returns a modifiable collection only if no other property is set.
@@ -441,11 +437,10 @@ public class DefaultScopeDescription extends ISOMetadata implements ScopeDescrip
     /**
      * Returns the attribute instances to which the information applies.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If the overhead clearance of a new bridge was wrongly recorded,
      * the correction can be recorded at {@link ScopeCode#ATTRIBUTE} level with a
      * “<cite>Administrative area A — New bridge — Overhead clearance</cite>” description.
-     * </div>
      *
      * <h4>Conditions</h4>
      * This method returns a modifiable collection only if no other property is set.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
index d603d3e333..90d88a163a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
@@ -126,12 +126,11 @@ public class DefaultDimension extends ISOMetadata implements Dimension {
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
@@ -248,8 +247,8 @@ public class DefaultDimension extends ISOMetadata implements Dimension {
     /**
      * Returns the enhancement / modifier of the dimension name.
      *
-     * <div class="note"><b>Example:</b>
-     * dimensionName = "column", dimensionTitle = "longitude"</div>
+     * <h4>Example</h4>
+     * dimensionName = "column", dimensionTitle = "longitude"
      *
      * @return the enhancement / modifier of the dimension name.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
index dbb2c377dc..5ec74473c6 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
@@ -90,12 +90,11 @@ public class DefaultGeometricObjects extends ISOMetadata implements GeometricObj
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
index ced5d10c90..e3537f1dfb 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
@@ -124,12 +124,11 @@ public class DefaultGridSpatialRepresentation extends AbstractSpatialRepresentat
      * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
      * given object are not recursively copied.
      *
-     * <div class="note"><b>Note on properties validation:</b>
+     * <h4>Note on properties validation</h4>
      * This constructor does not verify the property values of the given metadata (e.g. whether it contains
      * unexpected negative values). This is because invalid metadata exist in practice, and verifying their
      * validity in this copy constructor is often too late. Note that this is not the only hole, as invalid
      * metadata instances can also be obtained by unmarshalling an invalid XML document.
-     * </div>
      *
      * @param  object  the metadata to copy values from, or {@code null} if none.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
index eba9218937..274e8a67a6 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
@@ -76,11 +76,11 @@ final class Dispatcher implements InvocationHandler {
      * Index in the {@code CachedStatement} cache array where to search first. This is only a hint for increasing
      * the chances to find quickly a {@code CachedStatement} instance for the right type and identifier.
      *
-     * <div class="note"><b>Design note:</b>
-     * this field is declared in this {@code Dispatcher} class instead of {@link CachedStatement} because we need
+     * <h4>Design note</h4>
+     * This field is declared in this {@code Dispatcher} class instead of {@link CachedStatement} because we need
      * it before a {@code CachedStatement} instance can be found. Furthermore, two {@code Dispatcher} instances may
      * have different {@code preferredIndex} values even if their {@link CachedStatement#type} value is the same,
-     * since their {@link #identifier} values are different.</div>
+     * since their {@link #identifier} values are different.
      */
     int preferredIndex;
 
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
index 342fe4a637..979b18602b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
@@ -203,9 +203,9 @@ public abstract class AbstractName implements GenericName, Serializable {
      * Returns the first element in the sequence of {@linkplain #getParsedNames() parsed names}.
      * For any {@code LocalName}, this is always {@code this}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If {@code this} name is {@code "org.opengis.util.Record"}
-     * (no matter its scope, then this method returns {@code "org"}.</div>
+     * (no matter its scope, then this method returns {@code "org"}.
      *
      * @return the first element in the list of {@linkplain #getParsedNames() parsed names}.
      */
@@ -218,9 +218,9 @@ public abstract class AbstractName implements GenericName, Serializable {
      * Returns the last element in the sequence of {@linkplain #getParsedNames() parsed names}.
      * For any {@code LocalName}, this is always {@code this}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If {@code this} name is {@code "org.opengis.util.Record"}
-     * (no matter its scope, then this method returns {@code "Record"}.</div>
+     * (no matter its scope, then this method returns {@code "Record"}.
      *
      * @return the last element in the list of {@linkplain #getParsedNames() parsed names}.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameFactory.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameFactory.java
index 84d9a9d1cf..dc7cf4843c 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameFactory.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameFactory.java
@@ -148,7 +148,7 @@ public class DefaultNameFactory extends AbstractFactory implements NameFactory {
      * return an existing instance when possible. The namespace is characterized by the given name,
      * and optionally by the following properties:
      *
-     * <blockquote><table class="sis">
+     * <table class="sis">
      *   <caption>Recognized properties</caption>
      *   <tr>
      *     <th>Property name</th>
@@ -164,13 +164,13 @@ public class DefaultNameFactory extends AbstractFactory implements NameFactory {
      *     <td>The separator to insert between the namespace and the {@linkplain AbstractName#head() head}.<br>
      *         If omitted, then the default is the same value than {@code "separator"}.</td>
      *   </tr>
-     * </table></blockquote>
+     * </table>
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>For URN namespace, {@code separator} = {@code ":"} is typically sufficient.</li>
      *   <li>For HTTP namespace, {@code separator.head} = {@code "://"} and {@code separator} = {@code "."}.</li>
-     * </ul></div>
+     * </ul>
      *
      * @param  name  the name of the namespace to be returned. This argument can be created using
      *         <code>{@linkplain #createGenericName(NameSpace, CharSequence[]) createGenericName}(null, namespace)</code>.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
index cd6fc65296..6619183e5f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
@@ -501,8 +501,9 @@ public class DefaultNameSpace implements NameSpace, Serializable {
      * Following the <cite>Java Content Repository</cite> (JCR) convention,
      * this method returns the string representation of {@linkplain #name()} between curly brackets.
      *
-     * <div class="note"><b>Example:</b> if the name of this namespace is “<code>org.apache.sis</code>”,
-     * then this method returns “<code>{org.apache.sis}</code>”.</div>
+     * <h4>Example</h4>
+     * If the name of this namespace is “<code>org.apache.sis</code>”,
+     * then this method returns “<code>{org.apache.sis}</code>”.
      *
      * <h4>Usage</h4>
      * With this convention, it would be possible to create an <cite>expanded form</cite> of a generic name
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Names.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Names.java
index 09d2cf2009..587b08a93e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Names.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Names.java
@@ -193,8 +193,8 @@ public final class Names extends Static {
      *   <tr><td>{@code localPart}</td> <td><code>name.{@linkplain DefaultLocalName#toString() toString()}</code></td></tr>
      * </table></blockquote>
      *
-     * <div class="note"><b>Example:</b>
-     * for a name created by {@code createLocalName("http://www.opengis.net/gml/srs/epsg.xml", "#", "4326")}:
+     * <h4>Example</h4>
+     * For a name created by {@code createLocalName("http://www.opengis.net/gml/srs/epsg.xml", "#", "4326")}:
      * <ul>
      *   <li><code>name.{@linkplain DefaultLocalName#toString() toString()}</code>
      *       returns the {@code "4326"} string.</li>
@@ -204,11 +204,13 @@ public final class Names extends Static {
      *       returns the {@code "http://www.opengis.net/gml/srs/epsg.xml#4326"} name.</li>
      *   <li><code>{@linkplain #toExpandedString(GenericName) toExpandedString}(name)</code>
      *       returns the {@code "{http://www.opengis.net/gml/srs/epsg.xml}4326"} string.</li>
-     * </ul></div>
+     * </ul>
      *
-     * <div class="note"><b>Performance note:</b> this method is okay for <em>casual</em> use. If many names need
-     * to be created in the same namespace, then {@link DefaultNameFactory#createLocalName(NameSpace, CharSequence)}
-     * is more efficient since it allows to create the {@code NameSpace} object only once.</div>
+     * <h4>Performance note</h4>
+     * This method is okay for <em>casual</em> use.
+     * If many names need to be created in the same namespace,
+     * then {@link DefaultNameFactory#createLocalName(NameSpace, CharSequence)}
+     * is more efficient since it allows to create the {@code NameSpace} object only once.
      *
      * @param  namespace  the namespace, or {@code null} for the global namespace.
      * @param  separator  the separator between the namespace and the local part, or {@code null}
@@ -229,12 +231,15 @@ public final class Names extends Static {
      * The character sequences can be either {@link String} or {@link InternationalString} instances.
      * Those character sequences are taken verbatim; they are <em>not</em> parsed into their components.
      *
-     * <div class="note"><b>Example:</b> {@code createTypeName("gco", ":", "Integer")} returns a name
-     * which can be used for representing the type of {@code <gco:Integer>} elements in XML files.</div>
+     * <h4>Example</h4>
+     * {@code createTypeName("gco", ":", "Integer")} returns a name
+     * which can be used for representing the type of {@code <gco:Integer>} elements in XML files.
      *
-     * <div class="note"><b>Performance note:</b> this method is okay for <em>casual</em> use. If many names need
-     * to be created in the same namespace, then {@link DefaultNameFactory#createTypeName(NameSpace, CharSequence)}
-     * is more efficient since it allows to create the {@code NameSpace} object only once.</div>
+     * <h4>Performance note</h4>
+     * This method is okay for <em>casual</em> use.
+     * If many names need to be created in the same namespace,
+     * then {@link DefaultNameFactory#createTypeName(NameSpace, CharSequence)}
+     * is more efficient since it allows to create the {@code NameSpace} object only once.
      *
      * @param  namespace  the namespace, or {@code null} for the global namespace.
      * @param  separator  the separator between the namespace and the local part, or {@code null}
@@ -287,9 +292,10 @@ public final class Names extends Static {
      * Creates a member name for values of the given class. A {@link TypeName} will be inferred
      * from the given {@code valueClass} as documented in the {@link DefaultTypeName} javadoc.
      *
-     * <div class="note"><b>Performance note:</b> this method is okay for <em>casual</em> use. If many names
-     * need to be created, then {@link DefaultNameFactory#createMemberName(NameSpace, CharSequence, TypeName)}
-     * is more efficient since it allows to create the {@code NameSpace} and {@code TypeName} objects only once.</div>
+     * <h4>Performance note</h4>
+     * This method is okay for <em>casual</em> use. If many names need to be created,
+     * then {@link DefaultNameFactory#createMemberName(NameSpace, CharSequence, TypeName)}
+     * is more efficient since it allows to create the {@code NameSpace} and {@code TypeName} objects only once.
      *
      * @param  namespace  the namespace, or {@code null} for the global namespace.
      * @param  separator  the separator between the namespace and the local part, or {@code null}
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
index 93694967b6..d7f50cec76 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
@@ -130,15 +130,15 @@ public final class Types extends Static {
      * Returns the ISO name for the given class, or {@code null} if none.
      * This method can be used for GeoAPI interfaces or {@link CodeList}.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li><code>getStandardName({@linkplain org.opengis.metadata.citation.Citation}.class)</code>
      *       (an interface) returns {@code "CI_Citation"}.</li>
      *   <li><code>getStandardName({@linkplain org.opengis.referencing.cs.AxisDirection}.class)</code>
      *       (a code list) returns {@code "CS_AxisDirection"}.</li>
      * </ul>
-     * </div>
      *
+     * <h4>Implementation note</h4>
      * This method looks for the {@link UML} annotation on the given type. It does not search for
      * parent classes or interfaces if the given type is not directly annotated (i.e. {@code @UML}
      * annotations are not inherited). If no annotation is found, then this method does not fallback
@@ -174,14 +174,13 @@ public final class Types extends Static {
      * enumeration or code list value. This method uses the {@link UML} annotation if it exists, or
      * fallback on the {@linkplain Class#getSimpleName() simple class name} otherwise.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code getListName(ParameterDirection.IN_OUT)}      returns {@code "SV_ParameterDirection"}.</li>
      *   <li>{@code getListName(AxisDirection.NORTH)}            returns {@code "CS_AxisDirection"}.</li>
      *   <li>{@code getListName(TopicCategory.INLAND_WATERS)}    returns {@code "MD_TopicCategoryCode"}.</li>
      *   <li>{@code getListName(ImagingCondition.BLURRED_IMAGE)} returns {@code "MD_ImagingConditionCode"}.</li>
      * </ul>
-     * </div>
      *
      * @param  code  the code for which to get the class name, or {@code null}.
      * @return the ISO (preferred) or Java (fallback) class name, or {@code null} if the given code is null.
@@ -199,14 +198,13 @@ public final class Types extends Static {
      * Returns the ISO name (if available) or the Java name (as a fallback) of the given enumeration or code list
      * value. If the value has no {@link UML} identifier, then the programmatic name is used as a fallback.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code getCodeName(ParameterDirection.IN_OUT)}      returns {@code "in/out"}.</li>
      *   <li>{@code getCodeName(AxisDirection.NORTH)}            returns {@code "north"}.</li>
      *   <li>{@code getCodeName(TopicCategory.INLAND_WATERS)}    returns {@code "inlandWaters"}.</li>
      *   <li>{@code getCodeName(ImagingCondition.BLURRED_IMAGE)} returns {@code "blurredImage"}.</li>
      * </ul>
-     * </div>
      *
      * @param  code  the code for which to get the name, or {@code null}.
      * @return the UML identifiers or programmatic name for the given code, or {@code null} if the given code is null.
@@ -234,13 +232,12 @@ public final class Types extends Static {
      * selects the longest one excluding the {@linkplain CodeList#name() field name} if possible, then
      * {@linkplain CharSequences#camelCaseToSentence(CharSequence) makes a sentence} from that name.</p>
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code getCodeLabel(AxisDirection.NORTH)} returns {@code "North"}.</li>
      *   <li>{@code getCodeLabel(TopicCategory.INLAND_WATERS)} returns {@code "Inland waters"}.</li>
      *   <li>{@code getCodeLabel(ImagingCondition.BLURRED_IMAGE)} returns {@code "Blurred image"}.</li>
      * </ul>
-     * </div>
      *
      * @param  code  the code from which to get a title, or {@code null}.
      * @return a unlocalized title for the given code, or {@code null} if the given code is null.
@@ -483,9 +480,9 @@ public final class Types extends Static {
      * Note that the size of the returned array may growth between different invocations of this method,
      * since users can add their own codes to an existing list.
      *
-     * <div class="note"><b>Note:</b>
-     * This method works with both {@link Enum} and {@link CodeList}. However if the type is known to be an
-     * {@code Enum}, then the standard {@link Class#getEnumConstants()} method is more efficient.</div>
+     * <h4>Performance note</h4>
+     * This method works with both {@link Enum} and {@link CodeList}. However if the type is known to be
+     * an {@code Enum}, then the standard {@link Class#getEnumConstants()} method is more efficient.
      *
      * @param  <T>       the compile-time type given as the {@code codeType} parameter.
      * @param  codeType  the type of code list or enumeration.
@@ -502,13 +499,13 @@ public final class Types extends Static {
      * The identifier argument shall be the value documented in the {@link UML#identifier()} annotation on
      * the Java type.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code forStandardName("CI_Citation")}      returns <code>{@linkplain org.opengis.metadata.citation.Citation}.class</code></li>
      *   <li>{@code forStandardName("CS_AxisDirection")} returns <code>{@linkplain org.opengis.referencing.cs.AxisDirection}.class</code></li>
      * </ul>
-     * </div>
      *
+     * <h4>Implementation note</h4>
      * The package prefix (e.g. {@code "CI_"} in {@code "CI_Citation"}) can be omitted.
      * The flexibility is provided for allowing transition to newer ISO standards,
      * which are dropping the package prefixes.
@@ -518,13 +515,13 @@ public final class Types extends Static {
      * <p>Only identifiers for the stable part of GeoAPI or for some Apache SIS classes are recognized.
      * This method does not handle the identifiers for interfaces in the {@code geoapi-pending} module.</p>
      *
-     * <div class="note"><b>Future evolution:</b>
-     * when a new ISO type does not yet have a corresponding GeoAPI interface,
+     * <h4>Future evolution</h4>
+     * When a new ISO type does not yet have a corresponding GeoAPI interface,
      * this method may temporarily return an Apache SIS class instead, until a future version can use the interface.
      * For example, {@code forStandardName("CI_Individual")} returns
      * <code>{@linkplain org.apache.sis.metadata.iso.citation.DefaultIndividual}.class</code> in Apache SIS versions
      * that depend on GeoAPI 3.0, but the return type may be changed to {@code Individual.class} when Apache SIS will
-     * be upgraded to GeoAPI 3.1.</div>
+     * be upgraded to GeoAPI 3.1.
      *
      * @param  identifier  the ISO {@linkplain UML} identifier, or {@code null}.
      * @return the GeoAPI interface, or {@code null} if the given identifier is {@code null} or unknown.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformedEvent.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformedEvent.java
index 959cef4b21..0d534268ad 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformedEvent.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformedEvent.java
@@ -271,12 +271,10 @@ abstract class TransformedEvent<E extends XMLEvent> implements XMLEvent {
         /**
          * Gets the URI used by JAXB annotations for the given prefix used in the XML document.
          * Returns {@code null} if no unique URI can be provided for the given prefix.
-         *
-         * <div class="note"><b>Example:</b>
-         * the {@code "gmd"} prefix from legacy ISO 19139:2007 standard can map to the
-         * {@code "http://standards.iso.org/iso/19115/-3/mdb/1.0"}, {@code "…/cit/1.0"}
+         * In particular, the {@code "gmd"} prefix from legacy ISO 19139:2007 standard can map
+         * to the {@code "http://standards.iso.org/iso/19115/-3/mdb/1.0"}, {@code "…/cit/1.0"}
          * and other namespaces in ISO 19115-3:2016. Because of this ambiguity,
-         * this method returns {@code null}.</div>
+         * this method returns {@code null} for the {@code "gmd"} prefix.
          *
          * <p>At unmarshalling time, events are created by an arbitrary {@link javax.xml.stream.XMLEventReader}
          * with namespaces used in the XML document. {@link TransformingReader} wraps those events using this
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
index 8470bc49a7..dbdf2262dc 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
@@ -41,12 +41,12 @@ class TransformingNamespaces implements NamespaceContext {
      * used in XML document. The returned context converts namespace arguments from XML to JAXB namespaces, and
      * converts returned namespaces from JAXB to XML.
      *
-     * <div class="note"><b>Example:</b>
-     * for a {@code "http://www.isotc211.org/2005/gmd"} namespace (legacy ISO 19139:2007) given in argument to
+     * <h4>Example</h4>
+     * For a {@code "http://www.isotc211.org/2005/gmd"} namespace (legacy ISO 19139:2007) given in argument to
      * {@link #getPrefixes(String)}, the context converts that namespace to all possible ISO 19115-3 namespaces
      * (there is many) and returns the associated prefixes: {@code "mdb"}, {@code "cit"}, <i>etc.</i>
      * Conversely given a {@code "mdb"}, {@code "cit"}, <i>etc.</i>, prefix, {@link #getNamespaceURI(String)}
-     * method returns the above-cited legacy GMD namespace.</div>
+     * method returns the above-cited legacy GMD namespace.
      */
     static NamespaceContext asXML(NamespaceContext context, final TransformVersion version) {
         if (context != null) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
index 682046d350..490d3ffdc3 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
@@ -86,19 +86,19 @@ final class TransformingWriter extends Transformer implements XMLEventWriter {
 
     /**
      * Elements that appear in different order in ISO 19139:2007 (or other legacy standards) compared
-     * to ISO 19115-3:2016 (or other newer standards). Key are names of elements to reorder. Values
-     * are the elements to skip before to write the element to reorder.
+     * to ISO 19115-3:2016 (or other newer standards). Key are names of elements to reorder.
+     * Values are the elements to skip before to write the element to reorder.
      *
-     * <div class="note"><b>Example:</b>
+     * <p>While this map is used for reordering elements according legacy standards, the {@link QName} keys and values
+     * use the namespaces of newer standards. This is because newer standards like ISO 19115-3 uses many namespaces
+     * where legacy ISO 19139:2007 used only one namespace, so using the newer names reduce the risk of confusion.</p>
+     *
+     * <h4>Example</h4>
      * In {@code SV_ServiceIdentification}, {@code <srv:couplingType>} appears before {@code <srv:coupledResource>}
      * according ISO 19115-3:2016. But in ISO 19139:2007, it was the reverse order. Since Apache SIS writes elements
      * in the order defined by the newer standard, {@code <couplingType>} is encountered first. The set associated
      * to that key tells us that, when writing legacy ISO 19139 document, we should skip {@code <coupledResource>}
-     * before to write {@code <srv:couplingType>}.</div>
-     *
-     * While this map is used for reordering elements according legacy standards, the {@link QName} keys and values
-     * use the namespaces of newer standards. This is because newer standards like ISO 19115-3 uses many namespaces
-     * where legacy ISO 19139:2007 used only one namespace, so using the newer names reduce the risk of confusion.
+     * before to write {@code <srv:couplingType>}.
      *
      * @see #toSkip
      * @see #deferred
@@ -581,10 +581,11 @@ final class TransformingWriter extends Transformer implements XMLEventWriter {
          * {@link TransformingWriter} wraps those events for converting those namespaces to the ones used
          * in the XML document.
          *
-         * <div class="note"><b>Example:</b> the {@code "cit"} prefix from ISO 19115-3:2016 standard
+         * <h4>Example</h4>
+         * The {@code "cit"} prefix from ISO 19115-3:2016 standard
          * represents the {@code "http://standards.iso.org/iso/19115/-3/mdb/1.0"} namespace, which is
          * mapped to {@code "http://www.isotc211.org/2005/gmd"} in the legacy ISO 19139:2007 standard.
-         * That later URI is returned.</div>
+         * That later URI is returned.
          */
         @Override
         public String getNamespaceURI(final String prefix) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
index 62710a5679..bb228441f9 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
@@ -148,15 +148,16 @@ public final class XML extends Static {
      *       (for example {@code <gco:Distance>}).</li>
      * </ul>
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * URLs in code lists and is units of measurement may appear as below.
      * The underlined fragment is the part that can be replaced by {@code SCHEMAS} values:
      * <ul>
      *   <li><code><u>http://standards.iso.org/iso/19115/</u>resources/Codelist/cat/codelists.xml#LanguageCode</code></li>
      *   <li><code><u>http://www.isotc211.org/2005/</u>resources/Codelist/gmxCodelists.xml#LanguageCode</code></li>
      *   <li><code><u>http://www.isotc211.org/2005/</u>resources/uom/gmxUom.xml#xpointer(//*[@gml:id='m'])</code></li>
-     * </ul></div>
+     * </ul>
      *
+     * <h4>Implementation note</h4>
      * The currently recognized keys are listed below.
      * The entries to be used depend on the {@linkplain #METADATA_VERSION metadata version} to be marshalled.
      * For example, the {@code "cat"} entry is used when marshalling ISO 19115-3:2016 document, while the
@@ -190,10 +191,6 @@ public final class XML extends Static {
      * The GML version may affect the set of XML elements to be marshalled and their namespaces.
      * Note that GML 3.2 is identical to ISO 19136:2007.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * Newer versions typically have more elements, but not always. For example, in {@code <gml:VerticalDatum>},
-     * the {@code <gml:verticalDatumType>} property presents in GML 3.0 and 3.1 has been removed in GML 3.2.</div>
-     *
      * The value can be {@link String} or {@link Version} object.
      * If no version is specified, then the most recent supported GML version is assumed.
      *
@@ -203,6 +200,10 @@ public final class XML extends Static {
      * but the marshalled XML is not GML 3.1.1 conformant because of the differences between the two schemas.
      * See <a href="http://issues.apache.org/jira/browse/SIS-160">SIS-160: Need XSLT between GML 3.1 and 3.2</a>
      * for information about the status of GML 3.1.1 support.
+     *
+     * <h4>Compatibility note</h4>
+     * Newer GML versions typically have more elements, but not always. For example, in {@code <gml:VerticalDatum>},
+     * the {@code <gml:verticalDatumType>} property presents in GML 3.0 and 3.1 has been removed in GML 3.2.
      */
     public static final String GML_VERSION = "org.apache.sis.gml.version";
 
@@ -335,7 +336,7 @@ public final class XML extends Static {
      *   <li>"{@code mimetype}" for substituting {@code <gcx:MimeFileType>} elements</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * INSPIRE compliant language code shall be formatted like below (details may vary):
      *
      * {@snippet lang="xml" :
@@ -354,7 +355,6 @@ public final class XML extends Static {
      *     <gco:CharacterString>fra</gco:CharacterString>
      *   </lan:language>
      * }
-     * </div>
      */
     public static final String STRING_SUBSTITUTES = "org.apache.sis.xml.stringSubstitutes";
 
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
index 10c5cb88e4..f4dc5fc9f5 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyAccessorTest.java
@@ -192,9 +192,9 @@ public final class PropertyAccessorTest extends TestCase {
      * The purpose of this test is to ensure that the properties defined in the parent
      * class are sorted first.
      *
-     * <div class="note"><b>Note:</b> if there is any element not declared as JAXB elements,
-     * those ones will be last in alphabetical order. Such situation is usually temporary
-     * until the JAXB annotations are completed.</div>
+     * Note that if there is any element not declared as JAXB elements,
+     * those ones will be last in alphabetical order.
+     * Such situation is usually temporary until the JAXB annotations are completed.
      */
     @Test
     @DependsOnMethod("testConstructor")
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
index a3e568caa3..6cc0d63d74 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
@@ -253,10 +253,9 @@ public class DocumentComparator {
      * If the given attribute name begins with one of the well known prefixes,
      * substitutes the prefix by the full URL. Otherwise returns the name unchanged.
      *
-     * <div class="note"><b>Example:</b>
-     * if the given attribute is {@code xmlns:gml}, then this method returns
+     * <h4>Example</h4>
+     * If the given attribute is {@code xmlns:gml}, then this method returns
      * {@code "http://www.w3.org/2000/xmlns:gml"}.
-     * </div>
      *
      * @param  attribute  the attribute.
      * @return the given attribute, possibly with prefix replaced by URL.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
index 6b452c19e5..d0d774a323 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
@@ -126,9 +126,8 @@ public abstract class TestCase extends org.apache.sis.test.TestCase {
      * The (un)marshallers locale is set to {@link Locale#UK} (the language of ISO standards)
      * and their timezone is arbitrarily set to CET (<cite>Central European Time</cite>).
      *
-     * <div class="note"><b>Note:</b>
      * We intentionally use a timezone different than UTC in order to have an error of one or two hours
-     * if a code fails to take timezone offset in account.</div>
+     * if a code fails to take timezone offset in account.
      *
      * @return the shared (un)marshaller pool.
      * @throws JAXBException if an error occurred while creating the JAXB marshaller.
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/AbstractLocation.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/AbstractLocation.java
index b3c2f97f90..098d9d637a 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/AbstractLocation.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/AbstractLocation.java
@@ -110,16 +110,15 @@ public abstract class AbstractLocation implements Location {
      * Returns a unique identifier for the location instance. The methods of identifying locations is specified
      * by the {@linkplain ModifiableLocationType#getIdentifications() location type identifications}.
      *
-     * <div class="note"><b>Examples:</b>
-     * if {@link LocationType#getIdentifications()} contain “name”, then geographic identifiers may be country
-     * names like “Japan” or “France”, or places like “Eiffel Tower”. If location type identifications contain
-     * “code”, then geographic identifiers may be “SW1P 3AD” postcode.
-     * </div>
-     *
      * In order to ensure that a geographic identifier is unique within a wider geographic domain,
      * the geographic identifier may need to include an identifier of an instance of a parent location type,
      * for example “Paris, Texas”.
      *
+     * <h4>Examples</h4>
+     * If {@link LocationType#getIdentifications()} contain “name”, then geographic identifiers may be country
+     * names like “Japan” or “France”, or places like “Eiffel Tower”. If location type identifications contain
+     * “code”, then geographic identifiers may be “SW1P 3AD” postcode.
+     *
      * @return unique identifier for the location instance.
      *
      * @see ModifiableLocationType#getIdentifications()
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
index 7c0804a838..e3d67f2b0f 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
@@ -217,8 +217,8 @@ final class FinalLocationType extends AbstractLocationType implements Serializab
     /**
      * Returns the name of the location type.
      *
-     * <div class="note"><b>Examples:</b>
-     * “administrative area”, “town”, “locality”, “street”, “property”.</div>
+     * <h4>Examples</h4>
+     * “administrative area”, “town”, “locality”, “street”, “property”.
      *
      * @return name of the location type.
      */
@@ -230,12 +230,12 @@ final class FinalLocationType extends AbstractLocationType implements Serializab
     /**
      * Returns the property used as the defining characteristic of the location type.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <cite>“local administration”</cite> for administrative areas,
      * <cite>“built environment”</cite> for towns or properties,
      * <cite>“access”</cite> for streets,
      * <cite>“electoral”</cite>,
-     * <cite>“postal”</cite>.</div>
+     * <cite>“postal”</cite>.
      *
      * @return property used as the defining characteristic of the location type.
      *
@@ -249,8 +249,8 @@ final class FinalLocationType extends AbstractLocationType implements Serializab
     /**
      * Returns the method(s) of uniquely identifying location instances.
      *
-     * <div class="note"><b>Examples:</b>
-     * “name”, “code”, “unique street reference number”, “geographic address”.</div>
+     * <h4>Examples</h4>
+     * “name”, “code”, “unique street reference number”, “geographic address”.
      *
      * @return method(s) of uniquely identifying location instances.
      */
@@ -273,8 +273,8 @@ final class FinalLocationType extends AbstractLocationType implements Serializab
     /**
      * Returns the geographic area within which the location type occurs.
      *
-     * <div class="note"><b>Examples:</b>
-     * the geographic domain for a location type “rivers” might be “North America”.</div>
+     * <h4>Examples</h4>
+     * the geographic domain for a location type “rivers” might be “North America”.
      *
      * @return geographic area within which the location type occurs.
      */
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
index b1a4bcfcc1..a2e9159762 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
@@ -723,12 +723,12 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
          * If the CRS is geographic, the envelope is allowed to span the anti-meridian.
          * The MGRS references may be returned in any iteration order.
          *
-         * <div class="note"><b>Possible evolution:</b>
-         * current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
+         * <h4>Possible future evolution</h4>
+         * Current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
          * with {@code areaOfInterest}. Consequently, the iterator may return slightly more cells than expected.
          * A future version may filter the cells more accurately. If an application needs the same set of cells
          * than what current the implementation returns, it can invoke <code>{@linkplain #setClipToValidArea
-         * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.</div>
+         * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.
          *
          * @param  areaOfInterest  envelope of desired MGRS references.
          * @return an iterator over MGRS references intersecting the given area of interest.
@@ -749,12 +749,12 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
          * If the CRS is geographic, the envelope is allowed to span the anti-meridian.
          * The MGRS references may be returned in any order.
          *
-         * <div class="note"><b>Possible evolution:</b>
-         * current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
+         * <h4>Possible future evolution</h4>
+         * Current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
          * with {@code areaOfInterest}. Consequently, the iterator may return slightly more cells than expected.
          * A future version may filter the cells more accurately. If an application needs the same set of cells
          * than what current the implementation returns, it can invoke <code>{@linkplain #setClipToValidArea
-         * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.</div>
+         * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.
          *
          * @param  areaOfInterest  envelope of desired MGRS references.
          * @param  parallel        {@code true} for a parallel stream, or {@code false} for a sequential stream.
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
index ff3c293233..9d10538e28 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
@@ -87,8 +87,8 @@ import org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers;
  * But in the hope to improve ISO compliance, values of undefined properties are inherited
  * from the parents (if any) provided that all parents define the same values.
  *
- * <div class="note"><b>Example:</b>
- * if an <var>administrative area</var> is in some {@linkplain #getTerritoryOfUse() territory of use},
+ * <h2>Example</h2>
+ * If an <var>administrative area</var> is in some {@linkplain #getTerritoryOfUse() territory of use},
  * then all children of the administrative area (namely <var>towns</var> and <var>streets</var>) can
  * reasonably presumed to be in the same territory of use. That territory can be specified only once
  * as below:
@@ -98,7 +98,7 @@ import org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers;
  *     }
  *
  * Then, the towns and streets automatically inherit the same value for that property,
- * unless they are explicitly given another value.</div>
+ * unless they are explicitly given another value.
  *
  * <h2>Limitation</h2>
  * This class is not serializable and is not thread-safe. For thread safety or for serialization,
@@ -170,8 +170,8 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
      * Returns the name of the location type.
      * This name is specified at construction time and cannot be changed.
      *
-     * <div class="note"><b>Examples:</b>
-     * “administrative area”, “town”, “locality”, “street”, “property”.</div>
+     * <h4>Examples</h4>
+     * “administrative area”, “town”, “locality”, “street”, “property”.
      *
      * @return name of the location type.
      */
@@ -217,12 +217,12 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
     /**
      * Sets the property used as the defining characteristic of the location type.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <cite>“local administration”</cite> for administrative areas,
      * <cite>“built environment”</cite> for towns or properties,
      * <cite>“access”</cite> for streets,
      * <cite>“electoral”</cite>,
-     * <cite>“postal”</cite>.</div>
+     * <cite>“postal”</cite>.
      *
      * @param  value  the new theme, or {@code null} for inheriting a value from the parents.
      */
@@ -235,14 +235,13 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
      * If no methods have been explicitly set, then this method inherits the values from
      * the parents providing that all parents specify the same methods.
      *
-     * <div class="note"><b>Examples:</b>
-     * some identification methods are “name”, “code”, “unique street reference number” and “geographic address”.
+     * <p>The collection returned by this method is unmodifiable. For adding or removing an identification,
+     * use {@link #addIdentification(CharSequence)} or {@link #removeIdentification(CharSequence)}.</p>
+     *
+     * <h4>Examples</h4>
+     * Some identification methods are “name”, “code”, “unique street reference number” and “geographic address”.
      * A location using “name” identifications may have the “Spain” {@linkplain AbstractLocation#getGeographicIdentifier()
      * geographic identifier}, and a location using “postcode” identifications may have the “SW1P 3AD” geographic identifier.
-     * </div>
-     *
-     * The collection returned by this method is unmodifiable. For adding or removing an identification,
-     * use {@link #addIdentification(CharSequence)} or {@link #removeIdentification(CharSequence)}.
      *
      * @return method(s) of uniquely identifying location instances,
      *         or an empty list if no value has been defined or can be inherited.
@@ -258,8 +257,8 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
     /**
      * Adds a method of uniquely identifying location instances.
      *
-     * <div class="note"><b>Examples:</b>
-     * “name”, “code”, “unique street reference number”, “geographic address”.</div>
+     * <h4>Examples</h4>
+     * “name”, “code”, “unique street reference number”, “geographic address”.
      *
      * @param  value  the method to add.
      * @throws IllegalArgumentException if the given value is already defined.
@@ -337,8 +336,8 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
     /**
      * Sets the name of the geographic area within which the location type occurs.
      *
-     * <div class="note"><b>Examples:</b>
-     * the geographic domain for a location type “rivers” might be “North America”.</div>
+     * <h4>Examples</h4>
+     * The geographic domain for a location type “rivers” might be “North America”.
      *
      * @param  identifier  the identifier of the geographic extent.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
index d1b0902fad..cb9726a691 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
@@ -286,13 +286,13 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * supports also {@linkplain DirectPosition#setOrdinate(int, double) write operations},
      * so changes in the position are reflected back in the envelope.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Note on wraparound</h4>
      * The <cite>Web Coverage Service</cite> (WCS) 1.1 specification uses an extended interpretation of the
      * bounding box definition. In a WCS 1.1 data structure, the lower corner defines the edges region in the
      * directions of <em>decreasing</em> coordinate values in the envelope CRS. This is usually the algebraic
      * minimum coordinates, but not always. For example, an envelope crossing the anti-meridian could have a
      * lower corner longitude greater than the upper corner longitude. Such extended interpretation applies
-     * mostly to axes having {@code WRAPAROUND} range meaning.</div>
+     * mostly to axes having {@code WRAPAROUND} range meaning.
      *
      * @return a view over the lower corner, typically (but not necessarily) containing minimal coordinate values.
      *
@@ -314,13 +314,13 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * supports also {@linkplain DirectPosition#setOrdinate(int, double) write operations},
      * so changes in the position are reflected back in the envelope.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Note on wraparound</h4>
      * The <cite>Web Coverage Service</cite> (WCS) 1.1 specification uses an extended interpretation of the
      * bounding box definition. In a WCS 1.1 data structure, the upper corner defines the edges region in the
      * directions of <em>increasing</em> coordinate values in the envelope CRS. This is usually the algebraic
      * maximum coordinates, but not always. For example, an envelope crossing the anti-meridian could have an
      * upper corner longitude less than the lower corner longitude. Such extended interpretation applies
-     * mostly to axes having {@code WRAPAROUND} range meaning.</div>
+     * mostly to axes having {@code WRAPAROUND} range meaning.
      *
      * @return a view over the upper corner, typically (but not necessarily) containing maximal coordinate values.
      *
@@ -1181,22 +1181,20 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * lower corner}{@code ,}{@linkplain #getUpperCorner() upper corner}{@code )}"
      * where <var>n</var> is the {@linkplain #getDimension() number of dimensions}.
      * The number of dimension is written only if different than 2.
-     *
-     * <div class="note"><b>Example:</b>
-     *   <ul>
-     *     <li>{@code BOX(-90 -180, 90 180)}</li>
-     *     <li>{@code BOX3D(-90 -180 0, 90 180 1)}</li>
-     *   </ul>
-     * </div>
-     *
-     * <div class="note"><b>Note:</b>
-     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
+     * Examples:
+     * <ul>
+     *   <li>{@code BOX(-90 -180, 90 180)}</li>
+     *   <li>{@code BOX3D(-90 -180 0, 90 180 1)}</li>
+     * </ul>
      *
      * This method formats the numbers as with {@link Double#toString(double)} (i.e. without fixed number of fraction digits).
      * The string returned by this method can be {@linkplain GeneralEnvelope#GeneralEnvelope(CharSequence) parsed}
      * by the {@code GeneralEnvelope} constructor.
      *
+     * <h4>Note on standards</h4>
+     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.
+     *
      * @return this envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
      */
     @Override
@@ -1252,13 +1250,13 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * where <var>n</var> is the {@linkplain #getDimension() number of dimensions}.
      * The number of dimension is written only if different than 2.
      *
-     * <div class="note"><b>Note:</b>
-     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
-     *
-     * If the coordinate reference system is geodetic or projected, then coordinate values are formatted
+     * <p>If the coordinate reference system is geodetic or projected, then coordinate values are formatted
      * with a precision equivalent to one centimetre on Earth (the actual number of fraction digits is
-     * adjusted for the axis unit of measurement and the planet size if different than Earth).
+     * adjusted for the axis unit of measurement and the planet size if different than Earth).</p>
+     *
+     * <h4>Note on standards</h4>
+     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.
      *
      * @param  formatter  the formatter where to format the inner content of this envelope.
      * @return the pseudo-WKT keyword, which is {@code "Box"} for this element.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
index 35ac3589f5..d81fdd26af 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
@@ -324,13 +324,13 @@ public class Envelope2D extends Rectangle2D.Double implements Envelope, Emptiabl
      * <p>The object returned by this method is a copy. Change in the returned position
      * will not affect this envelope, and conversely.</p>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Note on wraparound</h4>
      * The <cite>Web Coverage Service</cite> (WCS) 1.1 specification uses an extended interpretation of the
      * bounding box definition. In a WCS 1.1 data structure, the lower corner defines the edges region in the
      * directions of <em>decreasing</em> coordinate values in the envelope CRS. This is usually the algebraic
      * minimum coordinates, but not always. For example, an envelope crossing the anti-meridian could have a
      * lower corner longitude greater than the upper corner longitude. Such extended interpretation applies
-     * mostly to axes having {@code WRAPAROUND} range meaning.</div>
+     * mostly to axes having {@code WRAPAROUND} range meaning.
      *
      * @return a copy of the lower corner, typically (but not necessarily) containing minimal coordinate values.
      *
@@ -351,13 +351,13 @@ public class Envelope2D extends Rectangle2D.Double implements Envelope, Emptiabl
      * <p>The object returned by this method is a copy. Change in the returned position
      * will not affect this envelope, and conversely.</p>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Note on wraparound</h4>
      * The <cite>Web Coverage Service</cite> (WCS) 1.1 specification uses an extended interpretation of the
      * bounding box definition. In a WCS 1.1 data structure, the upper corner defines the edges region in the
      * directions of <em>increasing</em> coordinate values in the envelope CRS. This is usually the algebraic
      * maximum coordinates, but not always. For example, an envelope crossing the anti-meridian could have an
      * upper corner longitude less than the lower corner longitude. Such extended interpretation applies
-     * mostly to axes having {@code WRAPAROUND} range meaning.</div>
+     * mostly to axes having {@code WRAPAROUND} range meaning.
      *
      * @return a copy of the upper corner, typically (but not necessarily) containing maximal coordinate values.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
index bf2c3f9737..07d8bf6edf 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
@@ -594,12 +594,12 @@ nextPoint:  for (int pointIndex = 0;;) {                // Break condition at th
      * <p>This method can handle the case where the envelope contains the North or South pole,
      * or when it cross the ±180° longitude.</p>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Usage note</h4>
      * If the envelope CRS is non-null, then the caller should ensure that the operation source CRS
      * is the same than the envelope CRS. In case of mismatch, this method transforms the envelope
      * to the operation source CRS before to apply the operation. This extra step may cause a lost
      * of accuracy. In order to prevent this method from performing such pre-transformation (if not desired),
-     * callers can ensure that the envelope CRS is {@code null} before to call this method.</div>
+     * callers can ensure that the envelope CRS is {@code null} before to call this method.
      *
      * @param  operation  the operation to use.
      * @param  envelope   envelope to transform, or {@code null}. This envelope will not be modified.
@@ -1015,17 +1015,15 @@ poles:  for (int i=0; i<dimension; i++) {
      * This method does not check the consistency of the provided WKT. For example, it does not check
      * that every points in a {@code LINESTRING} have the same dimension. However, this method
      * ensures that the parenthesis are balanced, in order to catch some malformed WKT.
+     * See {@link GeneralEnvelope#GeneralEnvelope(CharSequence)} for more information about the parsing rules.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code BOX(-180 -90, 180 90)} (not really a geometry, but understood by many software products)</li>
      *   <li>{@code POINT(6 10)}</li>
      *   <li>{@code MULTIPOLYGON(((1 1, 5 1, 1 5, 1 1),(2 2, 3 2, 3 3, 2 2)))}</li>
      *   <li>{@code GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(3 8,7 10))}</li>
      * </ul>
-     * </div>
-     *
-     * See {@link GeneralEnvelope#GeneralEnvelope(CharSequence)} for more information about the parsing rules.
      *
      * @param  wkt  the {@code BOX}, {@code POLYGON} or other kind of element to parse.
      * @return the envelope of the given geometry.
@@ -1053,13 +1051,13 @@ poles:  for (int i=0; i<dimension; i++) {
      * <blockquote>{@code BOX}<var>n</var>{@code D(}{@linkplain Envelope#getLowerCorner() lower
      * corner}{@code ,} {@linkplain Envelope#getUpperCorner() upper corner}{@code )}</blockquote>
      *
-     * <div class="note"><b>Note:</b>
-     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
-     *
      * The string returned by this method can be {@linkplain GeneralEnvelope#GeneralEnvelope(CharSequence)
      * parsed} by the {@code GeneralEnvelope} constructor.
      *
+     * <h4>Note on standards</h4>
+     * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.
+     *
      * @param  envelope  the envelope to format.
      * @return this envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
index ec72334dee..b6e6cf2b9e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
@@ -55,10 +55,9 @@ import static org.apache.sis.math.MathFunctions.isNegativeZero;
  * as two {@linkplain AbstractDirectPosition direct positions} (coordinate tuples).
  * To encode an {@code Envelope}, it is sufficient to encode these two points.
  *
- * <div class="note"><b>Note:</b>
- * {@code Envelope} uses an arbitrary <cite>Coordinate Reference System</cite>, which does not need to be geographic.
+ * <p>{@code Envelope} uses an arbitrary <cite>Coordinate Reference System</cite>, which does not need to be geographic.
  * This is different than the {@code GeographicBoundingBox} class provided in the metadata package, which can be used
- * as a kind of envelope restricted to a Geographic CRS having Greenwich prime meridian.</div>
+ * as a kind of envelope restricted to a Geographic CRS having Greenwich prime meridian.</p>
  *
  * This particular implementation of {@code Envelope} is said "General" because it uses
  * coordinates of an arbitrary number of dimensions. This is in contrast with
@@ -247,7 +246,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
      * check that every points in a {@code LINESTRING} have the same dimension. However, this
      * constructor ensures that the parenthesis are balanced, in order to catch some malformed WKT.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The following texts can be parsed by this constructor in addition of the usual {@code BOX} element.
      * This constructor creates the bounding box of those geometries:
      *
@@ -255,7 +254,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
      *   <li>{@code POINT(6 10)}</li>
      *   <li>{@code MULTIPOLYGON(((1 1, 5 1, 1 5, 1 1),(2 2, 3 2, 3 3, 2 2)))}</li>
      *   <li>{@code GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(3 8,7 10))}</li>
-     * </ul></div>
+     * </ul>
      *
      * @param  wkt  the {@code BOX}, {@code POLYGON} or other kind of element to parse.
      * @throws IllegalArgumentException if the given string cannot be parsed.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
index 9b84c620fe..85aa8a6313 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
@@ -142,10 +142,10 @@ public class WraparoundAdjustment {
      * With this constructor, {@code WraparoundAdjustment} does <strong>not</strong> verify if a coordinate operation
      * is needed for a pair of CRS; it is caller's responsibility to ensure that input objects use the expected CRS.
      *
-     * <div class="note"><b>Example:</b>
-     * in the context of {@link org.apache.sis.coverage.grid.GridGeometry}, the {@code domain} argument may be the
+     * <h4>Example</h4>
+     * In the context of {@link org.apache.sis.coverage.grid.GridGeometry}, the {@code domain} argument may be the
      * geospatial envelope of the grid and the {@code inputToResult} argument may be the "CRS to grid" transform.
-     * This configuration allows to compute grid coordinates having more chances to be inside the grid.</div>
+     * This configuration allows to compute grid coordinates having more chances to be inside the grid.
      *
      * @param  domain          the region where a given area (AOI) or point of interest (POI) should be located.
      * @param  domainToInput   if the AOI or POI will use a different CRS than {@code domain}, the transform from
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
index 7909d7bc68..3af6b707fc 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
@@ -195,8 +195,8 @@ public final class CC_GeneralOperationParameter extends PropertyType<CC_GeneralO
      * Returns {@code true} if the given descriptor is restricted to a constant value.
      * This constraint exists in some predefined map projections.
      *
-     * <div class="note"><b>Example:</b>
-     * the <cite>"Latitude of natural origin"</cite> parameter of <cite>"Mercator (1SP)"</cite> projection
+     * <h4>Example</h4>
+     * The <cite>"Latitude of natural origin"</cite> parameter of <cite>"Mercator (1SP)"</cite> projection
      * is provided for completeness, but should never be different than zero in this particular projection
      * (otherwise it would be a <cite>"Mercator (variant C)"</cite> projection).  But if this parameter is
      * nevertheless provided, the SIS implementation will use it. From this point of view, SIS is tolerant
@@ -204,7 +204,6 @@ public final class CC_GeneralOperationParameter extends PropertyType<CC_GeneralO
      *
      * <p>If the GML document declares explicitly a restricted parameter, maybe it intends to use it with
      * a non-zero value. Consequently, the {@code merge(…)} method will not propagate this restriction.</p>
-     * </div>
      */
     private static boolean isRestricted(final ParameterDescriptor<?> descriptor) {
         final Comparable<?> min = descriptor.getMinimumValue();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
index 0a2036ae05..db29267992 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
@@ -160,10 +160,10 @@ public final class CC_OperationMethod extends PropertyType<CC_OperationMethod, O
      * {@link org.opengis.parameter.ParameterDescriptor#getValueClass()} property, which are not available
      * in the GML document.</p>
      *
-     * <div class="note"><b>Note:</b>
-     * this code is defined in this {@code CC_OperationMethod} class instead of in the
+     * <h4>Implementation note</h4>
+     * This code is defined in this {@code CC_OperationMethod} class instead of in the
      * {@link DefaultOperationMethod} class in the hope to reduce the amount of code processed
-     * by the JVM in the common case where JAXB (un)marshalling is not needed.</div>
+     * by the JVM in the common case where JAXB (un)marshalling is not needed.
      *
      * @param  name         the operation method name, to be also given to the descriptor group.
      * @param  descriptors  the parameter descriptors to wrap in a group. This array will be modified in-place.
@@ -198,10 +198,10 @@ public final class CC_OperationMethod extends PropertyType<CC_OperationMethod, O
      * This method copies only the <em>references</em> if possible. However, in some
      * cases the values may need to be copied in new parameter instances.
      *
-     * <div class="note"><b>Note:</b>
-     * this code is defined in this {@code CC_OperationMethod} class instead of in the
+     * <h4>Implementation note</h4>
+     * This code is defined in this {@code CC_OperationMethod} class instead of in the
      * {@link DefaultOperationMethod} class in the hope to reduce the amount of code processed
-     * by the JVM in the common case where JAXB (un)marshalling is not needed.</div>
+     * by the JVM in the common case where JAXB (un)marshalling is not needed.
      *
      * @param  parameters    the parameters to add to the {@code addTo} collection.
      * @param  addTo         where to store the {@code parameters}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
index 5ac9b74b08..735c00b829 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
@@ -121,10 +121,10 @@ public final class CC_OperationParameterGroup extends PropertyType<CC_OperationP
      *   <li>{@code descriptors}, which contain the descriptor listed in {@code <gml:OperationParameterGroup>} or {@code <gml:OperationMethod>}.</li>
      * </ol>
      *
-     * <div class="note"><b>Note:</b>
-     * this code is defined in this {@code CC_OperationParameterGroup} class instead of in the
+     * <h4>Implementation note</h4>
+     * This code is defined in this {@code CC_OperationParameterGroup} class instead of in the
      * {@link DefaultParameterDescriptorGroup} class in the hope to reduce the amount of code
-     * processed by the JVM in the common case where JAXB (un)marshalling is not needed.</div>
+     * processed by the JVM in the common case where JAXB (un)marshalling is not needed.
      *
      * @param  descriptors   the descriptors declared in the {@code ParameterDescriptorGroup}.
      * @param  fromValues    the descriptors declared in the {@code ParameterValue} instances.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_CRS.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_CRS.java
index 51ecf0ef82..d186cb93d2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_CRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_CRS.java
@@ -85,12 +85,12 @@ public final class SC_CRS extends PropertyType<SC_CRS, CoordinateReferenceSystem
     /**
      * Invoked by JAXB at unmarshalling time for storing the result temporarily.
      *
-     * <div class="note"><b>Note:</b>
-     * the unmarshalled CRS may be of {@code GeodeticCRS} type, which is not the most specific GeoAPI type.
+     * <h4>Design note</h4>
+     * The unmarshalled CRS may be of {@code GeodeticCRS} type, which is not the most specific GeoAPI type.
      * But the {@code GeographicCRS} and {@code GeocentricCRS} sub-types are currently not part of ISO 19111.
      * We could substitute the CRS by a more specific type here, but this would break the references specified
      * by {@code xlink:href} attributes. For now we live with the {@code GeodeticCRS} as-is — most of Apache SIS
-     * should be able to work with that.</div>
+     * should be able to work with that.
      *
      * @param  crs  the unmarshalled element.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_SingleCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_SingleCRS.java
index 8bbd73248b..508cea3f2e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_SingleCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_SingleCRS.java
@@ -85,9 +85,9 @@ public final class SC_SingleCRS extends PropertyType<SC_SingleCRS, SingleCRS> {
     /**
      * Invoked by JAXB at unmarshalling time for storing the result temporarily.
      *
-     * <div class="note"><b>Note:</b>
-     * the unmarshalled CRS may be of {@code GeodeticCRS} type, which is not the most specific GeoAPI type.
-     * See {@link SC_CRS#setElement(AbstractCRS)} for more discussion.</div>
+     * <h4>Design note</h4>
+     * The unmarshalled CRS may be of {@code GeodeticCRS} type, which is not the most specific GeoAPI type.
+     * See {@link SC_CRS#setElement(AbstractCRS)} for more discussion.
      *
      * @param  crs  the unmarshalled element.
      * @throws IllegalArgumentException if the unmarshalled CRS is not a single CRS.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java
index 5e6b41b6ed..ca28fabc8f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java
@@ -99,11 +99,11 @@ public class MergedProperties extends AbstractMap<String,Object> {
      * Returns the value for an "invisible" entry if no user supplied values were found for that key.
      * This is used only for "secret" keys used for SIS internal purpose (not for public API).
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@link org.apache.sis.referencing.factory.GeodeticObjectFactory} handles the {@code "mtFactory"} key in a special
      * way since this is normally not needed for CRS, CS and datum objects, except when creating the SIS implementation
      * of derived or projected CRS (because of the way we implemented derived CRS). But this is somewhat specific to
-     * SIS, so we do no want to expose this implementation details.</div>
+     * SIS, so we do no want to expose this implementation details.
      *
      * @param  key  the key for which to get the value.
      * @return the value associated to the given key, or {@code null} if none.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/NilReferencingObject.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/NilReferencingObject.java
index 38fc4b704b..5904c73d40 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/NilReferencingObject.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/NilReferencingObject.java
@@ -41,10 +41,10 @@ public final class NilReferencingObject implements NilObject, ReferenceSystem {
      * We use this value because {@link ReferenceSystem#getName()}
      * is a mandatory property and not all code is tolerant to null name.
      *
-     * <div class="note"><b>Note:</b>
-     * in theory we do not need a default name because it will be replaced by
+     * <h4>Usage note</h4>
+     * In theory we do not need a default name because it will be replaced by
      * the value of the {@code <gml:name>} element anyway at XML unmarshalling time.
-     * But not all XML documents are valid, so the {@code <gml:name>} may be missing.</div>
+     * But not all XML documents are valid, so the {@code <gml:name>} may be missing.
      *
      * @since 0.6
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
index 39864790e7..1ca9de661c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
@@ -41,11 +41,11 @@ import org.apache.sis.util.collection.DefaultTreeTable;
  * <p>A {@code RTreeNode} instance is used as the root of the tree. Children nodes are stored as a linked list
  * (the list is implemented by the {@link #sibling} field, which reference the next element in the list).</p>
  *
- * <div class="note"><b>Possible evolution:</b>
- * a future version could avoid extending {@link GeneralEnvelope}. Instead, we could provide abstract
+ * <h2>Possible evolution</h2>
+ * A future version could avoid extending {@link GeneralEnvelope}. Instead, we could provide abstract
  * {@code contains(…)} methods and let subclasses define them, with possibly more efficient implementations.
  * We would still need an implementation that delegate to {@link GeneralEnvelope} since that class has the
- * advantage of handling envelopes crossing the anti-meridian.</div>
+ * advantage of handling envelopes crossing the anti-meridian.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
@@ -78,11 +78,11 @@ public class RTreeNode extends GeneralEnvelope {
      * The next node having the same parent than this node. This is used for creating a linked list of nodes
      * that are the children of the {@linkplain #parent}.
      *
-     * <div class="note"><b>Design note:</b>
-     * an {@code RTreeNode children} array instead of {@link #firstChild} + {@link #sibling} would be more intuitive.
+     * <h4>Design note</h4>
+     * An {@code RTreeNode children} array instead of {@link #firstChild} + {@link #sibling} would be more intuitive.
      * But the use of linked list avoid one level of indirection and is one less object to create for each node.
      * The gain may be negligible with a few hundreds nodes, but a future version of this class may target much
-     * more numerous nodes.</div>
+     * more numerous nodes.
      */
     private RTreeNode sibling;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ReferencingUtilities.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ReferencingUtilities.java
index e3d2c88b76..a418d2581f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ReferencingUtilities.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ReferencingUtilities.java
@@ -423,12 +423,13 @@ public final class ReferencingUtilities extends Static {
      *       name in names like <cite>"NTF (Paris)"</cite>.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b><ul>
+     * <p>Examples:</p>
+     * <ul>
      *   <li><cite>"NTF (Paris)"</cite> is left unchanged.</li>
      *   <li><cite>"WGS 84 (3D)"</cite> is truncated as <cite>"WGS 84"</cite>.</li>
      *   <li><cite>"Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree"</cite>
      *       is truncated as <cite>"Ellipsoidal 2D CS"</cite>.</li>
-     * </ul></div>
+     * </ul>
      *
      * @param  object    the identified object to view as a properties map.
      * @return a view of the identified object properties.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
index 6799a2c5ed..a053f3f733 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
@@ -754,10 +754,10 @@ public final class Resources extends IndexedResourceBundle {
      * validity. If the key is invalid, then a {@link MissingResourceException} may be thrown
      * when a {@link InternationalString#toString(Locale)} method is invoked.
      *
-     * <div class="note"><b>API note:</b>
+     * <h4>API note</h4>
      * This method is redundant with the one expecting {@code Object...}, but avoid the creation
      * of a temporary array. There is no risk of confusion since the two methods delegate their
-     * work to the same {@code format} method anyway.</div>
+     * work to the same {@code format} method anyway.
      *
      * @param  key  the key for the desired string.
      * @param  arg  values to substitute to "{0}".
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
index 07a336cf40..1f12a35ef0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
@@ -53,11 +53,11 @@ import org.apache.sis.internal.util.Strings;
  * the straightforward way expected by {@link Envelope2D#intersects(Rectangle2D)} and similar methods for computing
  * correct result if the given {@code Rectangle2D} crosses the anti-meridian.
  *
- * <div class="note"><b>Internal usage of inheritance:</b>
- * this class may also be opportunistically extended by some Apache SIS internal classes that need a rectangle in
+ * <h2>Internal usage of inheritance</h2>
+ * This class may also be opportunistically extended by some Apache SIS internal classes that need a rectangle in
  * addition of their own information. All {@code Rectangle2D} methods are declared final for reducing the risk of
  * confusion with other aspects managed by subclasses. We don't do that in public API because this is not a
- * recommended approach, but for Apache SIS private classes this is a way to reduce pressure on garbage collector.</div>
+ * recommended approach, but for Apache SIS private classes this is a way to reduce pressure on garbage collector.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
index 2cd2ecd387..381f7b155e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
@@ -63,7 +63,7 @@ import org.apache.sis.io.TableAppender;
  *   If the upper-left corner has been given as a rectangle instead, then this performance cost is avoided
  *   but the user is responsible for the accuracy of the information provided.
  *
- *     <div class="note"><b>NOTE:</b>
+ *     <div class="note"><b>Note:</b>
  *     the upper-left corner is the {@linkplain #getLocation() location} of this tile in the
  *     {@linkplain javax.imageio.ImageReadParam#setDestination destination image} when no
  *     {@linkplain javax.imageio.ImageReadParam#setDestinationOffset destination offset} are specified.
@@ -78,12 +78,12 @@ import org.apache.sis.io.TableAppender;
  *   half the width and third of the height for the same geographic extent, <i>etc.</i>
  *   (note that overviews are not required to have the same geographic extent - the above is just an example).
  *
- *     <div class="note"><b>NOTE 1:</b>
+ *     <div class="note"><b>Note 1:</b>
  *     the semantic assumes that overviews are produced by subsampling, not by interpolation or pixel averaging.
  *     The latter are not prohibited, but doing so introduce some subsampling-dependent variations in images read,
  *     which would not be what we would expect from a strictly compliant {@link ImageReader}.</div>
  *
- *     <div class="note"><b>NOTE 2:</b>
+ *     <div class="note"><b>Note 2:</b>
  *     tile {@linkplain #getLocation() location} and {@linkplain #getRegion() region} coordinates should be
  *     specified in the overview pixel units - they should <em>not</em> be pre-multiplied by subsampling.
  *     This multiplication should be performed automatically by a {@code TileManager} when comparing regions
@@ -430,7 +430,7 @@ public class Tile implements Serializable {
      * in order to get a uniform grid geometry for every tiles.
      *
      * <h4>Tip</h4>
-     * the <a href="https://en.wikipedia.org/wiki/World_file">World File</a> coefficients of this tile
+     * The <a href="https://en.wikipedia.org/wiki/World_file">World File</a> coefficients of this tile
      * (i.e. the <cite>grid to CRS</cite> transform that we would have if the pixel in the upper-left
      * corner always had indices (0,0)) can be computed as below:
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
index 4f1f4f35a1..99fd9a867a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
@@ -56,10 +56,10 @@ import static java.lang.Math.*;
  * the ellipsoidal case of this projection, which uses a more complicated formula than the affine transform
  * used here.</p>
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Note</h2>
  * EPSG:1028 and 1029 are the current codes, while EPSG:9842 and 9823 are deprecated codes.
  * The new and deprecated definitions differ only by their parameters. In the Apache SIS implementation,
- * both current and legacy definitions are known, but the legacy names are marked as deprecated.</div>
+ * both current and legacy definitions are known, but the legacy names are marked as deprecated.
  *
  * @author  John Grange
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
index d9dfeb17bd..57bdf8009a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
@@ -53,12 +53,12 @@ abstract class GeodeticOperation extends AbstractProvider {
      * <strong>Do not modify this array after construction</strong>, since the same array is shared by many
      * objects and there is no synchronization.
      *
-     * <div class="note"><b>Historical note:</b>
-     * in ISO 19111:2007, the {@code OperationMethod} type had two attributes for the number of source
+     * <h4>Historical note</h4>
+     * In ISO 19111:2007, the {@code OperationMethod} type had two attributes for the number of source
      * and target dimensions. Those attributes have been removed in ISO 19111:2019 revision because not
      * really needed in practice. However, the EPSG database still distinguishes between 2D and 3D variants
      * for some of those operations, so we still need the capability to switch operation methods according
-     * to the number of dimensions.</div>
+     * to the number of dimensions.
      */
     final GeodeticOperation[] redimensioned;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
index 2e17b121e5..f042685568 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
@@ -175,10 +175,10 @@ public final class Geographic3Dto2D extends GeographicRedimension {
         /**
          * Formats a <cite>Well Known Text</cite> version 1 (WKT 1) element for a transform using this group of parameters.
          *
-         * <div class="note"><b>Compatibility note:</b>
+         * <h4>Compatibility note</h4>
          * {@code Param_MT} is defined in the WKT 1 specification only.
          * If the {@linkplain Formatter#getConvention() formatter convention} is set to WKT 2,
-         * then this method silently uses the WKT 1 convention without raising an error.</div>
+         * then this method silently uses the WKT 1 convention without raising an error.
          *
          * @return {@code "Param_MT"} or {@code "Inverse_MT"}.
          */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
index ed1a757938..dfac963f03 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
@@ -26,11 +26,10 @@ import org.apache.sis.parameter.ParameterBuilder;
 /**
  * The provider for <cite>"Mercator (variant C)"</cite> projection (EPSG:1044).
  *
- * <div class="note"><b>Note on naming:</b>
+ * <h2>Note on naming</h2>
  * The "Regional Mercator" class name is inspired by MapInfo practice, while not exactly the same projection.
  * The idea is that this class stands for the Mercator projection giving the most control to the user for
  * fitting a Mercator projection to a particular area of interest.
- * </div>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
index be98796b7f..6d932b2f8a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
@@ -36,7 +36,7 @@ import org.apache.sis.referencing.operation.transform.MathTransforms;
  * The Apache SIS implementation of this operation method always perform the vertical offset in metres.
  * The vertical axis of source and target CRS shall be converted to metres before this operation is applied.
  *
- * <div class="note">Axis direction</div>
+ * <h2>Axis direction</h2>
  * The EPSG guidance note defines this operation as (ignoring unit conversions):
  *
  * <blockquote>X₂ = m⋅X₁ + offset</blockquote>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
index d692333c7f..0810cbbc84 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
@@ -284,7 +284,7 @@ public enum Convention {
      * The difference between various authorities are most easily seen in projection and parameter names.
      * The value returned by this method can be overwritten by {@link WKTFormat#setNameAuthority(Citation)}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The following table shows the names given by various organizations or projects for the same projection:
      *
      * <table class="sis">
@@ -293,7 +293,7 @@ public enum Convention {
      *   <tr><td>EPSG</td>      <td>Mercator (variant A)</td></tr>
      *   <tr><td>OGC</td>       <td>Mercator_1SP</td></tr>
      *   <tr><td>GEOTIFF</td>   <td>CT_Mercator</td></tr>
-     * </table></div>
+     * </table>
      *
      * @return the organization, standard or project to look for when fetching Map Projection parameter names.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Element.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Element.java
index 5689c2f187..fc2dc52ab1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Element.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Element.java
@@ -127,9 +127,9 @@ final class Element {
      * The locale to be used for formatting an error message if the parsing fails, or {@code null} for
      * the system default. This is <strong>not</strong> the locale for parting number or date values.
      *
-     * <div class="note"><b>Design note:</b>
-     * the same reference is duplicated in every {@code Element} instances. We nevertheless copy it
-     * as a convenience for avoiding to make this argument appears in the {@code pullFoo(…)} methods.</div>
+     * <h4>Design note</h4>
+     * The same reference is duplicated in every {@code Element} instances. We nevertheless copy it
+     * as a convenience for avoiding to make this argument appears in the {@code pullFoo(…)} methods.
      */
     private final Locale errorLocale;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
index 2266db288a..43f87f282f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
@@ -73,16 +73,15 @@ public abstract class FormattableObject {
      * The formatter for the {@link #toWKT()} and {@link #toString()} methods. Formatters are not
      * thread-safe, consequently we must make sure that only one thread uses a given instance.
      *
-     * <div class="note"><b>Note 1:</b>
+     * <h4>Implementation notes</h4>
      * We do not use synchronization because the formatter will call back user's code, which
-     * introduce a risk of thread lock if the user performs his own synchronization.</div>
+     * introduce a risk of thread lock if the user performs his own synchronization.
      *
-     * <div class="note"><b>Note 2:</b>
-     * We do not use {@link ThreadLocal} because {@code Formatter} is not reentrant neither,
+     * <p>We do not use {@link ThreadLocal} because {@code Formatter} is not reentrant neither,
      * so it may produce very confusing behavior when debugging a code that perform WKT formatting
      * (some debuggers seem to invoke {@code toString()} for their own purpose in the same thread).
      * Since {@code toString()} is typically invoked for debugging purpose, a single formatter for
-     * any thread is presumed sufficient.</div>
+     * any thread is presumed sufficient.</p>
      */
     private static final AtomicReference<Formatter> FORMATTER = new AtomicReference<>();
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
index 6d78aff9dd..13463c52e0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
@@ -488,14 +488,13 @@ public class Formatter implements Localized {
 
     /**
      * Returns the preferred authority for choosing the projection and parameter names.
+     * The preferred authority can be set by the {@link WKTFormat#setNameAuthority(Citation)} method.
+     * This is not necessarily the authority who created the object to format.
      *
-     * <p>The preferred authority can be set by the {@link WKTFormat#setNameAuthority(Citation)} method.
-     * This is not necessarily the authority who created the object to format.</p>
-     *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The EPSG name of the {@code EPSG:6326} datum is <cite>"World Geodetic System 1984"</cite>.
      * However if the preferred authority is OGC, then the formatted datum name will rather look like
-     * <cite>"WGS84"</cite> (the exact string depends on the object aliases).</div>
+     * <cite>"WGS84"</cite> (the exact string depends on the object aliases).
      *
      * @return the authority for projection and parameter names.
      *
@@ -1024,13 +1023,11 @@ public class Formatter implements Localized {
     /**
      * Appends an international text in an element having the given keyword. Since this method
      * is typically invoked for long descriptions, the element will be written on its own line.
-     *
-     * <div class="note"><b>Example:</b>
-     *   <ul>
-     *     <li>{@code Scope["Large scale topographic mapping and cadastre."]}</li>
-     *     <li>{@code Area["Netherlands offshore."]}</li>
-     *   </ul>
-     * </div>
+     * Examples:
+     * <ul>
+     *   <li>{@code Scope["Large scale topographic mapping and cadastre."]}</li>
+     *   <li>{@code Area["Netherlands offshore."]}</li>
+     * </ul>
      *
      * @param  keyword  the {@linkplain KeywordCase#CAMEL_CASE camel-case} keyword.
      *                  Example: {@code "Scope"}, {@code "Area"} or {@code "Remarks"}.
@@ -1415,8 +1412,8 @@ public class Formatter implements Localized {
      * By {@linkplain KeywordStyle#DEFAULT default}, specialized unit keywords are used with the
      * {@linkplain Convention#WKT2 WKT 2 convention}.
      *
-     * <div class="note"><b>Example:</b>
-     * {@code append(Units.KILOMETRE)} will append "{@code LengthUnit["km", 1000]}" to the WKT.</div>
+     * <h4>Example</h4>
+     * {@code append(Units.KILOMETRE)} will append "{@code LengthUnit["km", 1000]}" to the WKT.
      *
      * @param  unit  the unit to append to the WKT, or {@code null} if none.
      *
@@ -1639,9 +1636,9 @@ public class Formatter implements Localized {
      * This method returns {@code true} if the formattable object given by {@code getEnclosingElement(depth)}
      * has invoked {@link #addContextualUnit(Unit)} with a non-null unit at least once.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Usage note</h4>
      * The main purpose of this method is to allow {@code AXIS[…]} elements to determine if they should
-     * inherit the unit specified by the enclosing CRS, or if they should specify their unit explicitly.</div>
+     * inherit the unit specified by the enclosing CRS, or if they should specify their unit explicitly.
      *
      * @param  depth  1 for the immediate parent, 2 for the parent of the parent, <i>etc.</i>
      * @return whether the parent element at the given depth has invoked {@code addContextualUnit(…)} at least once.
@@ -1800,9 +1797,8 @@ public class Formatter implements Localized {
 
     /**
      * Implementation of public {@code setInvalidWKT(…)} methods.
-     *
-     * <div class="note"><b>Note:</b> the message is stored as an {@link InternationalString}
-     * in order to defer the actual message formatting until needed.</div>
+     * The message is stored as an {@link InternationalString}
+     * in order to defer the actual message formatting until needed.
      */
     private void setInvalidWKT(final String invalidElement, final Exception cause) {
         warnings().add(Errors.formatInternational(Errors.Keys.CanNotRepresentInFormat_2, "WKT", invalidElement), cause, null);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
index 4ca1367383..c5dfdd4ee6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
@@ -33,9 +33,8 @@ package org.apache.sis.io.wkt;
  *   <tr><td>{@code ENGINEERINGDATUM}</td>   <td>{@code EngineeringDatum}</td></tr>
  * </table>
  *
- * <div class="note"><b>Note:</b>
- * Well-Known Text keywords are case insensitive at parsing time. {@code KEYWORD} is equivalent to
- * {@code keyword} is equivalent to {@code KeyWord} and to {@code kEYwORd}.</div>
+ * Well-Known Text keywords are case insensitive at parsing time.
+ * {@code KEYWORD} is equivalent to {@code keyword} is equivalent to {@code KeyWord} and to {@code kEYwORd}.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.6
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordStyle.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordStyle.java
index ab6e53dd43..e1665c1158 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordStyle.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordStyle.java
@@ -20,11 +20,10 @@ package org.apache.sis.io.wkt;
 /**
  * Whether to use short or long WKT keywords.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Usage note</h2>
  * ISO 19162 recommends {@linkplain KeywordCase#UPPER_CASE upper case} {@linkplain #SHORT short} keywords,
  * but {@linkplain KeywordCase#CAMEL_CASE camel case} {@linkplain #LONG long} keywords match more closely
  * the programmatic interface names (e.g. {@link org.opengis.referencing.crs.GeodeticCRS}, <i>etc</i>).
- * </div>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.6
@@ -33,32 +32,25 @@ package org.apache.sis.io.wkt;
 public enum KeywordStyle {
     /**
      * Short keywords.
-     *
-     * <div class="note"><b>Examples:</b>
-     * {@code "GeodCRS"}, {@code "VertCRS"}, {@code "Unit"}.
-     * </div>
+     * Examples: {@code "GeodCRS"}, {@code "VertCRS"}, {@code "Unit"}.
      */
     SHORT,
 
     /**
      * Long keywords.
-     *
-     * <div class="note"><b>Examples:</b>
-     * {@code "GeodeticCRS"}, {@code "VerticalCRS"}, {@code "AngleUnit"}.
-     * </div>
+     * Examples: {@code "GeodeticCRS"}, {@code "VerticalCRS"}, {@code "AngleUnit"}.
      */
     LONG,
 
     /**
      * Keywords style is determined by the WKT {@linkplain Convention convention}.
-     *
-     * <div class="note"><b>Examples:</b>
+     * Examples:
      * <ul>
      *   <li>For {@link Convention#WKT2}: {@code "GeodCRS"}, {@code "VertCRS"}, {@code "AngleUnit"}
      *       (keywords matching the ISO 19162 recommendations).</li>
      *   <li>For {@link Convention#WKT2_SIMPLIFIED}: {@code "GeodeticCRS"}, {@code "VerticalCRS"}, {@code "Unit"}
      *       (keywords matching the class or interface names).</li>
-     * </ul></div>
+     * </ul>
      */
     DEFAULT
 }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
index 0f9ced52b7..d8077979b0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
@@ -213,13 +213,13 @@ class MathTransformParser extends AbstractParser {
      * the codes known to the {@link Units#valueOfEPSG(int)}, then that unit is returned.
      * Otherwise this method returns null.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is a slight departure of ISO 19162, which said <cite>"Should any attributes or values given
+     * <h4>Standard compliance note</h4>
+     * This method is a slight departure of ISO 19162, which said <cite>"Should any attributes or values given
      * in the cited identifier be in conflict with attributes or values given explicitly in the WKT description,
      * the WKT values shall prevail."</cite> But some units can hardly be expressed by the {@code UNIT} element,
      * because the latter can contain only a conversion factor. For example, sexagesimal units (EPSG:9108, 9110
      * and 9111) can hardly be expressed in another way than by their EPSG code. Thankfully, identifiers in
-     * {@code UNIT} elements are rare, so risk of conflicts should be low.</div>
+     * {@code UNIT} elements are rare, so risk of conflicts should be low.
      *
      * @param  parent  the parent {@code "UNIT"} element.
      * @return the unit from the identifier code, or {@code null} if none.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
index 87fd6ea43c..eee7b89b1c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
@@ -56,9 +56,9 @@ public interface Parser {
      * If the given text contains non-fatal anomalies, warnings may be reported in a
      * {@linkplain java.util.logging.Logger logger} named {@code "org.apache.sis.io.wkt"}.
      *
-     * <div class="note"><b>Tip:</b>
-     * for processing warnings in a different way than logging them, one can use
-     * {@link WKTFormat#parseObject(String)} followed by a call to {@link WKTFormat#getWarnings()}.</div>
+     * <h4>Handling of warnings</h4>
+     * For processing warnings in a different way than logging them, one can use
+     * {@link WKTFormat#parseObject(String)} followed by a call to {@link WKTFormat#getWarnings()}.
      *
      * @param  text  object encoded in Well-Known Text format (version 1 or 2).
      * @return the result of parsing the given text.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
index 427246345a..d69756980a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
@@ -611,9 +611,9 @@ public class Symbols implements Localized, Cloneable, Serializable {
      * The purpose of this method is to guess some characteristics about the encoded object without
      * the cost of a full WKT parsing.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@code containsElement(wkt, "AXIS")} returns {@code true} if the given WKT contains at least
-     * one instance of the {@code AXIS[…]} element, ignoring case.</div>
+     * one instance of the {@code AXIS[…]} element, ignoring case.
      *
      * @param  wkt      the WKT to inspect.
      * @param  element  the element to search for.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
index 33f85084f4..30a0f9980b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
@@ -67,7 +67,11 @@ import org.apache.sis.util.Characters;
  *       {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS spherical coordinate systems}.</li>
  * </ul>
  *
- * <div class="note"><b>Note:</b> at least two conventions exist about the meaning of (<var>r</var>, θ, φ) in a
+ * The {@link #toLatinAbbreviation toLatinAbbreviation(…)} and {@link #toUnicodeAbbreviation toUnicodeAbbreviation(…)}
+ * methods are responsible for doing the transliteration at formatting and parsing time, respectively.
+ *
+ * <h3>Note on conventions</h3>
+ * At least two conventions exist about the meaning of (<var>r</var>, θ, φ) in a
  * spherical coordinate system (see <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">Wikipedia</a>
  * or <a href="https://mathworld.wolfram.com/SphericalCoordinates.html">MathWorld</a> for more information).
  * When using the <em>mathematics</em> convention, θ is the azimuthal angle in the
@@ -75,10 +79,7 @@ import org.apache.sis.util.Characters;
  * colatitude). But when using the <em>physics</em> convention, the meaning of θ and φ are interchanged.
  * Furthermore, some other conventions may measure the φ angle from the equatorial plane – like latitude – instead
  * than from the pole. This class does not need to care about the meaning of those angles. The only recommendation
- * is that φ is mapped to <var>U</var> and θ is mapped to <var>V</var>, regardless of their meaning.</div>
- *
- * The {@link #toLatinAbbreviation toLatinAbbreviation(…)} and {@link #toUnicodeAbbreviation toUnicodeAbbreviation(…)}
- * methods are responsible for doing the transliteration at formatting and parsing time, respectively.
+ * is that φ is mapped to <var>U</var> and θ is mapped to <var>V</var>, regardless of their meaning.
  *
  * <h2>Replacement of names</h2>
  * The longitude and latitude axis names are explicitly fixed by ISO 19111:2007 to <cite>"Geodetic longitude"</cite>
@@ -254,10 +255,10 @@ public abstract class Transliterator implements Serializable {
      *       replaces <cite>“<b>e</b>llipsoidal height”</cite> by <cite>“<b>E</b>llipsoidal height”</cite>.</li>
      * </ul>
      *
-     * <div class="note"><b>Rational:</b>
+     * <h4>Usage note</h4>
      * Axis names are not really free text. They are specified by ISO 19111 and ISO 19162.
      * SIS does not put restriction on axis names, but we nevertheless try to use a unique
-     * name when we recognize it.</div>
+     * name when we recognize it.
      *
      * @param  csType     the type of the coordinate system, or {@code null} if unknown.
      * @param  direction  the parsed axis direction.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
index 9906a9c828..9aac5b61f1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
@@ -24,12 +24,12 @@ import org.opengis.referencing.IdentifiedObject;
  * A formatting may fail because an object contains properties which cannot be represented
  * by the standard WKT elements.
  *
- * <div class="note"><b>Example:</b>
- * An engineering CRS cannot be represented in the WKT 1 format if all axes do not use the same
- * unit of measurement. However, such CRS can be represented in the WKT 2 format.</div>
+ * This exception may also be thrown by {@link Formatter} if the object given
+ * to an {@code append(…)} method is an instance of an unsupported class.
  *
- * This exception may also be thrown by {@link Formatter} if the object given to an
- * {@code append(…)} method is an instance of an unsupported class.
+ * <h2>Examples</h2>
+ * An engineering CRS cannot be represented in the WKT 1 format if all axes do not use the same
+ * unit of measurement. However, such CRS can be represented in the WKT 2 format.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 0.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
index 0a94ea1f56..e1c2f961e9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
@@ -82,8 +82,8 @@ import org.apache.sis.util.SimpleInternationalString;
  * {@link org.opengis.referencing.datum.DatumAuthorityFactory}.
  * The choice of interfaces to implement is left to subclasses.
  *
- * <div class="note"><b>Example:</b>
- * extend the set of Coordinate Reference Systems recognized
+ * <h3>Example</h3>
+ * Extend the set of Coordinate Reference Systems recognized
  * by {@link org.apache.sis.referencing.CRS#forCode(String)}.
  * The additional CRS are defined by Well-Known Text strings in a {@code "MyCRS.txt"} file.
  * First step is to create a CRS factory with those definitions:
@@ -101,7 +101,7 @@ import org.apache.sis.util.SimpleInternationalString;
  *
  * The second step is to register this factory as a service with a
  * {@code META-INF/services/org.opengis.referencing.crs.CRSAuthorityFactory} file on the classpath.
- * That file shall contain the fully qualified class name of above {@code MyCRS} class.</div>
+ * That file shall contain the fully qualified class name of above {@code MyCRS} class.
  *
  * <h2>Errors management</h2>
  * Well-Known Text parsing is performed in two steps, each of them executed at a different time:
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
index e71360147e..4c8aa6f234 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
@@ -539,8 +539,10 @@ public class WKTFormat extends CompoundFormat<Object> {
     /**
      * Returns the preferred authority to look for when fetching identified object names and identifiers.
      * The difference between various authorities are most easily seen in projection and parameter names.
+     * If no authority has been {@linkplain #setNameAuthority(Citation) explicitly set}, then this
+     * method returns the default authority for the current {@linkplain #getConvention() convention}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The following table shows the names given by various organizations or projects for the same projection:
      *
      * <table class="sis">
@@ -549,10 +551,7 @@ public class WKTFormat extends CompoundFormat<Object> {
      *   <tr><td>EPSG</td>      <td>Mercator (variant A)</td></tr>
      *   <tr><td>OGC</td>       <td>Mercator_1SP</td></tr>
      *   <tr><td>GEOTIFF</td>   <td>CT_Mercator</td></tr>
-     * </table></div>
-     *
-     * If no authority has been {@linkplain #setNameAuthority(Citation) explicitly set}, then this
-     * method returns the default authority for the current {@linkplain #getConvention() convention}.
+     * </table>
      *
      * @return the organization, standard or project to look for when fetching projection and parameter names.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
index 0f7528f1c0..22051537a6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
@@ -48,7 +48,8 @@ import org.apache.sis.util.resources.Vocabulary;
  *   <li>At parsing time, unknown keywords.</li>
  * </ul>
  *
- * <div class="note"><b>Example:</b> after parsing the following WKT:
+ * <h2>Example</h2>
+ * After parsing the following WKT:
  *
  * {@snippet lang="wkt" :
  *   GeographicCRS[“WGS 84”,
@@ -66,7 +67,6 @@ import org.apache.sis.util.resources.Vocabulary;
  *   <li><code>{@linkplain #getUnknownElementLocations(String) getUnknownElementLocations}("Intruder")</code>
  *       returns <code>{"Ellipsoid", "PrimeMeridian"}</code>.</li>
  * </ul>
- * </div>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
@@ -282,11 +282,8 @@ public final class Warnings implements Localized, Serializable {
      * Returns the keywords of the WKT element where the given exception occurred, or {@code null} if unknown.
      * If this method returns a non-null array, then {@code source[0]} is the keyword of the WKT element where
      * the exception occurred and {@code source[1]} is the keyword of the parent of {@code source[0]}.
-     *
-     * <div class="note"><b>Note:</b>
-     * in other words, this method returns the tail of the path to the WKT element where the exception occurred,
+     * In other words, this method returns the tail of the path to the WKT element where the exception occurred,
      * but with path elements stored in reverse order.
-     * </div>
      *
      * @param  ex  the exception for which to get the source.
      * @return the keywords of the WKT element where the given exception occurred, or {@code null} if unknown.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
index 02fc9c308a..0579985cc8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
@@ -304,10 +304,10 @@ public class DefaultParameterDescriptor<T> extends AbstractParameterDescriptor i
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ParameterDescriptor.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ParameterDescriptor}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own
-     * set of interfaces.</div>
+     * set of interfaces.
      *
      * @return {@code ParameterDescriptor.class} or a user-defined sub-interface.
      */
@@ -371,9 +371,11 @@ public class DefaultParameterDescriptor<T> extends AbstractParameterDescriptor i
      * and whether these values are inclusive or inclusive. If the range is an instance of
      * {@link MeasurementRange}, then it also contains the {@linkplain #getUnit() unit of measurement}.
      *
-     * <div class="note"><b>API note:</b> If this method returns a non-null value, then its type is either exactly
-     * {@code Range<T>}, or {@code Range<E>} where {@code <E>} is the {@linkplain Class#getComponentType() component
-     * type} of {@code <T>} (using wrapper classes for primitive types).</div>
+     * <h4>API note</h4>
+     * If this method returns a non-null value, then its type is either exactly
+     * {@code Range<T>}, or {@code Range<E>} where {@code <E>} is the
+     * {@linkplain Class#getComponentType() component type} of {@code <T>}
+     * (using wrapper classes for primitive types).
      *
      * @return the domain of values, or {@code null}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
index 18ec28ddd6..222a78b2e1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
@@ -171,10 +171,10 @@ public class DefaultParameterDescriptorGroup extends AbstractParameterDescriptor
      * Constructs a group with the same parameters than another group. This is a convenience constructor for
      * operations that expect the same parameters than another operation, but perform a different process.
      *
-     * <div class="note"><b>Example:</b>
-     * the various <cite>"Coordinate Frame Rotation"</cite> variants (EPSG codes 1032, 1038 and 9607)
+     * <h4>Example</h4>
+     * The various <cite>"Coordinate Frame Rotation"</cite> variants (EPSG codes 1032, 1038 and 9607)
      * expect the same parameters than their <cite>"Position Vector transformation"</cite> counterpart
-     * (EPSG codes 1033, 1037 and 9606) but perform the rotation in the opposite direction.</div>
+     * (EPSG codes 1033, 1037 and 9606) but perform the rotation in the opposite direction.
      *
      * @param properties  the properties to be given to the new parameter group.
      * @param parameters  the existing group from which to copy the {@linkplain #descriptors() parameter descriptors}.
@@ -310,10 +310,10 @@ public class DefaultParameterDescriptorGroup extends AbstractParameterDescriptor
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ParameterDescriptorGroup.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ParameterDescriptorGroup}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own
-     * set of interfaces.</div>
+     * set of interfaces.
      *
      * @return {@code ParameterDescriptorGroup.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
index edbd84b655..b2cf7040c6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
@@ -923,11 +923,9 @@ convert:            if (componentType != null) {
      * If this method is invoked more than once with equal {@linkplain #getDescriptor() descriptor},
      * {@linkplain #getValue() value} and {@linkplain #getUnit() unit}, then this method will return
      * the same {@code DefaultParameterValue} instance on a <cite>best effort</cite> basis.
-     *
-     * <div class="note"><b>Rational:</b>
-     * the same parameter value is often used in many different coordinate operations. For example, all <cite>Universal
-     * Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres).
-     * </div>
+     * The rational for sharing is because the same parameter value is often used in many different coordinate operations.
+     * For example, all <cite>Universal Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996)
+     * and the same false easting (500000 metres).
      *
      * @param  <T>        the type of the value stored in the given parameter.
      * @param  parameter  the parameter to make unmodifiable, or {@code null}.
@@ -955,7 +953,7 @@ convert:            if (componentType != null) {
      * Typically, parameter values that are lengths are given in the unit for the projected CRS axes
      * while parameter values that are angles are given in the unit for the base geographic CRS.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The snippet below show WKT representations of the map projection parameters of a projected CRS
      * (most other elements are omitted). The map projection uses a <cite>"Latitude of natural origin"</cite>
      * parameters which is set to 52 <strong>grads</strong>, as defined in the {@code UNIT[…]} element of the
@@ -989,7 +987,6 @@ convert:            if (componentType != null) {
      *     CS[“Cartesian”, 2],
      *       LengthUnit[“kilometre”, 1000]]
      *   }
-     * </div>
      *
      * @param  formatter  the formatter where to format the inner content of this WKT element.
      * @return {@code "Parameter"} or {@code "ParameterFile"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
index c8c9031af7..4b8154c64e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
@@ -402,10 +402,10 @@ public class DefaultParameterValueGroup extends Parameters implements LenientCom
      * The argument shall be the name of a {@linkplain DefaultParameterDescriptorGroup descriptor group}
      * which is a child of this group.
      *
-     * <div class="note"><b>API note:</b>
+     * <h4>Group removal</h4>
      * There is no {@code removeGroup(String)} method. To remove a group, users can inspect the
      * {@link #groups(String)} or {@link #values()} list, decide which occurrences to remove if
-     * there is many of them for the same name, and whether to iterate recursively into sub-groups or not.</div>
+     * there is many of them for the same name, and whether to iterate recursively into sub-groups or not.
      *
      * @param  name  the name of the parameter group to create.
      * @return a newly created parameter group for the given name.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
index f2bd2a5cce..73c96fb29a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
@@ -151,13 +151,14 @@ public class ParameterBuilder extends Builder<ParameterBuilder> {
      * <p><b>Lifetime:</b>
      * this property is kept unchanged until this {@code setRequired(…)} method is invoked again.</p>
      *
-     * <div class="note"><b>API note:</b> the {@link DefaultParameterDescriptor#getMaximumOccurs()
+     * <h4>API note</h4>
+     * The {@link DefaultParameterDescriptor#getMaximumOccurs()
      * maximum number of occurrences} is fixed to 1 and cannot be changed with this builder
      * (except for {@linkplain #createGroup(int, int, GeneralParameterDescriptor...) parameters group})
      * because {@link DefaultParameterValueGroup#parameter(String)} can return only one value.
      * Allowing to return more than one value would complicate the API for an uncommon case.
      * If nevertheless a maximum number of occurrences greater than 1 is really desired, Apache SIS supports
-     * this feature but users have to create the {@link DefaultParameterDescriptor} instance themselves.</div>
+     * this feature but users have to create the {@link DefaultParameterDescriptor} instance themselves.
      *
      * @param  required {@code true} for a mandatory parameter, or {@code false} for an optional one.
      * @return {@code this}, for method call chaining.
@@ -380,10 +381,10 @@ public class ParameterBuilder extends Builder<ParameterBuilder> {
      * Creates a descriptor group with the same parameters than another group. This is a convenience constructor
      * for operations that expect the same parameters than another operation, but perform a different process.
      *
-     * <div class="note"><b>Example:</b>
-     * the various <cite>"Coordinate Frame Rotation"</cite> variants (EPSG codes 1032, 1038 and 9607)
+     * <h4>Example</h4>
+     * The various <cite>"Coordinate Frame Rotation"</cite> variants (EPSG codes 1032, 1038 and 9607)
      * expect the same parameters than their <cite>"Position Vector transformation"</cite> counterpart
-     * (EPSG codes 1033, 1037 and 9606) but perform the rotation in the opposite direction.</div>
+     * (EPSG codes 1033, 1037 and 9606) but perform the rotation in the opposite direction.
      *
      * @param  parameters  the existing group from which to copy the parameters.
      * @return the parameter descriptor group.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
index 460142560c..121df85ef8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
@@ -82,16 +82,16 @@ import org.apache.sis.util.Debug;
  * (by searching for a common {@linkplain org.apache.sis.referencing.ImmutableIdentifier#getAuthority() authority})
  * when it delegates its work to the {@code parameter(String)} method.
  *
- * <div class="note"><b>Example:</b>
+ * <h3>Example</h3>
  * The same parameter may be known under different names. For example, the
  * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid#getSemiMajorAxis()
  * length of the semi-major axis of the ellipsoid} is commonly known as {@code "semi_major"}.
  * But that parameter can also be named {@code "semi_major_axis"}, {@code "earth_radius"} or simply {@code "a"}
  * in other libraries. When fetching parameter values, we do not always know in advance which of the above-cited
- * names is recognized by an arbitrary {@code ParameterValueGroup} instance.</div>
+ * names is recognized by an arbitrary {@code ParameterValueGroup} instance.
  *
- * {@code Parameters} uses also the descriptor information for applying type and unit conversions
- * (i.e. returned values are converted to the units of measurement specified by the given parameter descriptor).
+ * <p>{@code Parameters} uses also the descriptor information for applying type and unit conversions
+ * (i.e. returned values are converted to the units of measurement specified by the given parameter descriptor).</p>
  *
  *
  * <h2>Note for subclass implementers</h2>
@@ -151,14 +151,14 @@ public abstract class Parameters implements ParameterValueGroup, Cloneable {
      * by {@link Parameters#values()}, but are otherwise still accessible when the hidden
      * parameters is explicitly named in a call to {@link #parameter(String)}.
      *
-     * <div class="note"><b>Use case:</b>
-     * this method is used for hiding parameters that should be inferred from the context.
+     * <h4>Use case</h4>
+     * This method is used for hiding parameters that should be inferred from the context.
      * For example, the {@code "semi_major"} and {@code "semi_minor"} parameters are included
      * in the list of {@link org.opengis.referencing.operation.MathTransform} parameters
      * because that class has no way to know the values if they are not explicitly provided.
      * But those semi-axis length parameters should not be included in the list of
      * {@link org.opengis.referencing.operation.CoordinateOperation} parameters
-     * because they are inferred from the context (the source and target CRS).</div>
+     * because they are inferred from the context (the source and target CRS).
      *
      * @param  parameters  the parameters to make unmodifiable, or {@code null}.
      * @param  filter      specifies which source parameters to keep visible, or {@code null} if no filtering.
@@ -468,10 +468,10 @@ public abstract class Parameters implements ParameterValueGroup, Cloneable {
      * This method tries to do the same work than {@link #parameter(String)} but without
      * instantiating optional parameters if that parameter was not already instantiated.
      *
-     * <div class="note"><b>Performance note:</b>
-     * profiling shows that this method is costly. To mitigate the problem, {@link DefaultParameterValueGroup}
+     * <h4>Performance note</h4>
+     * Profiling shows that this method is costly. To mitigate the problem, {@link DefaultParameterValueGroup}
      * overrides this method with a quick comparisons of descriptor references before to fallback on this more
-     * generic implementation.</div>
+     * generic implementation.
      *
      * @param  parameter  the parameter to search.
      * @return the requested parameter value, or {@code null} if none.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
index 95b48ae4d2..8c90808d59 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
@@ -214,8 +214,9 @@ public class TensorParameters<E> implements Serializable {
      *       the row (first row is {@code "A"}) and the digit is the column index (first column is {@code "0"}).</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b> {@code "elt_1_2"} is the element name for the value at row 1 and column 2.
-     * Its alias is {@code "B2"}, which is the EPSG name for the same parameter.</div>
+     * <h4>Example</h4>
+     * {@code "elt_1_2"} is the element name for the value at row 1 and column 2.
+     * Its alias is {@code "B2"}, which is the EPSG name for the same parameter.
      */
     public static final TensorParameters<Double> WKT1;
     static {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
index ef43c42778..5d48004f0b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
@@ -40,13 +40,10 @@ import org.apache.sis.util.resources.Errors;
  *
  * <h2>Instances sharing</h2>
  * If the {@link #create(ParameterValue)} method is invoked more than once with equal descriptor, value and unit,
- * then the method will return the same {@code UnmodifiableParameterValue} instance on a <cite>best effort</cite>
- * basis.
- *
- * <div class="note"><b>Rational:</b>
- * the same parameter value is often used in many different coordinate operations. For example, all <cite>Universal
- * Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres).
- * </div>
+ * then the method will return the same {@code UnmodifiableParameterValue} instance on a <em>best effort</em> basis.
+ * The rational for sharing is because the same parameter value is often used in many different coordinate operations.
+ * For example, all <cite>Universal Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996)
+ * and the same false easting (500000 metres).
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.3
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
index 7d93057d3c..b97ab2cc35 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@ -162,7 +162,8 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      * for specifying the object is deprecated. If deprecated, then the replacement should be specified
      * in the {@linkplain #getRemarks() remarks}.
      *
-     * <div class="note"><b>Example:</b> "superseded by code XYZ".</div>
+     * <h4>Example</h4>
+     * "superseded by code XYZ".
      *
      * @since 0.6
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
index f46d4c4e61..b402bf6ce0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
@@ -231,11 +231,10 @@ public final class CRS extends Static {
      * {@linkplain org.apache.sis.referencing.cs.DefaultCartesianCS Cartesian coordinate system} for creating a new
      * {@linkplain org.apache.sis.referencing.crs.DefaultProjectedCRS projected coordinate reference system}.</p>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Reverse operation</h4>
      * The {@link IdentifiedObjects#lookupURN(IdentifiedObject, Citation)} method can be seen
      * as a converse of this method: from a CRS object, it tries to find a URN that describes it.
      * More codes may also be supported depending on which extension modules are available.
-     * </div>
      *
      * @param  code  the authority code.
      * @return the Coordinate Reference System for the given authority code.
@@ -457,13 +456,13 @@ public final class CRS extends Static {
      * base CRS} (usually a {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic CRS} instance)
      * would be suitable. If no suitable CRS is found, then this method returns {@code null}.
      *
-     * <div class="note"><b>Use case:</b>
-     * before to test if two arbitrary envelopes {@linkplain GeneralEnvelope#intersects(Envelope) intersect} each other,
+     * <h4>Use case</h4>
+     * Before to test if two arbitrary envelopes {@linkplain GeneralEnvelope#intersects(Envelope) intersect} each other,
      * they need to be {@linkplain Envelopes#transform(Envelope, CoordinateReferenceSystem) transformed} in the same CRS.
      * However if one CRS is a Transverse Mercator projection while the other CRS is a world-wide geographic CRS, then
      * attempts to use the Transverse Mercator projection as the common CRS is likely to fail since the geographic envelope
      * may span an area far outside the projection domain of validity. This {@code suggestCommonTarget(…)} method can used
-     * for choosing a common CRS which is less likely to fail.</div>
+     * for choosing a common CRS which is less likely to fail.
      *
      * @param  regionOfInterest  the geographic area for which the coordinate operations will be applied,
      *                           or {@code null} if unknown. Will be intersected with CRS domains of validity.
@@ -1317,7 +1316,7 @@ public final class CRS extends Static {
      *   <li>Otherwise throws a {@code ClassCastException}.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * Apache SIS allows 4-dimensional (<var>x</var>,<var>y</var>,<var>z</var>,<var>t</var>)
      * coordinate reference system to be built in two different ways as shown below:
      *
@@ -1341,7 +1340,7 @@ public final class CRS extends Static {
      *
      * This method guaranteed that the returned list is a flat one as shown on the right side.
      * Note that such flat lists are the only one allowed by ISO/OGC standards for compound CRS.
-     * The hierarchical structure is an Apache SIS flexibility.</div>
+     * The hierarchical structure is an Apache SIS flexibility.
      *
      * @param  crs  the coordinate reference system, or {@code null}.
      * @return the single coordinate reference systems, or an empty list if the given CRS is {@code null}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
index 6a291598f8..a10e99f556 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
@@ -1079,10 +1079,9 @@ public enum CommonCRS {
      *
      * The coordinate system axes are (Easting, Northing) in metres.
      *
-     * <div class="note"><b>Warning:</b>
-     * be aware of parameter order! For this method, latitude is first.
+     * <p>Be aware of parameter order! For this method, latitude is first.
      * This order is for consistency with the non-normalized {@linkplain #geographic() geographic} CRS
-     * of all items in this {@code CommonCRS} enumeration.</div>
+     * of all items in this {@code CommonCRS} enumeration.</p>
      *
      * @param  latitude  a latitude in the desired UTM or UPS projection zone.
      * @param  longitude a longitude in the desired UTM or UPS projection zone.
@@ -1322,10 +1321,10 @@ public enum CommonCRS {
         /**
          * Creates a new enumeration value of the given name.
          *
-         * <div class="note"><b>Note:</b>
+         * <h4>API design note</h4>
          * This constructor does not expect {@link VerticalDatumType} constant in order to avoid too
          * early class initialization. In particular, we do not want early dependency to the SIS-specific
-         * {@code VerticalDatumTypes.ELLIPSOIDAL} constant.</div>
+         * {@code VerticalDatumTypes.ELLIPSOIDAL} constant.
          */
         private Vertical(final boolean isEPSG, final short crs, final short datum) {
             this.isEPSG = isEPSG;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
index 26e102c231..8c92eca19a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
@@ -835,12 +835,12 @@ public class GeodeticCalculator {
      * The {@code tolerance} parameter should not be too small for avoiding creation of unreasonably long chain of Bézier curves.
      * For example, a value of 1/10 of geodesic length may be sufficient.
      *
-     * <div class="note"><b>Note:</b>
-     * this method depends on the presence of {@code java.desktop} module. This constraint may be addressed
+     * <h4>Dependency note</h4>
+     * This method depends on the presence of {@code java.desktop} module. This constraint may be addressed
      * in a future Apache SIS version (see <a href="https://issues.apache.org/jira/browse/SIS-453">SIS-453</a>).
      * The "2D" suffix in the method name represents this relationship with Java2D.
      * The {@code createGeodesicPath(…)} method name (without suffix) is reserved for a future version
-     * using ISO curves instead.</div>
+     * using ISO curves instead.
      *
      * @param  tolerance  maximal error between the approximated curve and actual geodesic track
      *                    in the units of measurement given by {@link #getDistanceUnit()}.
@@ -885,12 +885,12 @@ public class GeodeticCalculator {
      * The {@code tolerance} parameter should not be too small for avoiding creation of unreasonably long chain of Bézier curves.
      * For example, a value of 1/10 of geodesic length may be sufficient.
      *
-     * <div class="note"><b>Note:</b>
-     * this method depends on the presence of {@code java.desktop} module. This constraint may be addressed
+     * <h4>Dependency note</h4>
+     * This method depends on the presence of {@code java.desktop} module. This constraint may be addressed
      * in a future Apache SIS version (see <a href="https://issues.apache.org/jira/browse/SIS-453">SIS-453</a>).
      * The "2D" suffix in the method name represents this relationship with Java2D.
      * The {@code createGeodesicCircle(…)} method name (without suffix) is reserved for a future version
-     * using ISO curves instead.</div>
+     * using ISO curves instead.
      *
      * @param  tolerance  maximal error in the units of measurement given by {@link #getDistanceUnit()}.
      *                    This is approximate; the actual errors may vary around that value.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
index fbdcc41ce7..abd5e9369b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
@@ -102,14 +102,14 @@ public final class IdentifiedObjects extends Static {
      *       <td>{@link AbstractIdentifiedObject#isDeprecated()}</td></tr>
      * </table>
      *
-     * <div class="note"><b>Note:</b>
-     * the current implementation does not provide
+     * <h4>Implementation note</h4>
+     * The current implementation does not provide
      * {@value org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#MINIMUM_VALUE_KEY},
      * {@value org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#MAXIMUM_VALUE_KEY} or
      * {@value org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#RANGE_MEANING_KEY} entry for
      * {@link org.opengis.referencing.cs.CoordinateSystemAxis} instances because the minimum and maximum
      * values depend on the {@linkplain org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#getUnit()
-     * units of measurement}.</div>
+     * units of measurement}.
      *
      * @param  object    the identified object to view as a properties map.
      * @param  excludes  the keys of properties to exclude from the map.
@@ -370,11 +370,10 @@ public final class IdentifiedObjects extends Static {
      * then the alias is returned. For example if the name is <cite>"WGS 84"</cite> and an alias is
      * <cite>"World Geodetic System 1984"</cite>, then that later alias is returned.
      *
-     * <div class="note"><b>Note:</b>
-     * the name should never be missing, but this method nevertheless
+     * <p>The name should never be missing, but this method nevertheless
      * fallbacks on identifiers as a safety against incomplete implementations.
      * If an identifier implements {@link GenericName} (as with {@link NamedIdentifier}),
-     * its {@link GenericName#toInternationalString() toInternationalString()} method will be used.</div>
+     * its {@link GenericName#toInternationalString() toInternationalString()} method will be used.</p>
      *
      * @param  object  the identified object, or {@code null}.
      * @param  locale  the locale for the name to return, or {@code null} for the default.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
index bbb7b027fc..800d790c34 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
@@ -359,7 +359,8 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
     /**
      * Alphanumeric value identifying an instance in the namespace.
      *
-     * <div class="note"><b>Example:</b> {@code "4326"}.</div>
+     * <h4>Example</h4>
+     * {@code "4326"}.
      *
      * @return value identifying an instance in the namespace (never {@code null}).
      *
@@ -374,7 +375,8 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
      * Identifier or namespace in which the code is valid.
      * This is often the {@linkplain #getAuthority() authority}'s abbreviation, but not necessarily.
      *
-     * <div class="note"><b>Example:</b> {@code "EPSG"}.</div>
+     * <h4>Example</h4>
+     * {@code "EPSG"}.
      *
      * @return identifier or namespace in which the code is valid, or {@code null} if not available.
      *
@@ -391,7 +393,8 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
      * This version is included only when the {@linkplain #getCode() code} uses versions.
      * When appropriate, the edition is identified by the effective date, coded using ISO 8601 date format.
      *
-     * <div class="note"><b>Example:</b> the version of the underlying EPSG database.</div>
+     * <h4>Example</h4>
+     * The version of the underlying EPSG database.
      *
      * @return the version identifier for the namespace, or {@code null} if none.
      */
@@ -403,7 +406,8 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
     /**
      * Natural language description of the meaning of the code value.
      *
-     * <div class="note"><b>Example:</b> "World Geodetic System 1984".</div>
+     * <h4>Example</h4>
+     * "World Geodetic System 1984".
      *
      * @return the natural language description, or {@code null} if none.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
index f5c9261ac5..f26976ad77 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
@@ -68,11 +68,11 @@ import org.apache.sis.util.ArgumentChecks;
  *     often contain abbreviation (for example "DCW" as an alternative title for <cite>"Digital Chart of the World"</cite>).</li>
  * </ul>
  *
- * <div class="note"><b>Example:</b>
+ * <h3>Example</h3>
  * If the identifier attributes are {@code authority} = {@code new DefaultCitation("IOGP")},
  * {@code codeSpace} = {@code "EPSG"} and {@code code} = {@code "4326"}, then the name attributes will be
  * {@code head} = {@code "EPSG"}, {@code tip} = {@code "4326"} and {@link #toString()} = {@code "EPSG:4326"}.
- * Note that the scope does not appear in the string representation of names.</div>
+ * Note that the scope does not appear in the string representation of names.
  *
  *
  * <h2>Immutability and thread safety</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
index aec6873097..e6d4dd0ecd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
@@ -472,8 +472,9 @@ public class AbstractCRS extends AbstractReferenceSystem implements CoordinateRe
      * because ISO 19162 excludes the coordinate system definition in base CRS. Note however that WKT 1 includes the
      * coordinate systems. The SIS-specific {@link Convention#INTERNAL} formats also those coordinate systems.</p>
      *
-     * <div class="note"><b>Note:</b> the {@code unit} and {@code isWKT1} arguments could be computed by this method,
-     * but are requested in order to avoid computing them twice, because the caller usually have them anyway.</div>
+     * <h4>API note</h4>
+     * The {@code unit} and {@code isWKT1} arguments could be computed by this method,
+     * but are requested in order to avoid computing them twice, because the caller usually have them anyway.
      *
      * @param  formatter  the formatter where to append the coordinate system.
      * @param  cs         the coordinate system to append.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
index e1f2c36228..5667e0d003 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
@@ -305,10 +305,10 @@ public class DefaultCompoundCRS extends AbstractCRS implements CompoundCRS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code CompoundCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code CompoundCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code CompoundCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
index b28c89643a..d90d21783a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
@@ -402,10 +402,10 @@ public class DefaultDerivedCRS extends AbstractDerivedCRS<Conversion> implements
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code DerivedCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code DerivedCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code DerivedCRS.class} or a user-defined sub-interface.
      */
@@ -911,10 +911,10 @@ public class DefaultDerivedCRS extends AbstractDerivedCRS<Conversion> implements
      * Returns the {@code <gml:derivedCRSType>} element to marshal. The default implementation tries to infer this
      * information from the {@code DefaultDerivedCRS} properties, but subclasses will override for more determinism.
      *
-     * <div class="note"><b>Note:</b>
-     * there is no setter at this time because SIS does not store this information in a {@code DefaultDerivedCRS}
+     * <h4>API note</h4>
+     * There is no setter at this time because SIS does not store this information in a {@code DefaultDerivedCRS}
      * field. Instead, we rely on the interface that we implement. For example, a {@code DefaultDerivedCRS} of type
-     * {@code SC_DerivedCRSType.vertical} will implement the {@link VerticalCRS} interface.</div>
+     * {@code SC_DerivedCRSType.vertical} will implement the {@link VerticalCRS} interface.
      */
     @XmlElement(name = "derivedCRSType", required = true)
     SC_DerivedCRSType getType() {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
index fae6508915..28b42824df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
@@ -192,10 +192,10 @@ public class DefaultEngineeringCRS extends AbstractCRS implements EngineeringCRS
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code EngineeringCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code EngineeringCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code EngineeringCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
index 405d91064b..99335108fc 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
@@ -203,10 +203,10 @@ public class DefaultGeocentricCRS extends DefaultGeodeticCRS implements Geocentr
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code GeocentricCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code GeocentricCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code GeocentricCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
index 5fafbe2fb1..c3aa68fc4e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
@@ -200,10 +200,10 @@ public class DefaultGeographicCRS extends DefaultGeodeticCRS implements Geograph
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code GeographicCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code GeographicCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code GeographicCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
index b0029e4d8f..49ccebce75 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
@@ -177,10 +177,10 @@ public class DefaultImageCRS extends AbstractCRS implements ImageCRS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ImageCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ImageCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code ImageCRS.class} or a user-defined sub-interface.
      */
@@ -231,9 +231,10 @@ public class DefaultImageCRS extends AbstractCRS implements ImageCRS {
     /**
      * Formats this CRS as a <cite>Well Known Text</cite> {@code ImageCRS[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code ImageCRS} are defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code ImageCRS} are defined in the WKT 2 specification only.
      *
+     * @param  formatter  the formatter where to format the inner content of this WKT element.
      * @return {@code "ImageCRS"}.
      *
      * @see <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#79">WKT 2 specification §12</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
index 8da528526d..9cd8b82b60 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
@@ -177,10 +177,10 @@ public class DefaultParametricCRS extends AbstractCRS implements ParametricCRS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ParametricCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ParametricCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code ParametricCRS.class} or a user-defined sub-interface.
      */
@@ -232,9 +232,10 @@ public class DefaultParametricCRS extends AbstractCRS implements ParametricCRS {
     /**
      * Formats this CRS as a <cite>Well Known Text</cite> {@code ParametricCRS[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code ParametricCRS} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code ParametricCRS} is defined in the WKT 2 specification only.
      *
+     * @param  formatter  the formatter where to format the inner content of this WKT element.
      * @return {@code "ParametricCRS"}.
      *
      * @see <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#83">WKT 2 specification</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
index 3aa7a43575..a1d62584b6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
@@ -188,10 +188,10 @@ public class DefaultProjectedCRS extends AbstractDerivedCRS<Projection> implemen
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ProjectedCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ProjectedCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code ProjectedCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
index a8f40457f0..603899913b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
@@ -240,10 +240,10 @@ public class DefaultTemporalCRS extends AbstractCRS implements TemporalCRS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code TemporalCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code TemporalCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code TemporalCRS.class} or a user-defined sub-interface.
      */
@@ -281,11 +281,11 @@ public class DefaultTemporalCRS extends AbstractCRS implements TemporalCRS {
      * is the unit of the value expected in argument by {@link #toInstant(double)} and {@link #toDate(double)},
      * and the unit of the value returned by {@code toValue(…)} methods.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * this method is declared final and does not invoke overridden {@link #getCoordinateSystem()} method
+     * <h4>Implementation note</h4>
+     * This method is declared final and does not invoke overridden {@link #getCoordinateSystem()} method
      * because this {@code getUnit()} method is invoked indirectly by constructors. Another reason is that
      * the overriding point is the {@code CoordinateSystemAxis.getUnit()} method and we want to avoid
-     * introducing another overriding point that could be inconsistent with above method.</div>
+     * introducing another overriding point that could be inconsistent with above method.
      *
      * @return the temporal unit of measurement of coordinates in this CRS.
      *
@@ -450,8 +450,8 @@ public class DefaultTemporalCRS extends AbstractCRS implements TemporalCRS {
     /**
      * Formats this CRS as a <cite>Well Known Text</cite> {@code TimeCRS[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code TimeCRS} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code TimeCRS} is defined in the WKT 2 specification only.
      *
      * @param  formatter  the formatter where to format the inner content of this WKT element.
      * @return {@code "TimeCRS"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
index eaca04829f..de2d9991e7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
@@ -175,10 +175,10 @@ public class DefaultVerticalCRS extends AbstractCRS implements VerticalCRS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code VerticalCRS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code VerticalCRS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code VerticalCRS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
index f7dc5db0f1..67264e0eea 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
@@ -132,13 +132,12 @@ public enum AxesConvention implements AxisFilter {
      * {@linkplain org.apache.sis.referencing.datum.DefaultGeodeticDatum#getPrimeMeridian() prime meridian} to Greenwich.
      * Those changes are not applied for avoiding discontinuity in conversions from the non-normalized CRS to the normalized CRS.
      *
-     * <div class="note"><b>Rational:</b>
+     * <h4>Rational</h4>
      * The reason why we do not normalize the range and the prime meridian is because doing so
      * would cause the conversion between old and new coordinate systems to be non-affine for axes
      * having {@link org.opengis.referencing.cs.RangeMeaning#WRAPAROUND}. Furthermore, changing the
      * prime meridian would be a datum change rather than a coordinate system change, and datum
      * changes are more difficult to handle by coordinate operation factories.
-     * </div>
      *
      * @see org.apache.sis.referencing.CommonCRS#normalizedGeographic()
      * @see CoordinateSystems#replaceAxes(CoordinateSystem, AxisFilter)
@@ -182,12 +181,12 @@ public enum AxesConvention implements AxisFilter {
      * <i>(<var>longitude</var>, <var>latitude</var>)</i> or <i>(<var>x</var>,<var>y</var>)</i> axis order.
      * A similar concept appears in the Web Map Services (WMS) 1.3 specification, quoted here:
      *
-     * <div class="note"><b>6.7.2 Map CS</b> —
+     * <blockquote><b>6.7.2 Map CS</b> —
      * The usual orientation of the Map CS shall be such that the <var>i</var> axis is parallel to the East-to-West axis
      * of the Layer CRS and increases Eastward, and the <var>j</var> axis is parallel to the North-to-South axis of the
      * Layer CRS and increases Southward. This orientation will not be possible in some cases, as (for example) in an
      * orthographic projection over the South Pole. The convention to be followed is that, wherever possible, East shall
-     * be to the right edge and North shall be toward the upper edge of the Map CS.</div>
+     * be to the right edge and North shall be toward the upper edge of the Map CS.</blockquote>
      *
      * The above-cited <i>(<var>i</var>,<var>j</var>)</i> axes are mapped to <cite>display right</cite> and
      * <cite>display down</cite> directions respectively.
@@ -215,13 +214,13 @@ public enum AxesConvention implements AxisFilter {
      *   </tr>
      * </table>
      *
-     * <div class="note"><b>Notes:</b>
+     * <h4>API notes</h4>
      * we do not provide a <cite>"longitude or <var>x</var> axis first"</cite> enumeration value because such criterion
      * is hard to apply to inter-cardinal directions and has no meaning for map projections over a pole.
      * The <cite>display oriented</cite> enumeration name applies to a wider range of cases,
      * but still have a loosely definition which may be adjusted in future Apache SIS versions.
      * If a more stable definition is needed, consider using {@link #RIGHT_HANDED} instead since
-     * <cite>right-handed</cite> coordinate systems have a more precise meaning in Apache SIS.</div>
+     * <cite>right-handed</cite> coordinate systems have a more precise meaning in Apache SIS.
      *
      * @since 1.0
      */
@@ -242,7 +241,6 @@ public enum AxesConvention implements AxisFilter {
      * The axes orientations implied by this {@code RIGHT_HANDED} enum is shown,
      * together with {@link #DISPLAY_ORIENTED} axes for reference:</p>
      *
-     * <div class="note">
      * <table class="sis">
      *   <caption>Examples of left-handed and right-handed coordinate systems</caption>
      *   <tr><th>Left-handed</th> <th>Right-handed</th> <th>Display oriented</th> <th>Remarks</th></tr>
@@ -253,7 +251,7 @@ public enum AxesConvention implements AxisFilter {
      *       <td>South along 90° West,<br>South along 0°</td>
      *       <td>(Same as right-handed)</td>
      *       <td>Can be used for the mapping of North pole.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @see org.apache.sis.referencing.cs.CoordinateSystems#angle(AxisDirection, AxisDirection)
      * @see <a href="https://en.wikipedia.org/wiki/Right_hand_rule">Right-hand rule on Wikipedia</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
index f734272ca4..722da90e42 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
@@ -127,10 +127,6 @@ public final class CoordinateSystems extends Static {
      * Returns an axis direction from a pole along a meridian.
      * The given meridian is usually, but not necessarily, relative to the Greenwich meridian.
      *
-     * <div class="note"><b>Example:</b>
-     * {@code directionAlongMeridian(AxisDirection.SOUTH, -90)} returns an axis direction for
-     * <cite>“South along 90°W”</cite>.</div>
-     *
      * <h4>Reference meridian</h4>
      * The reference meridian depends on the context. It is usually the prime meridian of the
      * {@linkplain org.apache.sis.referencing.datum.DefaultGeodeticDatum geodetic datum} of the
@@ -139,6 +135,10 @@ public final class CoordinateSystems extends Static {
      * This policy is consistent with
      * <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#40">WKT 2 specification §7.5.4(iv)</a>.
      *
+     * <h4>Example</h4>
+     * {@code directionAlongMeridian(AxisDirection.SOUTH, -90)} returns an axis direction for
+     * <cite>“South along 90°W”</cite>.
+     *
      * @param  baseDirection  the base direction, which must be {@link AxisDirection#NORTH} or {@link AxisDirection#SOUTH}.
      * @param  meridian       the meridian in degrees, relative to a unspecified (usually Greenwich) prime meridian.
      *         Meridians in the East hemisphere are positive and meridians in the West hemisphere are negative.
@@ -188,10 +188,9 @@ public final class CoordinateSystems extends Static {
      *   <li>The angle from <cite>"North along 90° East"</cite> to <cite>"North along 0°"</cite> is 90°.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
-     * in the case of directions like <cite>“South along 90°W”</cite>, the caller is responsible to make sure
+     * In the case of directions like <cite>“South along 90°W”</cite>, the caller is responsible to make sure
      * that the meridians are relative to the same prime meridian. This is the case if the axes are part of
-     * the same {@code CoordinateSystem} instance.</div>
+     * the same {@code CoordinateSystem} instance.
      *
      * <h4>Horizontal and vertical directions</h4>
      * By convention this method defines the angle from any compass direction to the {@link AxisDirection#UP UP}
@@ -302,11 +301,11 @@ public final class CoordinateSystems extends Static {
      * except that it decomposes {@link DefaultCompoundCS} in its components before to check the two collections
      * of interfaces.
      *
-     * <div class="note"><b>Example:</b>
-     * if {@code sourceCS} is a {@link DefaultCompoundCS} containing {@link EllipsoidalCS} and a vertical or temporal
+     * <h4>Example</h4>
+     * If {@code sourceCS} is a {@link DefaultCompoundCS} containing {@link EllipsoidalCS} and a vertical or temporal
      * coordinate system and {@code targetCS} is an {@link EllipsoidalCS} only, then this method returns {@code true}.
      * But if {@code targetCS} is a {@link CartesianCS} or contains any other CS which is not a component of source CS,
-     * then this method returns {@code false}.</div>
+     * then this method returns {@code false}.
      */
     static boolean hasAllTargetTypes(final CoordinateSystem sourceCS, final CoordinateSystem targetCS) {
         final List<CoordinateSystem> sources = new ArrayList<>(sourceCS.getDimension());
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCartesianCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCartesianCS.java
index 5bf6dc262b..0215a950c3 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCartesianCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCartesianCS.java
@@ -207,10 +207,10 @@ public class DefaultCartesianCS extends DefaultAffineCS implements CartesianCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code CartesianCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code CartesianCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code CartesianCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
index 319baafe72..3e41020bfd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
@@ -389,10 +389,10 @@ public class DefaultCoordinateSystemAxis extends AbstractIdentifiedObject implem
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code CoordinateSystemAxis.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code CoordinateSystemAxis}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own
-     * set of interfaces.</div>
+     * set of interfaces.
      *
      * @return {@code CoordinateSystemAxis.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCylindricalCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCylindricalCS.java
index 56083651cf..d63d4582a0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCylindricalCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCylindricalCS.java
@@ -175,10 +175,10 @@ public class DefaultCylindricalCS extends AbstractCS implements CylindricalCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code CylindricalCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code CylindricalCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code CylindricalCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCS.java
index 46b0e329b0..fe4c1d2c80 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCS.java
@@ -216,10 +216,10 @@ public class DefaultEllipsoidalCS extends AbstractCS implements EllipsoidalCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code EllipsoidalCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code EllipsoidalCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code EllipsoidalCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultLinearCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultLinearCS.java
index c20b34da8d..74c1d57ab4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultLinearCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultLinearCS.java
@@ -166,10 +166,10 @@ public class DefaultLinearCS extends AbstractCS implements LinearCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code LinearCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code LinearCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code LinearCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
index beea9d24be..88784588ec 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
@@ -148,10 +148,10 @@ public class DefaultParametricCS extends AbstractCS implements ParametricCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ParametricCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ParametricCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code ParametricCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultPolarCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultPolarCS.java
index e695826960..27339d93bb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultPolarCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultPolarCS.java
@@ -173,10 +173,10 @@ public class DefaultPolarCS extends AbstractCS implements PolarCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code PolarCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code PolarCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code PolarCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultSphericalCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultSphericalCS.java
index a395f4fee7..d9a14ba01d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultSphericalCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultSphericalCS.java
@@ -176,10 +176,10 @@ public class DefaultSphericalCS extends AbstractCS implements SphericalCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code SphericalCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code SphericalCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code SphericalCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultTimeCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultTimeCS.java
index a3df2bd593..db54c180ee 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultTimeCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultTimeCS.java
@@ -167,10 +167,10 @@ public class DefaultTimeCS extends AbstractCS implements TimeCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code TimeCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code TimeCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code TimeCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
index a88c055bd8..22cfceca66 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultUserDefinedCS.java
@@ -165,10 +165,10 @@ public class DefaultUserDefinedCS extends AbstractCS implements UserDefinedCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code UserDefinedCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code UserDefinedCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code UserDefinedCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultVerticalCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultVerticalCS.java
index 9a7f1b88b2..07fe361f89 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultVerticalCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultVerticalCS.java
@@ -183,10 +183,10 @@ public class DefaultVerticalCS extends AbstractCS implements VerticalCS {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code VerticalCS.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code VerticalCS}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code VerticalCS.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DirectionAlongMeridian.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DirectionAlongMeridian.java
index 2947870526..46a400ccaf 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DirectionAlongMeridian.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DirectionAlongMeridian.java
@@ -184,8 +184,8 @@ final class DirectionAlongMeridian extends FormattableObject implements Comparab
      * {@linkplain #baseDirection base directions} don't match.
      * A positive angle denote a right-handed system.
      *
-     * <div class="note"><b>Example:</b>
-     * The angle from <cite>"North along 90 deg East"</cite> to <cite>"North along 0 deg</cite> is 90°.</div>
+     * <h4>Example</h4>
+     * The angle from <cite>"North along 90 deg East"</cite> to <cite>"North along 0 deg</cite> is 90°.
      */
     public double angle(final DirectionAlongMeridian other) {
         if (!baseDirection.equals(other.baseDirection)) {
@@ -294,8 +294,8 @@ final class DirectionAlongMeridian extends FormattableObject implements Comparab
      * This element contains the meridian value and the unit of measurement.
      * The unit is currently fixed to degrees, but this may change in any future implementation.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code Meridian} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code Meridian} is defined in the WKT 2 specification only.
      *
      * @param  formatter The formatter where to format the inner content of this WKT element.
      * @return {@code "Meridian"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
index c5ef1a854a..00b6376f26 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
@@ -116,9 +116,8 @@ import static org.apache.sis.referencing.operation.matrix.Matrix4.SIZE;
  *       can be found in the EPSG database for a given pair of source and target CRS.</li>
  * </ol>
  *
- * <div class="note"><b>Note:</b>
  * In EPSG terminology, Apache SIS gives precedence to the <cite>late-binding</cite> approach
- * (case 1 above) over the <cite>early-binding</cite> approach (case 3 above).</div>
+ * (case 1 above) over the <cite>early-binding</cite> approach (case 3 above).
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 1.4
@@ -179,9 +178,9 @@ public class BursaWolfParameters extends FormattableObject implements Cloneable,
      * The scale difference in parts per million (EPSG:8611).
      * The legacy OGC parameter name is {@code "ppm"}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * If a distance of 100 km in the source coordinate reference system translates into a distance of 100.001 km
-     * in the target coordinate reference system, the scale difference is 1 ppm (the ratio being 1.000001).</div>
+     * in the target coordinate reference system, the scale difference is 1 ppm (the ratio being 1.000001).
      */
     public double dS;
 
@@ -288,9 +287,9 @@ public class BursaWolfParameters extends FormattableObject implements Cloneable,
      *       this method returns only the first 3 of the above-cited values.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
-     * the rules about the arrays of length 3, 6 or 7 are derived from the <cite>Well Known Text</cite> (WKT)
-     * version 1 specification. The rule about the array of length 14 is an extension.</div>
+     * <h4>Compatibility note</h4>
+     * The rules about the arrays of length 3, 6 or 7 are derived from the <cite>Well Known Text</cite> (WKT)
+     * version 1 specification. The rule about the array of length 14 is an extension.
      *
      * @return the parameter values as an array of length 3, 6, 7 or 14.
      *
@@ -668,12 +667,12 @@ public class BursaWolfParameters extends FormattableObject implements Cloneable,
      * <blockquote><code>TOWGS84[{@linkplain #tX}, {@linkplain #tY}, {@linkplain #tZ}, {@linkplain #rX},
      * {@linkplain #rY}, {@linkplain #rZ}, {@linkplain #dS}]</code></blockquote>
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code TOWGS84} is defined in the WKT 1 specification only.</div>
-     *
      * The element name is {@code "ToWGS84"} in the common case where the {@linkplain #getTargetDatum() target datum}
      * is WGS 84. For other targets, the element name will be derived from the datum name.
      *
+     * <h4>Compatibility note</h4>
+     * {@code TOWGS84} is defined in the WKT 1 specification only.
+     *
      * @param  formatter The formatter where to format the inner content of this WKT element.
      * @return Usually {@code "ToWGS84"}.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
index c5f66c795f..cb767df444 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
@@ -68,7 +68,7 @@ import org.apache.sis.measure.Units;
  * For performance reasons SIS {@code MathTransform} implementations perform all the above-cited steps themselves,
  * and apply the interpolated translations on coordinate values in their own step between above steps 3 and 4.
  *
- * <div class="note"><b>Use cases:</b>
+ * <h2>Use cases</h2>
  * <ul class="verbose">
  *   <li><b>Datum shift by geographic translations</b><br>
  *   NADCON and NTv2 grids are defined with longitude (<var>λ</var>) and latitude (<var>φ</var>) inputs in angular
@@ -95,9 +95,7 @@ import org.apache.sis.measure.Units;
  *   followed by small corrections for the residual part.
  *   {@code DatumShiftGrid} can describe the small corrections part.
  *   </li>
- * </ul></div>
- *
- * Implementations of this class shall be immutable and thread-safe.
+ * </ul>
  *
  * <h2>Number of dimensions</h2>
  * Input coordinates and translation vectors can have any number of dimensions. However, in the current implementation,
@@ -141,6 +139,9 @@ import org.apache.sis.measure.Units;
  * same version of Apache SIS. But for long term storage, an established datum shift grid format like
  * NTv2 should be preferred.
  *
+ * <h2>Multi-threading</h2>
+ * Implementations of this class shall be immutable and thread-safe.
+ *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
  *
@@ -167,10 +168,10 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      * <code>{@linkplain #interpolateInCell(double, double, double[]) interpolateInCell}(x, y, …)</code>,
      * <code>{@linkplain #derivativeInCell(double, double) derivativeInCell}(x, y)</code>.
      *
-     * <div class="note"><b>Future evolution:</b>
-     * if this class is generalized to more source dimensions in a future Apache SIS version, then this field
+     * <h4>Future evolution</h4>
+     * If this class is generalized to more source dimensions in a future Apache SIS version, then this field
      * may be deprecated or its value changed. That change would be accompanied by new methods with different
-     * signature. This field can be used as a way to detect that such change occurred.</div>
+     * signature. This field can be used as a way to detect that such change occurred.
      *
      * @since 1.0
      */
@@ -277,9 +278,8 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      * Returns the number of cells along each axis in the grid.
      * The length of this array is the number of grid dimensions, which is typically {@value #INTERPOLATED_DIMENSIONS}.
      * The grid dimensions shall be equal to {@link #getCoordinateToGrid() coordinateToGrid} target dimensions.
-     *
-     * <div class="note"><b>Note:</b> the number of grid dimensions is not necessarily equal to the
-     * {@linkplain #getTranslationDimensions() number of dimension of the translation vectors}.</div>
+     * That number of grid dimensions is not necessarily equal to the
+     * {@linkplain #getTranslationDimensions() number of dimension of the translation vectors}.
      *
      * @return the number of cells along each axis in the grid.
      */
@@ -692,10 +692,10 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      * The default implementation computes the average of all values returned by
      * {@link #getCellValue getCellValue(dim, …)}, but subclasses may override with more specific values.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * In the <cite>"France geocentric interpolation"</cite> (ESPG:9655) operation method, those "average" values
      * are fixed by definition to -168, -60 and +320 metres for dimensions 0, 1 and 2 respectively
-     * (geocentric <var>X</var>, <var>Y</var> and <var>Z</var>).</div>
+     * (geocentric <var>X</var>, <var>Y</var> and <var>Z</var>).
      *
      * @param  dim  the dimension for which to get an average translation value,
      *              from 0 inclusive to {@link #getTranslationDimensions()} exclusive.
@@ -829,15 +829,15 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      *       determines how many matrix or tensor parameters appear.</li>
      * </ul>
      *
-     * <div class="note"><b>Example 1:</b>
+     * <h4>Example 1</h4>
      * if this {@code DatumShiftGrid} instance has been created for performing NADCON datum shifts,
      * then this method returns a group named "NADCON" with two parameters:
      * <ul>
      *   <li>A parameter of type {@link java.nio.file.Path} named “Latitude difference file”.</li>
      *   <li>A parameter of type {@link java.nio.file.Path} named “Longitude difference file”.</li>
-     * </ul></div>
+     * </ul>
      *
-     * <div class="note"><b>Example 2:</b>
+     * <h4>Example 2</h4>
      * if this {@code DatumShiftGrid} instance has been created by
      * {@link org.apache.sis.referencing.operation.builder.LocalizationGridBuilder},
      * then this method returns a group named "Localization grid" with four parameters:
@@ -846,7 +846,7 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      *   <li>A parameter of type {@link Integer} named “num_col” for the number of columns in each matrix.</li>
      *   <li>A parameter of type {@link Matrix} named “grid_x”.</li>
      *   <li>A parameter of type {@link Matrix} named “grid_y”.</li>
-     * </ul></div>
+     * </ul>
      *
      * @return a description of the values in this grid.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
index 31ff7a650d..578b4156c1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
@@ -323,10 +323,10 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code Ellipsoid.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code Ellipsoid}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code Ellipsoid.class} or a user-defined sub-interface.
      */
@@ -412,11 +412,9 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
 
     /**
      * Returns the square of the {@link #getEccentricity() eccentricity} value.
-     *
-     * <div class="note"><b>Purpose:</b>
-     * this convenience method is provided because ℯ² is frequently used in coordinate operations,
+     * This convenience method is provided because ℯ² is frequently used in coordinate operations,
      * actually more often than ℯ. This convenience method avoids the cost of computing the square
-     * root when not needed.</div>
+     * root when not needed.
      *
      * @return ℯ², the square of the eccentricity value.
      *
@@ -445,11 +443,10 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
      * or the semi-minor axis length. The defining parameters are presumed fully accurate in base 10 (even if this
      * is of course not possible in the reality), because those parameters are definitions given by authorities.
      *
-     * <div class="note"><b>Analogy:</b>
-     * the conversion factor from inches to centimetres is 2.54 <em>by definition</em>. Even if we could find a more
+     * <h4>Analogy</h4>
+     * The conversion factor from inches to centimetres is 2.54 <em>by definition</em>. Even if we could find a more
      * accurate value matching historical measurements, the 2.54 value is the internationally agreed value for all
      * conversions. This value is (by convention) defined in base 10 and has no exact {@code double} representation.
-     * </div>
      */
     private static DoubleDouble flattening(final Ellipsoid e) {
         final boolean decimal = true;       // Parameters are presumed accurate in base 10 (not 2) by definition.
@@ -511,9 +508,9 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
      * If the two ellipsoid does not use the same unit of measurement, than the axis
      * length of the other ellipsoid is converted into the units of this ellipsoid axis.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@code WGS84.semiMajorAxisDifference(ED50)} returns 251 metres. This information is a parameter of
-     * {@linkplain org.apache.sis.referencing.operation.transform.MolodenskyTransform Molodensky transformations}.</div>
+     * {@linkplain org.apache.sis.referencing.operation.transform.MolodenskyTransform Molodensky transformations}.
      *
      * @param  other  the other ellipsoid from which to get semi-major axis length difference.
      * @return (<var>other</var> ellipsoid semi-major axis) - (<var>this</var> ellipsoid semi-major axis).
@@ -532,9 +529,9 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
      * Returns the difference between the flattening factor of two ellipsoids.
      * This method returns 0 if the two ellipsoids are equal.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@code WGS84.flatteningDifference(ED50)} returns approximately 1.41927E-05. This information is a parameter of
-     * {@linkplain org.apache.sis.referencing.operation.transform.MolodenskyTransform Molodensky transformations}.</div>
+     * {@linkplain org.apache.sis.referencing.operation.transform.MolodenskyTransform Molodensky transformations}.
      *
      * @param  other  the other ellipsoid from which to get flattening difference.
      * @return (<var>other</var> ellipsoid flattening) - (<var>this</var> ellipsoid flattening).
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEngineeringDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEngineeringDatum.java
index b187e17a72..b1a5c8fdbe 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEngineeringDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEngineeringDatum.java
@@ -150,10 +150,10 @@ public class DefaultEngineeringDatum extends AbstractDatum implements Engineerin
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code EngineeringDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code EngineeringDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code EngineeringDatum.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
index 1e1b836808..36c42fe79f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
@@ -328,10 +328,10 @@ public class DefaultGeodeticDatum extends AbstractDatum implements GeodeticDatum
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code GeodeticDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code GeodeticDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code GeodeticDatum.class} or a user-defined sub-interface.
      */
@@ -533,10 +533,9 @@ public class DefaultGeodeticDatum extends AbstractDatum implements GeodeticDatum
      * The meridian can be safely ignored in the datum name because the {@link PrimeMeridian} object is already
      * compared by the {@link #equals(Object)} method.
      *
-     * <div class="note"><b>Example:</b>
-     * if the datum name is <cite>"Nouvelle Triangulation Française (Paris)"</cite> and the prime meridian name is
+     * <h4>Example</h4>
+     * If the datum name is <cite>"Nouvelle Triangulation Française (Paris)"</cite> and the prime meridian name is
      * <cite>"Paris"</cite>, then this method compares only the <cite>"Nouvelle Triangulation Française"</cite> part.
-     * </div>
      *
      * <h4>Future evolutions</h4>
      * This method implements heuristic rules learned from experience while trying to provide inter-operability
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
index cd0ab61219..e7440b8f6c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
@@ -171,10 +171,10 @@ public class DefaultImageDatum extends AbstractDatum implements ImageDatum {
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ImageDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ImageDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with
-     * their own set of interfaces.</div>
+     * their own set of interfaces.
      *
      * @return {@code ImageDatum.class} or a user-defined sub-interface.
      */
@@ -236,8 +236,8 @@ public class DefaultImageDatum extends AbstractDatum implements ImageDatum {
     /**
      * Formats this datum as a <cite>Well Known Text</cite> {@code ImageDatum[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code ImageDatum} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code ImageDatum} is defined in the WKT 2 specification only.
      *
      * @return {@code "ImageDatum"}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
index 6fb2a5b3d6..3c4ca0e130 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
@@ -161,10 +161,10 @@ public class DefaultParametricDatum extends AbstractDatum implements ParametricD
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ParametricDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code TemporalDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code ParametricDatum.class} or a user-defined sub-interface.
      */
@@ -176,8 +176,8 @@ public class DefaultParametricDatum extends AbstractDatum implements ParametricD
     /**
      * Formats this datum as a <cite>Well Known Text</cite> {@code ParametricDatum[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code ParametricDatum} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code ParametricDatum} is defined in the WKT 2 specification only.
      *
      * @return {@code "ParametricDatum"}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
index 7ac6d72f53..02c76fc272 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
@@ -200,10 +200,10 @@ public class DefaultPrimeMeridian extends AbstractIdentifiedObject implements Pr
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code PrimeMeridian.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code PrimeMeridian}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code PrimeMeridian.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
index 37a8f5b1c3..973732e6b8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
@@ -197,10 +197,10 @@ public class DefaultTemporalDatum extends AbstractDatum implements TemporalDatum
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code TemporalDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code TemporalDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code TemporalDatum.class} or a user-defined sub-interface.
      */
@@ -264,8 +264,8 @@ public class DefaultTemporalDatum extends AbstractDatum implements TemporalDatum
     /**
      * Formats this datum as a <cite>Well Known Text</cite> {@code TimeDatum[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code TimeDatum} is defined in the WKT 2 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code TimeDatum} is defined in the WKT 2 specification only.
      *
      * @return {@code "TimeDatum"}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
index 899ffc0141..e4435cf2d4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
@@ -198,10 +198,10 @@ public class DefaultVerticalDatum extends AbstractDatum implements VerticalDatum
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code VerticalDatum.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code VerticalDatum}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code VerticalDatum.class} or a user-defined sub-interface.
      */
@@ -236,11 +236,11 @@ public class DefaultVerticalDatum extends AbstractDatum implements VerticalDatum
     /**
      * Returns the type of this vertical datum.
      *
-     * <div class="note"><b>Historical note:</b>
-     * this property was defined in the ISO 19111 specification published in 2003,
+     * <h4>Historical note:</h4>
+     * This property was defined in the ISO 19111 specification published in 2003,
      * but removed from the revision published 2007.
      * This property provides an information similar to the {@linkplain #getAnchorPoint() anchor definition},
-     * but in a programmatic way more suitable to coordinate transformation engines.</div>
+     * but in a programmatic way more suitable to coordinate transformation engines.
      *
      * @return the type of this vertical datum.
      */
@@ -300,11 +300,11 @@ public class DefaultVerticalDatum extends AbstractDatum implements VerticalDatum
     /**
      * Formats this datum as a <cite>Well Known Text</cite> {@code VerticalDatum[…]} element.
      *
-     * <div class="note"><b>Compatibility note:</b>
+     * <h4>Compatibility note</h4>
      * OGC 01-009 defined numerical codes for various vertical datum types, for example 2005 for geoidal height
      * and 2002 for ellipsoidal height. Such codes were formatted for all {@code Datum} subtypes in WKT 1.
      * Datum types became provided only for vertical datum in the ISO 19111:2003 specification, then removed
-     * completely in ISO 19111:2007.</div>
+     * completely in ISO 19111:2007.
      *
      * @return {@code "VerticalDatum"} (WKT 2) or {@code "Vert_Datum"} (WKT 1).
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryIdentifier.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryIdentifier.java
index 047b2fb21b..32dd41c8e3 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryIdentifier.java
@@ -102,8 +102,8 @@ final class AuthorityFactoryIdentifier {
      * The authority of the factory, in upper case. The upper case policy should be kept
      * consistent with {@link org.apache.sis.internal.metadata.NameMeaning#AUTHORITIES}.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "EPSG"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "EPSG"}.
      *
      * @see org.apache.sis.internal.util.DefinitionURI
      * @see org.apache.sis.internal.metadata.NameMeaning
@@ -114,8 +114,8 @@ final class AuthorityFactoryIdentifier {
      * The version part of a URI, or {@code null} if none.
      * If the version contains alphabetic characters, they should be in lower case.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "8.2"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "8.2"}.
      *
      * @see #hasVersion()
      * @see #unversioned(String)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/FactoryDataException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/FactoryDataException.java
index 71ab79cdc1..d79afb6e17 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/FactoryDataException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/FactoryDataException.java
@@ -22,8 +22,8 @@ import org.opengis.util.FactoryException;
 /**
  * Thrown when a factory contains invalid data.
  *
- * <div class="note"><b>Example:</b>
- * an EPSG database record containing a null value in a column where nulls should not have been allowed.</div>
+ * <h2>Example</h2>
+ * An EPSG database record containing a null value in a column where nulls should not have been allowed.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.2
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
index 71a7c5325a..184ec4b94a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
@@ -117,7 +117,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * the authority {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation#getIdentifiers() identifier},
      * but not always.</p>
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul class="verbose">
      *   <li>The {@link org.apache.sis.referencing.factory.sql.EPSGFactory} authority identifier is {@code "EPSG"}
      *       and its {@code getCodeSpaces()} method returns a set containing {@code "EPSG"}. So in this example,
@@ -132,8 +132,9 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <li>The {@link CommonAuthorityFactory} authority identifiers are ISO 19128 and OGC 06-042 (the WMS specification)
      *       but its {@code getCodeSpaces()} method returns a set containing {@code "CRS"}, {@code "AUTO"} and {@code "AUTO2"}.
      *       While ISO 19128 is defined as the first authority, the namespace is actually defined by OGC.</li>
-     * </ul></div>
+     * </ul>
      *
+     * <h4>Default implementation</h4>
      * The default implementation infers the namespace from the {@linkplain #getAuthority() authority}.
      * Subclasses can override this method, but the set should always contain the same elements during
      * all factory lifetime.
@@ -199,8 +200,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * <code>createCoordinateReferenceSystem(code)</code> if the caller know he is asking for a
      * {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic coordinate reference system}).
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * Two frequently used authorities are "CRS" and "EPSG", which include the following codes:
      *
@@ -215,7 +216,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:5714</td> <td>Vertical</td>      <td>Mean Sea Level height</td></tr>
      *   <tr><td>EPSG:6349</td> <td>Compound</td>      <td>NAD83(2011) + NAVD88 height</td></tr>
      *   <tr><td>EPSG:5800</td> <td>Engineering</td>   <td>Astra Minas Grid</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -240,8 +241,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * This provides an accurate representation of the geometry of geographic features
      * for a large portion of the earth's surface.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * Two frequently used authorities are "CRS" and "EPSG", which include the following codes:
      *
@@ -260,7 +261,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:4230</td> <td>Geographic</td>    <td>European Datum 1950</td></tr>
      *   <tr><td>EPSG:4258</td> <td>Geographic</td>    <td>European Terrestrial Reference Frame 1989</td></tr>
      *   <tr><td>EPSG:4937</td> <td>Geographic 3D</td> <td>European Terrestrial Reference Frame 1989</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -284,8 +285,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * A geocentric CRS deals with the earth's curvature by taking a 3-dimensional spatial view, which obviates
      * the need to model the earth's curvature.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -295,7 +296,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:4936</td> <td>European Terrestrial Reference Frame 1989</td></tr>
      *   <tr><td>EPSG:4978</td> <td>World Geodetic System 1984</td></tr>
      *   <tr><td>EPSG:4984</td> <td>World Geodetic System 1972</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -319,8 +320,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Distortion correction is commonly applied to calculated bearings and distances to produce values
      * that are a close match to actual field values.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which contains more than 4000 codes for projected CRS.
      * Some of them are:
@@ -331,7 +332,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:3034</td> <td>ETRS89 / Lambert Conic Conformal Europe</td></tr>
      *   <tr><td>EPSG:3395</td> <td>WGS 84 / World Mercator</td></tr>
      *   <tr><td>EPSG:6350</td> <td>NAD83(2011) / Conus Albers Equal Area</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -353,8 +354,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Vertical CRSs make use of the direction of gravity to define the concept of height or depth,
      * but the relationship with gravity may not be straightforward.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -363,7 +364,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><th>Code</th>      <th>Description</th></tr>
      *   <tr><td>EPSG:5715</td> <td>Mean Sea Level depth</td></tr>
      *   <tr><td>EPSG:5714</td> <td>Mean Sea Level height</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -421,8 +422,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a CRS describing the position of points through two or more independent coordinate reference systems.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -431,7 +432,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><th>Code</th>      <th>Description</th></tr>
      *   <tr><td>EPSG:6349</td> <td>NAD83(2011) + NAVD88 height</td></tr>
      *   <tr><td>EPSG:7423</td> <td>ETRS89 + EVRF2007 height</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -470,8 +471,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a 1-, 2- or 3-dimensional contextually local coordinate reference system.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -479,7 +480,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * <caption>Authority codes examples</caption>
      *   <tr><th>Code</th>      <th>Description</th></tr>
      *   <tr><td>EPSG:5800</td> <td>Astra Minas Grid</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateReferenceSystem(String)} and casts the result.
@@ -521,8 +522,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * instance of {@link GeodeticDatum}, {@link VerticalDatum} or {@link TemporalDatum}.
      * If the datum is known at compile time, it is recommended to invoke the most precise method instead of this one.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which contains hundred of datum. Some of them are:
      *
@@ -534,7 +535,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:1027</td> <td>Vertical</td>    <td>EGM2008 geoid</td></tr>
      *   <tr><td>EPSG:5100</td> <td>Vertical</td>    <td>Mean Sea Level</td></tr>
      *   <tr><td>EPSG:9315</td> <td>Engineering</td> <td>Seismic bin grid datum</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -556,8 +557,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Geodetic datum are used together with ellipsoidal coordinate system, and also with Cartesian coordinate system
      * centered in the ellipsoid (or sphere).
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which contains hundred of datum. Some of them are:
      *
@@ -568,7 +569,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:6322</td> <td>World Geodetic System 1972</td></tr>
      *   <tr><td>EPSG:6269</td> <td>North American Datum 1983</td></tr>
      *   <tr><td>EPSG:6258</td> <td>European Terrestrial Reference System 1989</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createDatum(String)} and casts the result.
@@ -591,8 +592,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * There are several types of vertical datums, and each may place constraints on the axis with which
      * it is combined to create a vertical CRS.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -603,7 +604,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:1027</td> <td>EGM2008 geoid</td></tr>
      *   <tr><td>EPSG:1131</td> <td>Japanese Geodetic Datum 2011 (vertical)</td></tr>
      *   <tr><td>EPSG:5215</td> <td>European Vertical Reference Frame 2007</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createDatum(String)} and casts the result.
@@ -663,8 +664,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * An engineering datum is used in a region around that origin.
      * This origin can be fixed with respect to the earth or be a defined point on a moving vehicle.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -673,7 +674,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><th>Code</th>      <th>Description</th></tr>
      *   <tr><td>EPSG:9315</td> <td>Seismic bin grid datum</td></tr>
      *   <tr><td>EPSG:9300</td> <td>Astra Minas</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createDatum(String)} and casts the result.
@@ -714,8 +715,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Creates a geometric figure that can be used to describe the approximate shape of the earth.
      * In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -725,7 +726,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:7030</td> <td>WGS 84</td></tr>
      *   <tr><td>EPSG:7034</td> <td>Clarke 1880</td></tr>
      *   <tr><td>EPSG:7048</td> <td>GRS 1980 Authalic Sphere</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -746,8 +747,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a prime meridian defining the origin from which longitude values are determined.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -759,7 +760,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:8904</td> <td>Bogota</td></tr>
      *   <tr><td>EPSG:8905</td> <td>Madrid</td></tr>
      *   <tr><td>EPSG:8906</td> <td>Rome</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -780,8 +781,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates information about spatial, vertical, and temporal extent (usually a domain of validity) from a code.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -790,7 +791,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><th>Code</th>      <th>Description</th></tr>
      *   <tr><td>EPSG:1262</td> <td>World</td></tr>
      *   <tr><td>EPSG:3391</td> <td>World - between 80°S and 84°N</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -813,8 +814,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * If the coordinate system is known at compile time, it is recommended to invoke the most precise
      * method instead of this one.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -826,7 +827,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:6423</td> <td>Ellipsoidal 3D CS</td> <td>latitude, longitude, ellipsoidal height</td> <td>north, east, up</td> <td>degree, degree, metre</td></tr>
      *   <tr><td>EPSG:6404</td> <td>Spherical 3D CS</td>   <td>latitude, longitude, radius</td>             <td>north, east, up</td> <td>degree, degree, metre</td></tr>
      *   <tr><td>EPSG:6499</td> <td>Vertical CS</td>       <td>height (H)</td>                              <td>up</td>              <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -848,8 +849,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Creates a 2- or 3-dimensional coordinate system for geodetic latitude and longitude,
      * sometimes with ellipsoidal height.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -860,7 +861,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:6424</td> <td>longitude, latitude</td>                     <td>east, north</td>     <td>degree</td></tr>
      *   <tr><td>EPSG:6429</td> <td>longitude, latitude</td>                     <td>east, north</td>     <td>radian</td></tr>
      *   <tr><td>EPSG:6423</td> <td>latitude, longitude, ellipsoidal height</td> <td>north, east, up</td> <td>degree, degree, metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateSystem(String)} and casts the result.
@@ -880,8 +881,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a 1-dimensional coordinate system for heights or depths of points.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -890,7 +891,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><th>Code</th>      <th>Axes</th>       <th>Orientations</th> <th>Unit</th></tr>
      *   <tr><td>EPSG:6498</td> <td>depth (D)</td>  <td>down</td>         <td>metre</td></tr>
      *   <tr><td>EPSG:6499</td> <td>height (H)</td> <td>up</td>           <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateSystem(String)} and casts the result.
@@ -948,8 +949,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Creates a 2- or 3-dimensional Cartesian coordinate system made of straight orthogonal axes.
      * All axes shall have the same linear unit of measure.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -960,7 +961,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:4496</td> <td>easting, northing (E,N)</td> <td>east, north</td>  <td>metre</td></tr>
      *   <tr><td>EPSG:4500</td> <td>northing, easting (N,E)</td> <td>north, east</td>  <td>metre</td></tr>
      *   <tr><td>EPSG:4491</td> <td>westing, northing (W,N)</td> <td>west, north</td>  <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateSystem(String)} and casts the result.
@@ -981,8 +982,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Creates a 3-dimensional coordinate system with one distance measured from the origin and two angular coordinates.
      * Not to be confused with an ellipsoidal coordinate system based on an ellipsoid "degenerated" into a sphere.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -990,7 +991,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * <caption>Authority codes examples</caption>
      *   <tr><th>Code</th>      <th>Axes</th>                        <th>Orientations</th>    <th>Unit</th></tr>
      *   <tr><td>EPSG:6404</td> <td>latitude, longitude, radius</td> <td>north, east, up</td> <td>degree, degree, metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createCoordinateSystem(String)} and casts the result.
@@ -1048,8 +1049,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a coordinate system axis with name, direction, unit and range of values.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -1060,7 +1061,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:107</td>  <td>Longitude (λ)</td> <td>degree</td></tr>
      *   <tr><td>EPSG:1</td>    <td>Easting (E)</td>   <td>metre</td></tr>
      *   <tr><td>EPSG:2</td>    <td>Northing (N)</td>  <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -1082,8 +1083,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates an unit of measurement from a code.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -1097,7 +1098,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:1029</td> <td>year</td></tr>
      * </table>
      *
-     * See {@link org.apache.sis.measure.Units#valueOfEPSG(int)} for a more complete list of codes.</div>
+     * See {@link org.apache.sis.measure.Units#valueOfEPSG(int)} for a more complete list of codes.
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -1117,8 +1118,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
     /**
      * Creates a definition of a single parameter used by an operation method.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -1130,7 +1131,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:8805</td> <td>Scale factor at natural origin</td></tr>
      *   <tr><td>EPSG:8806</td> <td>False easting</td></tr>
      *   <tr><td>EPSG:8807</td> <td>False northing</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
@@ -1181,8 +1182,8 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      * Coordinate operations contain a {@linkplain org.apache.sis.referencing.operation.transform.AbstractMathTransform
      * math transform}, which does the actual work of transforming coordinates.
      *
-     * <div class="note"><b>Example:</b>
-     * the {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
+     * <h4>Examples</h4>
+     * The {@linkplain #getAuthorityCodes(Class) set of available codes} depends on the defining
      * {@linkplain #getAuthority() authority} and the {@code GeodeticAuthorityFactory} subclass in use.
      * A frequently used authority is "EPSG", which includes the following codes:
      *
@@ -1193,7 +1194,7 @@ public abstract class GeodeticAuthorityFactory extends AbstractFactory implement
      *   <tr><td>EPSG:1241</td> <td>NAD27 to NAD83 (1)</td></tr>
      *   <tr><td>EPSG:1173</td> <td>NAD27 to WGS 84 (4)</td></tr>
      *   <tr><td>EPSG:6326</td> <td>NAD83(2011) to NAVD88 height (1)</td></tr>
-     * </table></div>
+     * </table>
      *
      * <h4>Default implementation</h4>
      * The default implementation delegates to {@link #createObject(String)} and casts the result.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
index 527e0811cb..5d721fdbc5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
@@ -329,8 +329,8 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * An {@linkplain #createGeocentricCRS(Map, GeodeticDatum, SphericalCS) alternate method} allows creation of the
      * same kind of CRS with spherical coordinate system instead of a Cartesian one.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createCartesianCS(Map, CoordinateSystemAxis, CoordinateSystemAxis, CoordinateSystemAxis)}</li>
@@ -340,7 +340,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      *   </ul></li>
      *   <li>{@link #createPrimeMeridian(Map, double, Unit)}</li>
      *   <li>{@link #createGeodeticDatum(Map, Ellipsoid, PrimeMeridian)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultGeocentricCRS} instance.
      *
@@ -369,11 +369,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a three-dimensional Cartesian coordinate system from the given set of axis.
      * This coordinate system can be used with geocentric, engineering and derived CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultCartesianCS} instance.
      *
@@ -407,8 +407,8 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * An {@linkplain #createGeocentricCRS(Map, GeodeticDatum, CartesianCS) alternate method} allows creation of the
      * same kind of CRS with Cartesian coordinate system instead of a spherical one.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createSphericalCS(Map, CoordinateSystemAxis, CoordinateSystemAxis, CoordinateSystemAxis)}</li>
@@ -418,7 +418,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      *   </ul></li>
      *   <li>{@link #createPrimeMeridian(Map, double, Unit)}</li>
      *   <li>{@link #createGeodeticDatum(Map, Ellipsoid, PrimeMeridian)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultGeocentricCRS} instance.
      *
@@ -447,11 +447,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a spherical coordinate system from the given set of axis.
      * This coordinate system can be used with geocentric, engineering and derived CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultSphericalCS} instance.
      *
@@ -483,8 +483,8 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a geographic coordinate reference system. It can be (<var>latitude</var>, <var>longitude</var>)
      * or (<var>longitude</var>, <var>latitude</var>), optionally with an ellipsoidal height.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>One of:<ul>
@@ -497,7 +497,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      *   </ul></li>
      *   <li>{@link #createPrimeMeridian(Map, double, Unit)}</li>
      *   <li>{@link #createGeodeticDatum(Map, Ellipsoid, PrimeMeridian)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultGeographicCRS} instance.
      *
@@ -527,15 +527,15 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Geodetic datum defines the location and orientation of an ellipsoid that approximates the shape of the earth.
      * This datum can be used with geographic, geocentric and engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>One of:<ul>
      *     <li>{@link #createEllipsoid(Map, double, double, Unit)}</li>
      *     <li>{@link #createFlattenedSphere(Map, double, double, Unit)}</li>
      *   </ul></li>
      *   <li>{@link #createPrimeMeridian(Map, double, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultGeodeticDatum} instance.
      *
@@ -591,11 +591,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates an ellipsoidal coordinate system without ellipsoidal height.
      * It can be (<var>latitude</var>, <var>longitude</var>) or (<var>longitude</var>, <var>latitude</var>).
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultEllipsoidalCS} instance.
      *
@@ -626,11 +626,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * It can be (<var>latitude</var>, <var>longitude</var>, <var>height</var>)
      * or (<var>longitude</var>, <var>latitude</var>, <var>height</var>).
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultEllipsoidalCS} instance.
      *
@@ -717,8 +717,8 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Projected CRS are used to approximate the shape of the earth on a planar surface in such a way
      * that the distortion that is inherent to the approximation is controlled and known.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createCartesianCS(Map, CoordinateSystemAxis, CoordinateSystemAxis)}</li>
@@ -731,7 +731,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      *   <li>{@link #createGeodeticDatum(Map, Ellipsoid, PrimeMeridian)}</li>
      *   <li>{@link #createGeographicCRS(Map, GeodeticDatum, EllipsoidalCS)}</li>
      *   <li>{@link org.apache.sis.referencing.operation.DefaultCoordinateOperationFactory#createDefiningConversion(Map, OperationMethod, ParameterValueGroup)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The supplied {@code conversion} argument shall <strong>not</strong> includes the operation steps
      * for performing {@linkplain org.apache.sis.referencing.cs.CoordinateSystems#swapAndScaleAxes unit
@@ -771,11 +771,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a two-dimensional Cartesian coordinate system from the given pair of axis.
      * This coordinate system can be used with projected, engineering and derived CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultCartesianCS} instance.
      *
@@ -807,14 +807,14 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * {@link TemporalCRS} or {@link EngineeringCRS} interface depending on the type of the base CRS and the
      * coordinate system.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>A {@code createFooCS(…)} method for Cartesian, spherical, ellipsoidal, vertical, temporal, linear, affine, polar, cylindrical or user-defined CS.</li>
      *   <li>Another {@code createFooCRS(…)} method for geocentric, geographic, vertical, temporal or engineering CRS.</li>
      *   <li>{@link org.apache.sis.referencing.operation.DefaultCoordinateOperationFactory#createDefiningConversion(Map, OperationMethod, ParameterValueGroup)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The supplied {@code conversion} argument shall <strong>not</strong> includes the operation steps
      * for performing {@linkplain org.apache.sis.referencing.cs.CoordinateSystems#swapAndScaleAxes unit
@@ -856,13 +856,13 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Vertical CRSs make use of the direction of gravity to define the concept of height or depth,
      * but the relationship with gravity may not be straightforward.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createVerticalCS(Map, CoordinateSystemAxis)}</li>
      *   <li>{@link #createVerticalDatum(Map, VerticalDatumType)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultVerticalCRS} instance.
      *
@@ -915,11 +915,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a vertical coordinate system.
      * This coordinate system can be used with vertical and derived CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultVerticalCS} instance.
      *
@@ -946,13 +946,13 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
     /**
      * Creates a temporal coordinate reference system.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createTimeCS(Map, CoordinateSystemAxis)}</li>
      *   <li>{@link #createTemporalDatum(Map, Date)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultTemporalCRS} instance.
      *
@@ -1005,11 +1005,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a temporal coordinate system.
      * This coordinate system can be used with temporal and derived CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultTimeCS} instance.
      *
@@ -1038,13 +1038,13 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Parametric CRS can be used for physical properties or functions that vary monotonically with height.
      * A typical example is the pressure in meteorological applications.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>{@link #createParametricCS(Map, CoordinateSystemAxis)}</li>
      *   <li>{@link #createParametricDatum(Map)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultParametricCRS} instance.
      *
@@ -1096,11 +1096,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a parametric coordinate system.
      * This coordinate system can be used only with parametric CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultParametricCS} instance.
      *
@@ -1209,11 +1209,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a two-dimensional affine coordinate system from the given pair of axis.
      * This coordinate system can be used with image and engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultAffineCS} instance.
      *
@@ -1247,13 +1247,13 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      *   <li>CRSs on moving platforms such as road vehicles, vessels, aircraft, or spacecraft.</li>
      * </ul>
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
      *   <li>A {@code createFooCS(…)} method for Cartesian, spherical, linear, affine, polar, cylindrical or user-defined CS.</li>
      *   <li>{@link #createEngineeringDatum(Map)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultEngineeringCRS} instance.
      *
@@ -1305,11 +1305,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a three-dimensional affine coordinate system from the given set of axis.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultAffineCS} instance.
      *
@@ -1340,11 +1340,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a cylindrical coordinate system from the given set of axis.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultCylindricalCS} instance.
      *
@@ -1376,11 +1376,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a polar coordinate system from the given pair of axis.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultPolarCS} instance.
      *
@@ -1410,11 +1410,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a linear coordinate system.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultLinearCS} instance.
      *
@@ -1441,11 +1441,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a two-dimensional user defined coordinate system from the given pair of axis.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultUserDefinedCS} instance.
      *
@@ -1474,11 +1474,11 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * Creates a three-dimensional user defined coordinate system from the given set of axis.
      * This coordinate system can be used with engineering CRS.
      *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
+     * <h4>Dependencies</h4>
+     * The components needed by this method can be created by the following methods:
      * <ol>
      *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
+     * </ol>
      *
      * The default implementation creates a {@link DefaultUserDefinedCS} instance.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
index 789e076243..d56fe31052 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
@@ -80,15 +80,14 @@ public class IdentifiedObjectFinder {
          * Fast lookup based only on embedded identifiers and names. If those identification information
          * does not allow to locate an object in the factory, then the search will return an empty set.
          *
-         * <div class="note"><b>Example:</b>
-         * if {@link IdentifiedObjectFinder#find(IdentifiedObject)} is invoked with an object having the {@code "4326"}
+         * <h4>Example</h4>
+         * If {@link IdentifiedObjectFinder#find(IdentifiedObject)} is invoked with an object having the {@code "4326"}
          * {@linkplain AbstractIdentifiedObject#getIdentifiers() identifier}, then the {@code find(…)} method will invoke
          * <code>factory.{@linkplain GeodeticAuthorityFactory#createGeographicCRS(String) createGeographicCRS}("4326")</code>
          * and compare the object from the factory with the object to search.
          * If the objects do not match, then another attempt will be done using the
          * {@linkplain AbstractIdentifiedObject#getName() object name}. If using name does not work neither,
          * then {@code find(…)} method makes no other attempt and returns an empty set.
-         * </div>
          */
         DECLARATION,
 
@@ -98,13 +97,12 @@ public class IdentifiedObjectFinder {
          * If the fast lookup gave no result, then a more extensive search is performed by scanning the content
          * of the dataset.
          *
-         * <div class="note"><b>Example:</b>
-         * if {@link IdentifiedObjectFinder#find(IdentifiedObject)} is invoked with an object equivalent to the
+         * <h4>Example</h4>
+         * If {@link IdentifiedObjectFinder#find(IdentifiedObject)} is invoked with an object equivalent to the
          * {@linkplain org.apache.sis.referencing.CommonCRS#WGS84 WGS84} geographic CRS but does not declare the
          * {@code "4326"} identifier and does not have the <cite>"WGS 84"</cite> name, then the search based on
          * {@link #DECLARATION} will give no result. The {@code find(…)} method will then scan the dataset for
          * geographic CRS using equivalent datum and coordinate system. This may be a costly operation.
-         * </div>
          *
          * This is the default domain of {@link IdentifiedObjectFinder}.
          */
@@ -120,13 +118,13 @@ public class IdentifiedObjectFinder {
          * If axis order is <em>not</em> ignored, then this domain usually has no advantage over {@link #VALID_DATASET}
          * (unless the geodetic dataset contains duplicated entries) to justify the performance cost.</p>
          *
-         * <div class="note"><b>Use case:</b>
-         * the EPSG database sometimes contains two definitions for almost identical geographic CRS,
+         * <h4>Use case</h4>
+         * The EPSG database sometimes contains two definitions for almost identical geographic CRS,
          * one with (<var>latitude</var>, <var>longitude</var>) axis order and one with reverse order
          * (e.g. EPSG::4171 versus EPSG::7084). It is sometimes useful to know all variants of a given CRS.
          * The {@link #VALID_DATASET} domain may not give a complete set because the "fast lookup by identifier"
          * optimization may prevent {@link IdentifiedObjectFinder} to scan the rest of the database.
-         * This {@code EXHAUSTIVE_VALID_DATASET} domain forces such scan.</div>
+         * This {@code EXHAUSTIVE_VALID_DATASET} domain forces such scan.
          *
          * @since 1.2
          */
@@ -181,9 +179,9 @@ public class IdentifiedObjectFinder {
     /**
      * Creates a finder using the specified factory.
      *
-     * <div class="note"><b>API note:</b>
-     * this constructor is protected because instances of this class should not be created directly.
-     * Use {@link GeodeticAuthorityFactory#newIdentifiedObjectFinder()} instead.</div>
+     * <h4>API note</h4>
+     * This constructor is protected because instances of this class should not be created directly.
+     * Use {@link GeodeticAuthorityFactory#newIdentifiedObjectFinder()} instead.
      *
      * @param  factory  the factory to scan for the identified objects.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
index 94623b0880..cfac0d88ac 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
@@ -210,11 +210,11 @@ public class IdentifiedObjectSet<T extends IdentifiedObject> extends AbstractSet
      * instance if it was already created. Otherwise objects will be {@linkplain #createObject(String) created}
      * only when first needed.
      *
-     * <div class="note"><b>Purpose:</b>
-     * this method is typically used together with {@link #getAuthorityCodes()} for altering the iteration order
+     * <h4>Use case</h4>
+     * This method is typically used together with {@link #getAuthorityCodes()} for altering the iteration order
      * on the basis of authority codes. If the specified {@code codes} sequence contains the same elements than
      * the ones in the array returned by {@link #getAuthorityCodes()} but in a different order, then this method
-     * just sets the new ordering.</div>
+     * just sets the new ordering.
      *
      * @param  codes the authority codes of identified objects to store in this set.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/InvalidGeodeticParameterException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/InvalidGeodeticParameterException.java
index 6d64823e84..e5b91e9094 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/InvalidGeodeticParameterException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/InvalidGeodeticParameterException.java
@@ -25,9 +25,8 @@ import org.opengis.util.FactoryException;
  * like semi-major or semi-minor axis length, latitude of natural origin, <i>etc</i>.
  * The cause may be a parameter having an illegal value, or a mandatory parameter which has not been specified.
  *
- * <div class="note"><b>Note:</b>
- * this exception is not for invalid authority codes. For such cases, see
- * {@link org.opengis.referencing.NoSuchAuthorityCodeException} instead.</div>
+ * <p>This exception is not for invalid authority codes. For such cases, see
+ * {@link org.opengis.referencing.NoSuchAuthorityCodeException} instead.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
index 3a06624a40..7c585fe349 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
@@ -91,13 +91,14 @@ import org.apache.sis.util.collection.BackingStoreException;
  * delegating to a more specific method, never for delegating to a less specific method.
  * An exception will be thrown if the type in the URN is incompatible with the invoked method.
  *
- * <div class="note"><b>Example:</b>
- * if <code>{@linkplain #createObject(String) createObject}("urn:ogc:def:<b>crs</b>:EPSG::4326")</code> is invoked,
+ * <h3>Example</h3>
+ * If <code>{@linkplain #createObject(String) createObject}("urn:ogc:def:<b>crs</b>:EPSG::4326")</code> is invoked,
  * then {@code MultiAuthoritiesFactory} will delegate (indirectly, ignoring caching for this example) the object
  * creation to {@link org.apache.sis.referencing.factory.sql.EPSGDataAccess#createCoordinateReferenceSystem(String)}
  * instead of {@link org.apache.sis.referencing.factory.sql.EPSGDataAccess#createObject(String)} because of the
- * {@code "crs"} part in the URN. The more specific method gives better performances and avoid ambiguities.</div>
+ * {@code "crs"} part in the URN. The more specific method gives better performances and avoid ambiguities.
  *
+ * <h3>Compound URIs</h3>
  * This class accepts also combined URIs of the following forms
  * (only two components shown, but arbitrary number of components is allowed):
  *
@@ -130,14 +131,13 @@ import org.apache.sis.util.collection.BackingStoreException;
  * If a {@code createFoo(String)} method is invoked with the version number omitted, then {@code MultiAuthoritiesFactory}
  * will use the first factory in iteration order for the requested authority regardless of its version number.
  *
- * <div class="note"><b>Example:</b>
- * a {@code MultiAuthoritiesFactory} instance could contain two {@code EPSGFactory} instances:
+ * <h3>Example</h3>
+ * A {@code MultiAuthoritiesFactory} instance could contain two {@code EPSGFactory} instances:
  * one for version 8.2 and another one for version 7.9 of the EPSG dataset.
  * A specific version can be requested in the URN given to {@code createFoo(String)} methods,
  * for example <code>"urn:ogc:def:crs:EPSG:<b>8.2</b>:4326"</code>.
  * If no version is given of if the given version is zero,
  * then the first EPSG factory in iteration order is used regardless of its version number.
- * </div>
  *
  * <h2>Multi-threading</h2>
  * This class is thread-safe if all delegate factories are themselves thread-safe.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/UnavailableFactoryException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/UnavailableFactoryException.java
index 8a244522d2..90a2ccfa02 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/UnavailableFactoryException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/UnavailableFactoryException.java
@@ -82,13 +82,13 @@ public class UnavailableFactoryException extends MissingFactoryResourceException
      * at some later stage <em>after</em> the factory construction (never inside the factory constructor),
      * for example the first time that the factory tried to create an object.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@link org.apache.sis.referencing.factory.sql.EPSGFactory} may have been successfully created with
      * a valid {@link javax.sql.DataSource}. But the call to {@link javax.sql.DataSource#getConnection()}
      * happens only later (the first time that user invokes a method requiring a search in the database).
      * In case of failure to connect to the database, user may discover late that the factory is actually
      * unavailable. User may want to be informed about which factory is unavailable, for example in order
-     * to remove it from the list of factory managed by {@link MultiAuthoritiesFactory}.</div>
+     * to remove it from the list of factory managed by {@link MultiAuthoritiesFactory}.
      *
      * @param  factory  the factory which is unavailable.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
index aa33a6cbf6..79894aaf20 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
@@ -317,10 +317,10 @@ public class EPSGDataAccess extends GeodeticAuthorityFactory implements CRSAutho
      * Recursivity may happen while creating Bursa-Wolf parameters, projected CRS if the database has erroneous data,
      * compound CRS if there is cycles, or coordinate operations.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@link #createDatum(String)} invokes {@link #createBursaWolfParameters(PrimeMeridian, Integer)}, which creates
      * a target datum. The target datum could have its own Bursa-Wolf parameters, with one of them pointing again to
-     * the source datum.</div>
+     * the source datum.
      *
      * Keys are EPSG codes and values are the type of object being constructed (but those values are not yet used).
      */
@@ -367,11 +367,11 @@ public class EPSGDataAccess extends GeodeticAuthorityFactory implements CRSAutho
      * Creates a factory using the given connection. The connection will be {@linkplain Connection#close() closed}
      * when this factory will be {@linkplain #close() closed}.
      *
-     * <div class="note"><b>API design note:</b>
-     * this constructor is protected because {@code EPSGDataAccess} instances should not be created as standalone factories.
+     * <h4>API design note</h4>
+     * This constructor is protected because {@code EPSGDataAccess} instances should not be created as standalone factories.
      * This constructor is for allowing definition of custom {@code EPSGDataAccess} subclasses, which are then instantiated
      * by the {@link EPSGFactory#newDataAccess(Connection, SQLTranslator)} method of a corresponding custom
-     * {@code EPSGFactory} subclass.</div>
+     * {@code EPSGFactory} subclass.
      *
      * @param owner       the {@code EPSGFactory} which is creating this Data Access Object (DAO).
      * @param connection  the connection to the underlying EPSG database.
@@ -695,9 +695,7 @@ addURIs:    for (int i=0; ; i++) {
 
     /**
      * Converts EPSG codes or EPSG names to the numerical identifiers (the primary keys).
-     *
-     * <div class="note"><b>Note:</b>
-     * this method could be seen as the converse of above {@link #getDescriptionText(String)} method.</div>
+     * This method could be seen as the converse of above {@link #getDescriptionText(String)} method.
      *
      * @param  table       the table where the code should appears, or {@code null} if {@code codeColumn} is null.
      * @param  codeColumn  the column name for the codes, or {@code null} if none.
@@ -1336,8 +1334,8 @@ codes:  for (int i=0; i<codes.length; i++) {
      * The returned object will typically be an instance of {@link GeographicCRS}, {@link ProjectedCRS},
      * {@link VerticalCRS} or {@link CompoundCRS}.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for coordinate reference systems are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for coordinate reference systems are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -1349,7 +1347,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>5714</td> <td>Vertical</td>      <td>Mean Sea Level height</td></tr>
      *   <tr><td>6349</td> <td>Compound</td>      <td>NAD83(2011) + NAVD88 height</td></tr>
      *   <tr><td>5800</td> <td>Engineering</td>   <td>Astra Minas Grid</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the coordinate reference system for the given code.
@@ -1622,8 +1620,8 @@ codes:  for (int i=0; i<codes.length; i++) {
      * Creates an arbitrary datum from a code. The returned object will typically be an
      * instance of {@link GeodeticDatum}, {@link VerticalDatum} or {@link TemporalDatum}.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for datums are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for datums are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -1633,7 +1631,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>1027</td> <td>Vertical</td>    <td>EGM2008 geoid</td></tr>
      *   <tr><td>5100</td> <td>Vertical</td>    <td>Mean Sea Level</td></tr>
      *   <tr><td>9315</td> <td>Engineering</td> <td>Seismic bin grid datum</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the datum for the given code.
@@ -1903,8 +1901,8 @@ codes:  for (int i=0; i<codes.length; i++) {
      * Creates a geometric figure that can be used to describe the approximate shape of the earth.
      * In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for ellipsoids are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for ellipsoids are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -1912,7 +1910,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>7030</td> <td>WGS 84</td></tr>
      *   <tr><td>7034</td> <td>Clarke 1880</td></tr>
      *   <tr><td>7048</td> <td>GRS 1980 Authalic Sphere</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the ellipsoid for the given code.
@@ -1991,8 +1989,8 @@ codes:  for (int i=0; i<codes.length; i++) {
     /**
      * Creates a prime meridian defining the origin from which longitude values are determined.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for prime meridians are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for prime meridians are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2002,7 +2000,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>8904</td> <td>Bogota</td></tr>
      *   <tr><td>8905</td> <td>Madrid</td></tr>
      *   <tr><td>8906</td> <td>Rome</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the prime meridian for the given code.
@@ -2052,15 +2050,15 @@ codes:  for (int i=0; i<codes.length; i++) {
     /**
      * Creates information about spatial, vertical, and temporal extent (usually a domain of validity) from a code.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for extents are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for extents are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
      *   <tr><th>Code</th> <th>Description</th></tr>
      *   <tr><td>1262</td> <td>World</td></tr>
      *   <tr><td>3391</td> <td>World - between 80°S and 84°N</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the extent for the given code.
@@ -2127,8 +2125,8 @@ codes:  for (int i=0; i<codes.length; i++) {
      * Creates an arbitrary coordinate system from a code. The returned object will typically be an
      * instance of {@link EllipsoidalCS}, {@link CartesianCS} or {@link VerticalCS}.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for coordinate systems are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for coordinate systems are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2144,7 +2142,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>6404</td> <td>Spherical 3D CS</td>   <td>latitude, longitude, radius</td>             <td>north, east, up</td> <td>degree, degree, metre</td></tr>
      *   <tr><td>6498</td> <td>Vertical CS</td>       <td>depth (D)</td>                               <td>down</td>            <td>metre</td></tr>
      *   <tr><td>6499</td> <td>Vertical CS</td>       <td>height (H)</td>                              <td>up</td>              <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the coordinate system for the given code.
@@ -2333,8 +2331,8 @@ codes:  for (int i=0; i<codes.length; i++) {
     /**
      * Creates a coordinate system axis with name, direction, unit and range of values.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for axes are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for axes are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2343,7 +2341,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>107</td>  <td>Longitude (λ)</td> <td>degree</td></tr>
      *   <tr><td>1</td>    <td>Easting (E)</td>   <td>metre</td></tr>
      *   <tr><td>2</td>    <td>Northing (N)</td>  <td>metre</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the axis for the given code.
@@ -2436,8 +2434,8 @@ codes:  for (int i=0; i<codes.length; i++) {
      * way for better support of non-straightforward units like <cite>sexagesimal degrees</cite>
      * (EPSG:9110 and 9111).
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for units are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for units are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2447,7 +2445,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>9030</td> <td>kilometre</td></tr>
      *   <tr><td>1040</td> <td>second</td></tr>
      *   <tr><td>1029</td> <td>year</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the unit of measurement for the given code.
@@ -2508,8 +2506,8 @@ codes:  for (int i=0; i<codes.length; i++) {
     /**
      * Creates a definition of a single parameter used by an operation method.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for parameters are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for parameters are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2519,7 +2517,7 @@ codes:  for (int i=0; i<codes.length; i++) {
      *   <tr><td>8805</td> <td>Scale factor at natural origin</td></tr>
      *   <tr><td>8806</td> <td>False easting</td></tr>
      *   <tr><td>8807</td> <td>False northing</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the parameter descriptor for the given code.
@@ -2767,8 +2765,8 @@ next:                   while (r.next()) {
      * An {@code OperationMethod} is a kind of metadata: it does not perform any coordinate operation
      * (e.g. map projection) by itself, but tells us what is needed in order to perform such operation.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for operation methods are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for operation methods are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2777,7 +2775,7 @@ next:                   while (r.next()) {
      *   <tr><td>9802</td> <td>Lambert Conic Conformal (2SP)</td></tr>
      *   <tr><td>9810</td> <td>Polar Stereographic (variant A)</td></tr>
      *   <tr><td>9624</td> <td>Affine parametric transformation</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the operation method for the given code.
@@ -2824,8 +2822,8 @@ next:                   while (r.next()) {
      * Creates an operation for transforming coordinates in the source CRS to coordinates in the target CRS.
      * The returned object will either be a {@link Conversion} or a {@link Transformation}, depending on the code.
      *
-     * <div class="note"><b>Example:</b>
-     * some EPSG codes for coordinate transformations are:
+     * <h4>Examples</h4>
+     * Some EPSG codes for coordinate transformations are:
      *
      * <table class="sis">
      * <caption>EPSG codes examples</caption>
@@ -2834,7 +2832,7 @@ next:                   while (r.next()) {
      *   <tr><td>1241</td> <td>NAD27 to NAD83 (1)</td></tr>
      *   <tr><td>1173</td> <td>NAD27 to WGS 84 (4)</td></tr>
      *   <tr><td>6326</td> <td>NAD83(2011) to NAVD88 height (1)</td></tr>
-     * </table></div>
+     * </table>
      *
      * @param  code  value allocated by EPSG.
      * @return the operation for the given code.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
index a65078390d..28ca28e10b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
@@ -40,7 +40,7 @@ import org.apache.sis.internal.metadata.sql.SQLUtilities;
  * If the actual EPSG dataset to query is hosted on another database product, then the SQL query needs to be
  * adapted to the target database dialect before to be executed.
  *
- * <div class="note"><b>Example</b>
+ * <h2>Example</h2>
  * SQL statements for an EPSG dataset hosted on the <cite>PostgreSQL</cite> database need to have their brackets
  * ({@code '['} and {@code ']'}) replaced by the quote character ({@code '"'}) before to be sent to the database
  * driver. Furthermore, table names may be different. So the following MS-Access query:
@@ -57,8 +57,9 @@ import org.apache.sis.internal.metadata.sql.SQLUtilities;
  *   <li>{@code SELECT * FROM epsg_coordinatereferencesystem} (in the default schema)</li>
  *   <li>{@code SELECT * FROM epsg.coordinatereferencesystem} (in the {@code "epsg"} schema)</li>
  *   <li>{@code SELECT * FROM epsg."Coordinate Reference System"}</li>
- * </ul></div>
+ * </ul>
  *
+ * <h2>ANSI SQL</h2>
  * In addition to the file in MS-Access format, EPSG also provides the dataset as SQL files for PostgreSQL,
  * MySQL and Oracle databases. Those SQL files are used as both <cite>Data Description Language</cite> (DDL)
  * and <cite>Data Manipulation Language</cite> (DML).
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
index 84f014ea5f..bff87643d7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
@@ -560,10 +560,10 @@ check:      for (int isTarget=0; ; isTarget++) {        // 0 == source check; 1
      * Returns the CRS which is neither the {@linkplain #getSourceCRS() source CRS} or
      * {@linkplain #getTargetCRS() target CRS} but still required for performing the operation.
      *
-     * <div class="note"><b>Example:</b>
-     * some transformations of vertical coordinates (<var>h</var>) require the horizontal coordinates (φ,λ)
+     * <h4>Example</h4>
+     * Some transformations of vertical coordinates (<var>h</var>) require the horizontal coordinates (φ,λ)
      * in order to interpolate in a grid. This method returns the CRS of the grid where such interpolations
-     * are performed.</div>
+     * are performed.
      *
      * @return the CRS (neither source or target CRS) required for interpolating the values, or {@code null} if none.
      */
@@ -776,7 +776,7 @@ check:      for (int isTarget=0; ; isTarget++) {        // 0 == source check; 1
      * If such change exists, then this is usually the longitude axis when the source CRS uses the [-180 … +180]° range
      * and the target CRS uses the [0 … 360]° range, or the converse. If there is no change, then this is an empty set.
      *
-     * <div class="note"><b>Inverse relationship:</b>
+     * <h4>Inverse relationship</h4>
      * sometimes the target dimensions returned by this method can be mapped directly to wraparound axes in source CRS,
      * but this is not always the case. For example, consider the following operation chain:
      *
@@ -788,13 +788,14 @@ check:      for (int isTarget=0; ; isTarget++) {        // 0 == source check; 1
      * have a wraparound range meaning. We could argue that
      * {@linkplain org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#getDirection() axis directions} match,
      * but such matching is not guaranteed to exist since {@code ProjectedCRS} is a special case of
-     * {@code GeneralDerivedCRS} and derived CRS can have rotations.</div>
+     * {@code GeneralDerivedCRS} and derived CRS can have rotations.
      *
-     * <p>The default implementation infers this set by inspecting the source and target coordinate system axes.
+     * <h4>Default implementation</h4>
+     * The default implementation infers this set by inspecting the source and target coordinate system axes.
      * It returns the indices of all target axes having {@link org.opengis.referencing.cs.RangeMeaning#WRAPAROUND}
      * and for which the following condition holds: a colinear source axis exists with compatible unit of measurement,
      * and the range (taking unit conversions in account) or range meaning of those source and target axes are not
-     * the same.</p>
+     * the same.
      *
      * @return indices of target dimensions where "wrap around" may happen as a result of this coordinate operation.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
index 922b3bc43a..73d6c06c8b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
@@ -45,17 +45,17 @@ import org.apache.sis.util.collection.BackingStoreException;
  * While optional, those information can help {@link DefaultCoordinateOperationFactory}
  * to choose the most suitable coordinate transformation between two CRS.
  *
- * <div class="note"><b>Example:</b>
- * if a transformation from NAD27 to WGS84 is requested without providing context, then Apache SIS will return the
+ * <p>{@code CoordinateOperationContext} is part of the API
+ * used by SIS for implementing the <cite>late binding</cite> model.
+ * See {@linkplain org.apache.sis.referencing.operation package javadoc}
+ * for a note on early binding versus late binding implementations.</p>
+ *
+ * <h2>Example</h2>
+ * If a transformation from NAD27 to WGS84 is requested without providing context, then Apache SIS will return the
  * transformation applicable to the widest North American surface. But if the user provides a context saying that
  * he wants to transform coordinates in Texas, then Apache SIS may return another coordinate transformation with
  * different {@linkplain org.apache.sis.referencing.datum.BursaWolfParameters Bursa-Wolf parameters} more suitable
  * to Texas, but not suitable to the rest of North-America.
- * </div>
- *
- * {@code CoordinateOperationContext} is part of the API used by SIS for implementing the <cite>late binding</cite>
- * model. See {@linkplain org.apache.sis.referencing.operation package javadoc} for a note on early binding versus
- * late binding implementations.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
index 96cda91c85..3450feddbf 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
@@ -161,13 +161,13 @@ class CoordinateOperationRegistry {
      * The object to use for finding authority codes, or {@code null} if none.
      * An instance is fetched at construction time from the {@link #registry} if possible.
      *
-     * <div class="note"><b>Design note:</b>
-     * using a finder defined by the {@link #registry} instead of {@code MultiAuthoritiesFactory} may cause
+     * <h4>Design note</h4>
+     * Using a finder defined by the {@link #registry} instead of {@code MultiAuthoritiesFactory} may cause
      * the finder to perform extensive searches because it does not recognize the authority code of a given CRS.
      * For example if {@link #registry} is for EPSG and a given CRS is "CRS:84", then {@code codeFinder} would
      * not recognize the given CRS and would search for a match in the EPSG database. This is desired because
      * we need to have the two CRSs defined by the same authority (if possible) in order to find a predefined
-     * operation, even if an equivalent definition was provided by another authority.</div>
+     * operation, even if an equivalent definition was provided by another authority.
      *
      * @see #authorityCodes
      * @see #findCode(CoordinateReferenceSystem)
@@ -230,11 +230,11 @@ class CoordinateOperationRegistry {
      * Authority codes found for CRS. This is a cache for {@link #findCode(CoordinateReferenceSystem)}.
      * This map may be non-empty only if {@link #codeFinder} is non-null.
      *
-     * <div class="note"><b>Design note:</b>
-     * a cache is used because codes for the same CRS can be requested many times while iterating over the
+     * <h4>Design note</h4>
+     * A cache is used because codes for the same CRS can be requested many times while iterating over the
      * strategies enumerated by {@link Decomposition}. This cache partially duplicates the cache provided by
      * {@link IdentifiedObjectFinder} implementations, but we have no guarantees that those implementations
-     * provide such cache, and the values cached here are the result of a little bit more work.</div>
+     * provide such cache, and the values cached here are the result of a little bit more work.
      *
      * @see #codeFinder
      * @see #findCode(CoordinateReferenceSystem)
@@ -707,12 +707,12 @@ class CoordinateOperationRegistry {
      *   <li>Its domain of validity and accuracy is the same.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
-     * in many cases, the inverse operation is numerically less accurate than the direct operation because it
+     * <h4>Accuracy note</h4>
+     * In many cases, the inverse operation is numerically less accurate than the direct operation because it
      * uses approximations like series expansions or iterative methods. However, the numerical errors caused by
      * those approximations are not of interest here, because they are usually much smaller than the inaccuracy
      * due to the stochastic nature of coordinate transformations (not to be confused with coordinate conversions;
-     * see ISO 19111 for more information).</div>
+     * see ISO 19111 for more information).
      */
     final CoordinateOperation inverse(final SingleOperation op) throws NoninvertibleTransformException, FactoryException {
         final CoordinateReferenceSystem sourceCRS = op.getSourceCRS();
@@ -1188,11 +1188,11 @@ class CoordinateOperationRegistry {
      * In the special case where the {@code name} identifier is {@link #DATUM_SHIFT} or {@link #ELLIPSOID_CHANGE},
      * the map will contain extra information like positional accuracy.
      *
-     * <div class="note"><b>Note:</b>
-     * in the datum shift case, an operation version is mandatory but unknown at this time.
+     * <h4>Note</h4>
+     * In the datum shift case, an operation version is mandatory but unknown at this time.
      * However, we noticed that the EPSG database do not always defines a version neither.
      * Consequently, the Apache SIS implementation relaxes the rule requiring an operation
-     * version and we do not try to provide this information here for now.</div>
+     * version and we do not try to provide this information here for now.
      *
      * @param  name  the name to put in a map.
      * @return a modifiable map containing the given name. Callers can put other entries in this map.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
index dbd6c52dcd..d27fc41aab 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
@@ -170,12 +170,12 @@ final class DefaultConcatenatedOperation extends AbstractCoordinateOperation imp
      * but only one transformation. So considering only transformations usually means to pickup only one operation
      * in the given {@code operations} list, which make things clearer.
      *
-     * <div class="note"><b>Note:</b>
-     * according ISO 19111, the accuracy attribute is allowed only for transformations. However, this restriction
+     * <h5>Note</h5>
+     * According ISO 19111, the accuracy attribute is allowed only for transformations. However, this restriction
      * is not enforced everywhere. For example, the EPSG database declares an accuracy of 0 meter for conversions,
      * which is conceptually exact. In this class we are departing from strict interpretation of the specification
      * since we are adding accuracy information to a concatenated operation. This departure should be considered
-     * as a convenience feature only; accuracies are really relevant in transformations only.</div>
+     * as a convenience feature only; accuracies are really relevant in transformations only.
      *
      * @param  properties   the properties specified at construction time, or {@code null} if unknown.
      * @param  operations   the operations to concatenate.
@@ -316,10 +316,10 @@ final class DefaultConcatenatedOperation extends AbstractCoordinateOperation imp
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code ConcatenatedOperation.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code ConcatenatedOperation}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code ConcatenatedOperation.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
index ab9dd554b6..4bdf9b8040 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
@@ -131,18 +131,18 @@ public class DefaultConversion extends AbstractSingleOperation implements Conver
      * The reason why SIS is tolerant is because some gray areas may exist about whether an operation
      * should be considered as a conversion or a transformation.
      *
-     * <div class="note"><b>Example:</b>
-     * converting time instants from a {@linkplain org.apache.sis.referencing.crs.DefaultTemporalCRS temporal CRS} using
+     * <p>Note that while Apache SIS accepts to construct {@code DefaultConversion} instances
+     * with different source and target datum, it does not accept to use such instances for
+     * {@linkplain org.apache.sis.referencing.crs.DefaultDerivedCRS derived CRS} construction.</p>
+     *
+     * <h4>Example</h4>
+     * Converting time instants from a {@linkplain org.apache.sis.referencing.crs.DefaultTemporalCRS temporal CRS} using
      * the <cite>January 1st, 1950</cite> epoch to another temporal CRS using the <cite>January 1st, 1970</cite> epoch
      * is a datum change, since the epoch is part of {@linkplain org.apache.sis.referencing.datum.DefaultTemporalDatum
      * temporal datum} definition. However, such operation does not have all the accuracy issues of transformations
      * between geodetic datum (empirically determined, over-determined systems, stochastic nature of the parameters).
      * Consequently, some users may consider sufficient to represent temporal epoch changes as conversions instead
-     * than transformations.</div>
-     *
-     * Note that while Apache SIS accepts to construct {@code DefaultConversion} instances
-     * with different source and target datum, it does not accept to use such instances for
-     * {@linkplain org.apache.sis.referencing.crs.DefaultDerivedCRS derived CRS} construction.
+     * than transformations.
      *
      * @param properties        the properties to be given to the identified object.
      * @param sourceCRS         the source CRS.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultFormula.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultFormula.java
index 4b59cacf2c..9eca70db35 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultFormula.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultFormula.java
@@ -180,11 +180,11 @@ public class DefaultFormula extends FormattableObject implements Formula, Serial
     /**
      * Formats this formula as a pseudo-<cite>Well Known Text</cite> element.
      *
-     * <div class="note"><b>Compatibility note:</b>
+     * <h4>Compatibility note</h4>
      * ISO 19162 does not define a WKT representation for {@code Formula} objects.
      * The text formatted by this method is SIS-specific and causes the text to be
      * flagged as {@linkplain Formatter#setInvalidWKT(Class, Exception) invalid WKT}.
-     * The WKT content of this element may change in any future SIS version.</div>
+     * The WKT content of this element may change in any future SIS version.
      *
      * @return {@code "Formula"}.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index 8411135d51..85c6430eb7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -72,7 +72,12 @@ import static org.apache.sis.util.ArgumentChecks.*;
  * {@linkplain #getParameters() group of parameter descriptors}. The parameter descriptors do not contain
  * any value, but tell us what are the expected parameters, together with their units of measurement.</p>
  *
- * <div class="note"><b>Example:</b>
+ * <p>In Apache SIS implementation, the {@linkplain #getName() name} is the only mandatory property.
+ * However, it is recommended to provide also {@linkplain #getIdentifiers() identifiers}
+ * (e.g. “EPSG:9804” in the following example)
+ * because names can sometimes be ambiguous or be spelled in different ways.</p>
+ *
+ * <h2>Example</h2>
  * An operation method named “<cite>Mercator (variant A)</cite>” (EPSG:9804) expects the following parameters:
  * <ul>
  *   <li>“<cite>Latitude of natural origin</cite>” in degrees. Default value is 0°.</li>
@@ -80,11 +85,7 @@ import static org.apache.sis.util.ArgumentChecks.*;
  *   <li>“<cite>Scale factor at natural origin</cite>” as a dimensionless number. Default value is 1.</li>
  *   <li>“<cite>False easting</cite>” in metres. Default value is 0 m.</li>
  *   <li>“<cite>False northing</cite>” in metres. Default value is 0 m.</li>
- * </ul></div>
- *
- * In Apache SIS implementation, the {@linkplain #getName() name} is the only mandatory property. However, it is
- * recommended to provide also {@linkplain #getIdentifiers() identifiers} (e.g. “EPSG:9804” in the above example)
- * since names can sometimes be ambiguous or be spelled in different ways.
+ * </ul>
  *
  * <h2>Departure from the ISO 19111 standard</h2>
  * The following properties are mandatory according ISO 19111,
@@ -527,10 +528,10 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code OperationMethod.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this information since GeoAPI does not define {@code OperationMethod}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code OperationMethod.class} or a user-defined sub-interface.
      */
@@ -576,8 +577,8 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
      * publication. Note that the operation method may not be analytic, in which case this
      * attribute references or contains the procedure, not an analytic formula.
      *
-     * <div class="note"><b>Departure from the ISO 19111 standard:</b>
-     * this property is mandatory according ISO 19111, but optional in Apache SIS.</div>
+     * <h4>Departure from the ISO 19111 standard</h4>
+     * This property is mandatory according ISO 19111, but optional in Apache SIS.
      *
      * @return the formula used by this method, or {@code null} if unknown.
      *
@@ -628,9 +629,9 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
     /**
      * Returns the set of parameters.
      *
-     * <div class="note"><b>Departure from the ISO 19111 standard:</b>
-     * this property is mandatory according ISO 19111, but may be {@code null} in Apache SIS if the
-     * {@link #DefaultOperationMethod(MathTransform)} constructor has been unable to infer it.</div>
+     * <h4>Departure from the ISO 19111 standard</h4>
+     * This property is mandatory according ISO 19111, but may be {@code null} in Apache SIS if the
+     * {@link #DefaultOperationMethod(MathTransform)} constructor has been unable to infer it.
      *
      * @return the parameters, or {@code null} if unknown.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java
index b421d82b78..80b0d7d559 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultTransformation.java
@@ -152,10 +152,10 @@ public class DefaultTransformation extends AbstractSingleOperation implements Tr
      * Returns the GeoAPI interface implemented by this class.
      * The SIS implementation returns {@code Transformation.class}.
      *
-     * <div class="note"><b>Note for implementers:</b>
+     * <h4>Note for implementers</h4>
      * Subclasses usually do not need to override this method since GeoAPI does not define {@code Transformation}
      * sub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their
-     * own set of interfaces.</div>
+     * own set of interfaces.
      *
      * @return {@code Transformation.class} or a user-defined sub-interface.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
index 0fa154aa3e..44c4e7b8bb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
@@ -121,18 +121,17 @@ final class InverseOperationMethod extends DefaultOperationMethod {
      *   <li>Parameter values, if possible</li>
      * </ul>
      *
+     * If the inverse of the given operation can be represented by inverting the sign of all numerical
+     * parameter values, then this method copies also those parameters in a {@code "parameters"} entry.
+     *
+     * <h4>Accuracy metadata</h4>
      * This method copies accuracy and domain of validity metadata from the given operation.
      * We presume that the inverse operation has the same accuracy than the direct operation.
-     *
-     * <div class="note"><b>Note:</b>
-     * in many cases, the inverse operation is numerically less accurate than the direct operation because it
+     * In many cases, the inverse operation is numerically less accurate than the direct operation because it
      * uses approximations like series expansions or iterative methods. However, the numerical errors caused by
      * those approximations are not of interest here, because they are usually much smaller than the inaccuracy
      * due to the stochastic nature of coordinate transformations (not to be confused with coordinate conversions;
-     * see ISO 19111 for more information).</div>
-     *
-     * If the inverse of the given operation can be represented by inverting the sign of all numerical
-     * parameter values, then this method copies also those parameters in a {@code "parameters"} entry.
+     * see ISO 19111 for more information).
      *
      * @param source  the operation for which to get the inverse parameters.
      * @param target  where to store the inverse parameters.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
index a3da39eb16..4a272d8add 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
@@ -22,7 +22,7 @@ package org.apache.sis.referencing.operation;
  * By definition, conversions do not perform any change of datum
  * while {@linkplain DefaultTransformation transformations} can do.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Usage note</h2>
  * SIS is tolerant about different datum at {@code DefaultConversion} construction time,
  * for the reasons explained in {@linkplain DefaultConversion#DefaultConversion(java.util.Map,
  * org.opengis.referencing.crs.CoordinateReferenceSystem,
@@ -31,7 +31,7 @@ package org.apache.sis.referencing.operation;
  * org.opengis.referencing.operation.OperationMethod,
  * org.opengis.referencing.operation.MathTransform) its constructor}.
  * However, SIS is stricter at {@linkplain org.apache.sis.referencing.crs.DefaultDerivedCRS Derived CRS}
- * construction time.</div>
+ * construction time.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.6
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
index 51da01ec5e..834d402ae9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
@@ -46,10 +46,11 @@ final class SubOperationInfo {
      * is the target CRS and the whole array (including the first element) gives the valid source CRS type,
      * if preference order.
      *
-     * <div class="note"><b>Example:</b>
-     * if a target CRS is of type {@link VerticalCRS}, then the source CRS may be another {@code VerticalCRS}
-     * or a {@link GeodeticCRS}. The geodetic CRS is possible because it may be three-dimensional.</div>
+     * <h4>Example</h4>
+     * If a target CRS is of type {@link VerticalCRS}, then the source CRS may be another {@code VerticalCRS}
+     * or a {@link GeodeticCRS}. The geodetic CRS is possible because it may be three-dimensional.
      *
+     * <h4>Exclusions</h4>
      * {@link ProjectedCRS} and {@link DerivedCRS} are not in this list because we rather use their base CRS
      * as the criterion for determining their type.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
index d329891ba3..99e6d800ac 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
@@ -200,10 +200,9 @@ public class LinearTransformBuilder extends TransformBuilder {
     /**
      * Creates a new linear transform builder for randomly distributed positions.
      *
-     * <div class="note"><b>Tip:</b>
-     * if the source coordinates are grid indices, then
+     * <h4>Performance note</h4>
+     * If the source coordinates are grid indices, then
      * the {@link #LinearTransformBuilder(int...)} constructor will create a more efficient builder.
-     * </div>
      */
     public LinearTransformBuilder() {
         gridSize = null;
@@ -956,10 +955,10 @@ search:         for (int j=domain(); --j >= 0;) {
      * Sets a single matching control point pair. Source position is assumed precise and target position is assumed uncertain.
      * If the given source position was already associated with another target position, then the old target position is discarded.
      *
-     * <div class="note"><b>Performance note:</b>
-     * current implementation is efficient for builders {@linkplain #LinearTransformBuilder(int...) created for a grid}
+     * <h4>Performance note</h4>
+     * Current implementation is efficient for builders {@linkplain #LinearTransformBuilder(int...) created for a grid}
      * but inefficient for builders {@linkplain #LinearTransformBuilder() created for randomly distributed points}.
-     * In the latter case, the {@link #setControlPoints(Map)} method is a more efficient alternative.</div>
+     * In the latter case, the {@link #setControlPoints(Map)} method is a more efficient alternative.
      *
      * @param  source  the source coordinates. If this builder has been created with the {@link #LinearTransformBuilder(int...)} constructor,
      *                 then for every index <var>i</var> the {@code source[i]} value shall be in the [0 … {@code gridSize[i]}-1] range inclusive.
@@ -1036,9 +1035,9 @@ search:         for (int j=domain(); --j >= 0;) {
      * <p>If {@link #linearizer()} returns a non-empty value, then the returned values are projected using that linearizer.
      * This may happen only if this method is invoked after {@link #create(MathTransformFactory) create(…)}.</p>
      *
-     * <div class="note"><b>Performance note:</b>
-     * current implementation is efficient for builders {@linkplain #LinearTransformBuilder(int...) created for a grid}
-     * but inefficient for builders {@linkplain #LinearTransformBuilder() created for randomly distributed points}.</div>
+     * <h4>Performance note</h4>
+     * Current implementation is efficient for builders {@linkplain #LinearTransformBuilder(int...) created for a grid}
+     * but inefficient for builders {@linkplain #LinearTransformBuilder() created for randomly distributed points}.
      *
      * @param  source  the source coordinates. If this builder has been created with the {@link #LinearTransformBuilder(int...)} constructor,
      *                 then for every index <var>i</var> the {@code source[i]} value shall be in the [0 … {@code gridSize[i]}-1] range inclusive.
@@ -1135,11 +1134,9 @@ search:         for (int j=domain(); --j >= 0;) {
     /**
      * Returns the coordinates of a single row or column in the given dimension. This method can be invoked
      * only when this {@code LinearTransformBuilder} is known to have been built for grid source coordinates.
+     * While this method is primarily for row and columns, it can be generalized to more dimensions.
      *
-     * <div class="note"><b>Note:</b>
-     * while this method is primarily for row and columns, it can be generalized to more dimensions.</div>
-     *
-     * The returned vector is a view; changes in the returned vector will be reflected in this builder.
+     * <p>The returned vector is a view; changes in the returned vector will be reflected in this builder.</p>
      *
      * @param  dimension  the dimension of source point for which to get coordinate values.
      * @param  start      index of the first coordinate value to get.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
index 5f153d9e99..9a69292136 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
@@ -207,11 +207,10 @@ final class ResidualGrid extends DatumShiftGrid<Dimensionless,Dimensionless> {
      * Current implementation provides values in the form of {@link Matrix} objects on the assumption
      * that the number of {@linkplain #getGridSize() grid} dimensions is {@value #SOURCE_DIMENSION}.
      *
-     * <div class="note"><b>Note:</b>
-     * the number of {@linkplain #getGridSize() grid} dimensions determines the parameter type: if that number
+     * <p>The number of {@linkplain #getGridSize() grid} dimensions determines the parameter type: if that number
      * is greater than {@value #SOURCE_DIMENSION}, then parameters would need to be represented by tensors instead
      * than matrices. By contrast, the {@linkplain #getTranslationDimensions() number of dimensions of translation
-     * vectors} only determines how many matrix or tensor parameters appear.</div>
+     * vectors} only determines how many matrix or tensor parameters appear.</p>
      *
      * @return a description of the values in this grid.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
index bd3a625868..35b1521041 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
@@ -59,10 +59,7 @@ class GeneralMatrix extends MatrixSIS implements ExtendedPrecisionMatrix {
      * SIS version according experience gained. As long as the value is smaller than 1, it still more accurate than
      * {@code double} arithmetic anyway.</p>
      *
-     * <div class="note"><b>Note:</b>
-     * A similar constant exists in {@code org.apache.sis.math.Plane}.
-     * </div>
-     *
+     * @see org.apache.sis.math.Plane#ZERO_THRESHOLD
      * @see Numerics#COMPARISON_THRESHOLD
      */
     @Configuration
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
index e945abaef5..2fed5db647 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
@@ -1210,11 +1210,11 @@ public final class Matrices extends Static {
      *   │ 0                     0                     0       1 │
      *   └                                                       ┘</pre>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Usage note</h4>
      * Formatting on a per-column basis is convenient for the kind of matrices used in referencing by coordinates,
      * because each column is typically a displacement vector in a different dimension of the source coordinate
      * reference system. In addition, the last column is often a translation vector having a magnitude very
-     * different than the other columns.</div>
+     * different than the other columns.
      *
      * @param  matrix  the matrix for which to get a string representation.
      * @return a string representation of the given matrix.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/MismatchedMatrixSizeException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/MismatchedMatrixSizeException.java
index fd514c5fb8..4aeea10667 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/MismatchedMatrixSizeException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/MismatchedMatrixSizeException.java
@@ -22,10 +22,10 @@ import org.opengis.geometry.MismatchedDimensionException;
 /**
  * Thrown when two matrices cannot be added or multiplied because the sizes do not match.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Usage note</h2>
  * This exception extends {@code MismatchedDimensionException} because the matrices in this package
  * are used in <cite>Coordinate Operation Steps</cite>, in which case a mismatched matrix size means
- * that the operation involves two Coordinate Reference Systems of incompatible dimensions.</div>
+ * that the operation involves two Coordinate Reference Systems of incompatible dimensions.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NoninvertibleMatrixException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NoninvertibleMatrixException.java
index 7a6571b2ac..a6e6744aa7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NoninvertibleMatrixException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NoninvertibleMatrixException.java
@@ -23,10 +23,10 @@ import org.opengis.referencing.operation.NoninvertibleTransformException;
  * Thrown when a matrix cannot be inverted.
  * This may be because the matrix is singular, or because the matrix is not square.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Usage note</h2>
  * This exception extends {@code NoninvertibleTransformException} because the matrices in this package
  * are used in <cite>Coordinate Operation Steps</cite>, in which case a singular matrix means that the
- * operation is not invertible.</div>
+ * operation is not invertible.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
index 902268897b..f9bcafc50f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
@@ -72,12 +72,12 @@ abstract class AuthalicConversion extends NormalizedProjection {
      *
      *     <blockquote>sin(2β)⋅(c₂ + cos(2β)⋅(c₄ + cos(2β)⋅c₆))</blockquote>
      *
-     * <div class="note"><b>Serialization note:</b>
-     * we do not strictly need to serialize those fields since they could be computed after deserialization.
+     * <h4>Serialization note</h4>
+     * We do not strictly need to serialize those fields since they could be computed after deserialization.
      * But we serialize them anyway in order to simplify a little bit this class (it allows us to keep those
      * fields final) and because values computed after deserialization could be slightly different than the
      * ones computed after construction if a future version of the constructor uses the double-double values
-     * provided by {@link Initializer}.</div>
+     * provided by {@link Initializer}.
      */
     private final double c2β, c4β, c6β;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
index fc7b3c74a6..f964505823 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
@@ -41,8 +41,8 @@ import static org.apache.sis.internal.referencing.provider.ModifiedAzimuthalEqui
  * For ellipsoidal formulas, the {@link ModifiedAzimuthalEquidistant} class provides an approximation
  * valid under 800 kilometres of the projection centre.
  *
- * <div class="note"><b>Note of projection variants:</b>
- * formulas for this map projection have been published by Snyder (1987) in the following forms:
+ * <h2>Note of projection variants</h2>
+ * Formulas for this map projection have been published by Snyder (1987) in the following forms:
  * <ul>
  *   <li><cite>Azimuthal Equidistant projection for the sphere.</cite>
  *     This form has no EPSG code. It is implemented in Apache SIS as "Azimuthal Equidistant (Spherical)".</li>
@@ -62,7 +62,7 @@ import static org.apache.sis.internal.referencing.provider.ModifiedAzimuthalEqui
  *
  * This base class is aimed to provide the general case valid for all distances;
  * the fact that current version uses spherical formulas should be considered as an implementation limitation
- * that may change in future version. Subclasses are specialization for more restricted areas.</div>
+ * that may change in future version. Subclasses are specialization for more restricted areas.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Maxime Gavens (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
index 2e02096618..5a637f937b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
@@ -48,11 +48,11 @@ import static java.lang.Math.*;
  * However, the formulas provided in this {@code ConformalProjection} class can be seen as a special case of
  * Transverse Mercator formulas for <var>x</var> = 0.</p>
  *
- * <div class="note"><b>Reference:</b>
+ * <h2>Reference</h2>
  * “Lambert developed the regular Conformal Conic as the oblique aspect of a family containing the previously
  * known polar Stereographic and regular Mercator projections. (…) If the standard parallels are symmetrical
  * about the Equator, the regular Mercator results (although formulas must be revised). If the only standard
- * parallel is a pole, the polar Stereographic results.” (Snyder, page 105)</div>
+ * parallel is a pole, the polar Stereographic results.” (Snyder, page 105).
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
index 58128e97ed..084d0256c6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
@@ -334,11 +334,9 @@ public class CylindricalEqualArea extends AuthalicConversion {
         }
 
         /**
-         * {@inheritDoc}
-         *
-         * <div class="note"><b>Note:</b>
+         * Converts a list of coordinate tuples.
          * This method must be overridden because the {@link CylindricalEqualArea} class
-         * overrides the {@link NormalizedProjection} default implementation.</div>
+         * overrides the {@link NormalizedProjection} default implementation.
          */
         @Override
         public void transform(final double[] srcPts, int srcOff,
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
index fe6d1f2275..e56fb54648 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
@@ -563,11 +563,9 @@ subst:  if (variant.spherical || (eccentricity == 0 && getClass() == Mercator.cl
         }
 
         /**
-         * {@inheritDoc}
-         *
-         * <div class="note"><b>Note:</b>
-         * This method must be overridden because the {@link Mercator} class overrides the {@link NormalizedProjection}
-         * default implementation.</div>
+         * Converts a list of coordinate tuples.
+         * This method must be overridden because the {@link Mercator} class
+         * overrides the {@link NormalizedProjection} default implementation.
          */
         @Override
         public void transform(final double[] srcPts, int srcOff,
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
index 530056f8cd..754e4a7bcb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
@@ -230,11 +230,11 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
     /**
      * The inverse of this map projection.
      *
-     * <div class="note"><b>Note:</b>
-     * creation of this object is not deferred to the first call to the {@link #inverse()} method because this
+     * <h4>Implementation note</h4>
+     * Creation of this object is not deferred to the first call to the {@link #inverse()} method because this
      * object is lightweight and typically needed soon anyway (may be as soon as {@code ConcatenatedTransform}
      * construction time). In addition this field is part of serialization form in order to preserve the
-     * references graph.</div>
+     * references graph.
      */
     private final Inverse inverse;
 
@@ -1031,12 +1031,11 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
      * Those projection parameters will be compared only if the comparison mode is {@link ComparisonMode#STRICT}
      * or {@link ComparisonMode#BY_CONTRACT BY_CONTRACT}.</p>
      *
-     * <div class="note"><b>Example:</b>
-     * a {@linkplain Mercator Mercator} projection can be created in the 2SP case with a <cite>standard parallel</cite>
+     * <h4>Example</h4>
+     * A {@linkplain Mercator Mercator} projection can be created in the 2SP case with a <cite>standard parallel</cite>
      * value of 60°. The same projection can also be created in the 1SP case with a <cite>scale factor</cite> of 0.5.
      * Nevertheless those two map projections applied on a sphere gives identical results. Considering them as
      * equivalent allows the referencing module to transform coordinates between those two projections more efficiently.
-     * </div>
      *
      * @param  object  the object to compare with this map projection for equivalence.
      * @param  mode    the strictness level of the comparison. Default to {@link ComparisonMode#STRICT}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
index 7fb8643462..67ece2492c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
@@ -54,11 +54,11 @@ import static org.apache.sis.internal.referencing.provider.ObliqueStereographic.
  * coordinates (i.e. latitudes and longitudes on a conformal sphere), then a spherical stereographic projection.
  * For this reason this projection method is sometimes known as <cite>"Double Stereographic"</cite>.</p>
  *
- * <div class="note"><b>Note:</b>
- * there is another method known as <cite>"Oblique Stereographic Alternative"</cite> or sometimes just
+ * <h2>Related methods</h2>
+ * There is another method known as <cite>"Oblique Stereographic Alternative"</cite> or sometimes just
  * <cite>"Stereographic"</cite>. That alternative uses a simplified conversion computing the conformal latitude
  * of each point on the ellipsoid. Both methods are considered valid but produce slightly different results.
- * For this reason EPSG considers them as different projection methods.</div>
+ * For this reason EPSG considers them as different projection methods.
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
index c633d378b7..1f74757ae6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
@@ -169,12 +169,12 @@ public class TransverseMercator extends NormalizedProjection {
      * Those coefficients are named h₁, h₂, h₃ and h₄ in §1.3.5.1 of
      * IOGP Publication 373-7-2 – Geomatics Guidance Note number 7, part 2 – April 2015.
      *
-     * <div class="note"><b>Serialization note:</b>
-     * we do not strictly need to serialize those fields since they could be computed after deserialization.
+     * <h4>Serialization note</h4>
+     * We do not strictly need to serialize those fields since they could be computed after deserialization.
      * Bu we serialize them anyway in order to simplify a little bit this class (it allows us to keep those
      * fields final) and because values computed after deserialization could be slightly different than the
      * ones computed after construction since the constructor uses the double-double values provided by
-     * {@link Initializer}.</div>
+     * {@link Initializer}.
      */
     private final double cf2, cf4, cf6, cf8;
 
@@ -427,11 +427,11 @@ public class TransverseMercator extends NormalizedProjection {
      * consistent with the {@linkplain #inverseTransform(double[], int, double[], int) reverse projection}
      * (i.e. applying a projection followed by a reverse projection gives approximately the original values).
      *
-     * <div class="note"><b>Rational:</b>
-     * those coordinates are accepted despite the low accuracy of projection results because they are sometimes
+     * <h6>Rational</h6>
+     * Those coordinates are accepted despite the low accuracy of projection results because they are sometimes
      * needed for expressing bounding boxes. A bounding box may have corners located in invalid projection area
      * even if all features inside the box have valid coordinates. For "contains" and "intersects" tests between
-     * envelopes, we do not need accurate coordinates; a monotonic behavior of x = f(λ) can be sufficient.</div>
+     * envelopes, we do not need accurate coordinates; a monotonic behavior of x = f(λ) can be sufficient.
      *
      * <h5>Case of ∆λ &gt; 90°</h5>
      * Longitude values at a distance greater than 90° from the central meridian are rejected.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
index 28b3f9776c..baa4f815b5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
@@ -199,12 +199,11 @@ public abstract class AbstractMathTransform extends FormattableObject
     /**
      * Returns the parameter descriptors for this math transform, or {@code null} if unknown.
      *
-     * <div class="note"><b>Relationship with ISO 19111:</b>
+     * <h4>Relationship with ISO 19111</h4>
      * This method is similar to {@link OperationMethod#getParameters()}, except that typical
      * {@link MathTransform} implementations return parameters in standard units (usually
      * {@linkplain org.apache.sis.measure.Units#METRE metres} or
      * {@linkplain org.apache.sis.measure.Units#DEGREE decimal degrees}).
-     * </div>
      *
      * @return the parameter descriptors for this math transform, or {@code null} if unspecified.
      *
@@ -405,16 +404,16 @@ public abstract class AbstractMathTransform extends FormattableObject
      * Transforms a list of coordinate tuples. This method is provided for efficiently transforming many points.
      * The supplied array of coordinate values will contain packed coordinate values.
      *
-     * <div class="note"><b>Example:</b> if the source dimension is 3, then the coordinates will be packed in this order:
+     * <h4>Example</h4>
+     * If the source dimension is 3, then the coordinates will be packed in this order:
      * (<var>x₀</var>,<var>y₀</var>,<var>z₀</var>,
      *  <var>x₁</var>,<var>y₁</var>,<var>z₁</var> …).
-     * </div>
      *
+     * <h4>Implementation note</h4>
      * The default implementation invokes {@link #transform(double[], int, double[], int, boolean)} in a loop,
      * using an {@linkplain IterationStrategy iteration strategy} determined from the arguments for iterating
-     * over the points.
-     *
-     * <div class="note"><b>Implementation note:</b> see {@link IterationStrategy} javadoc for a method skeleton.</div>
+     * over the points. For creating a more efficient implementation,
+     * see {@link IterationStrategy} javadoc for a method skeleton.
      *
      * @param  srcPts  the array containing the source point coordinates.
      * @param  srcOff  the offset to the first point to be transformed in the source array.
@@ -525,7 +524,8 @@ public abstract class AbstractMathTransform extends FormattableObject
      * Transforms a list of coordinate tuples. The default implementation delegates
      * to {@link #transform(double[], int, double[], int, int)} using a temporary array of doubles.
      *
-     * <div class="note"><b>Implementation note:</b> see {@link IterationStrategy} javadoc for a method skeleton.</div>
+     * <h4>Implementation note</h4>
+     * See {@link IterationStrategy} javadoc for a method skeleton.
      *
      * @param  srcPts  the array containing the source point coordinates.
      * @param  srcOff  the offset to the first point to be transformed in the source array.
@@ -825,8 +825,8 @@ public abstract class AbstractMathTransform extends FormattableObject
      * {@code this} if this transform is an {@linkplain #isIdentity() identity} transform,
      * or throws an exception otherwise. Subclasses should override this method.
      *
-     * <div class="note"><b>Implementation note:</b> the {@link Inverse} inner class can be used as
-     * a base for inverse transform implementations.</div>
+     * <h4>Implementation note</h4>
+     * The {@link Inverse} inner class can be used as a base for inverse transform implementations.
      */
     @Override
     public MathTransform inverse() throws NoninvertibleTransformException {
@@ -1048,11 +1048,11 @@ public abstract class AbstractMathTransform extends FormattableObject
      * The default implementation formats all parameter values returned by {@link #getParameterValues()}.
      * The parameter group name is used as the math transform name.
      *
-     * <div class="note"><b>Compatibility note:</b>
+     * <h4>Compatibility note</h4>
      * {@code Param_MT} is defined in the WKT 1 specification only.
      * If the {@linkplain Formatter#getConvention() formatter convention} is set to WKT 2,
      * then this method silently uses the WKT 1 convention without raising an error
-     * (unless this {@code MathTransform} cannot be formatted as valid WKT 1 neither).</div>
+     * (unless this {@code MathTransform} cannot be formatted as valid WKT 1 neither).
      *
      * @param  formatter  the formatter to use.
      * @return the WKT element name, which is {@code "Param_MT"} in the default implementation.
@@ -1237,8 +1237,8 @@ public abstract class AbstractMathTransform extends FormattableObject
          * the WKT as in the {@linkplain AbstractMathTransform#formatWKT super-class method}.
          * Otherwise this method formats the math transform as an {@code "Inverse_MT"} entity.
          *
-         * <div class="note"><b>Compatibility note:</b>
-         * {@code Param_MT} and {@code Inverse_MT} are defined in the WKT 1 specification only.</div>
+         * <h4>Compatibility note</h4>
+         * {@code Param_MT} and {@code Inverse_MT} are defined in the WKT 1 specification only.
          *
          * @param  formatter  the formatter to use.
          * @return the WKT element name, which is {@code "Param_MT"} or
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
index 49220724fe..22c8da3fe3 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
@@ -65,11 +65,9 @@ public abstract class AbstractMathTransform2D extends AbstractMathTransform impl
     /**
      * Number of input and output dimensions of all {@code AbstractMathTransform2D}, which is {@value}.
      * We define this constant for clarity only; its value shall not be modified.
-     *
-     * <div class="note"><b>Purpose:</b>
-     * this is used for making clearer in the code when the literal 2 stands for the number of dimensions.
+     * This is used for making clearer in the code when the literal 2 stands for the number of dimensions.
      * It reduces confusion in contexts where the literal 2 also appear for other meanings than the number
-     * of dimensions.</div>
+     * of dimensions.
      *
      * @see #getSourceDimensions()
      * @see #getTargetDimensions()
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CartesianToPolar.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CartesianToPolar.java
index 37195cb0e0..1c77ffd9cb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CartesianToPolar.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CartesianToPolar.java
@@ -34,11 +34,11 @@ import static java.lang.Math.*;
  * <p>See {@link PolarToCartesian} for explanation on axes convention.
  * Axis order shall match the order defined by {@code Normalizer} in {@link org.apache.sis.referencing.cs} package.</p>
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Design note</h2>
  * We do not provide explicit {@code CartesianToCylindrical} implementation.  Instead, the cylindrical case is
  * implemented by the polar case with a {@link PassThroughTransform} for the height. This allows Apache SIS to
  * use the optimization implemented by {@code PassThroughTransform} when for example a concatenated transform
- * is dropping the <var>z</var> axis.</div>
+ * is dropping the <var>z</var> axis.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
index 26b2b03fe6..601d3636d1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
@@ -943,11 +943,12 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
      * Tests whether this transform does not move any points.
      * Implementation checks if the two transforms are identity.
      *
-     * <div class="note"><b>Note:</b> this method should always returns {@code false}, since
+     * <h4>Implementation note</h4>
+     * This method should always returns {@code false}, because
      * {@code create(…)} should have created specialized implementations for identity cases.
      * Nevertheless we perform the full check as a safety, in case someone instantiated this
      * class directly instead of using a factory method, or in case the given math transforms
-     * are mutable (they should not, be we cannot control what the user gave to us).</div>
+     * are mutable (they should not, be we cannot control what the user gave to us).
      */
     @Override
     public boolean isIdentity() {
@@ -985,8 +986,8 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
     /**
      * Formats the inner part of a <cite>Well Known Text</cite> version 1 (WKT 1) element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * {@code Concat_MT} is defined in the WKT 1 specification only.</div>
+     * <h4>Compatibility note</h4>
+     * {@code Concat_MT} is defined in the WKT 1 specification only.
      *
      * @param  formatter  the formatter to use.
      * @return the WKT element name, which is {@code "Concat_MT"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
index 8e8674bb78..e7f2c1edd8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
@@ -791,10 +791,10 @@ public class ContextualParameters extends Parameters implements Serializable {
         /**
          * Formats a <cite>Well Known Text</cite> version 1 (WKT 1) element for a transform using this group of parameters.
          *
-         * <div class="note"><b>Compatibility note:</b>
+         * <h4>Compatibility note</h4>
          * {@code Param_MT} is defined in the WKT 1 specification only.
          * If the {@linkplain Formatter#getConvention() formatter convention} is set to WKT 2,
-         * then this method silently uses the WKT 1 convention without raising an error.</div>
+         * then this method silently uses the WKT 1 convention without raising an error.
          *
          * @return {@code "Param_MT"}.
          */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CopyTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CopyTransform.java
index 6bb7a35755..1b44627a97 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CopyTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/CopyTransform.java
@@ -135,10 +135,11 @@ final class CopyTransform extends AbstractLinearTransform {
     /**
      * Tests whether this transform does not move any points.
      *
-     * <div class="note"><b>Note:</b> this method should always returns {@code false}, since
+     * <h4>Implementation note</h4>
+     * This method should always returns {@code false}, since
      * {@code MathTransforms.linear(…)} should have created specialized implementations for identity cases.
      * Nevertheless we perform the full check as a safety, in case someone instantiated this class directly
-     * instead of using a factory method.</div>
+     * instead of using a factory method.
      */
     @Override
     public boolean isIdentity() {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
index 95fdd872db..afeea50946 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
@@ -251,19 +251,18 @@ public abstract class DatumShiftTransform extends AbstractMathTransform implemen
      * because {@code DatumShiftTransform} instances are often preceeded and followed by linear conversions.
      * It may be conversions between degrees and radians units, or conversions from geodetic coordinates to grid indices.
      *
-     * <div class="note"><b>Example:</b>
-     *   The chain of transforms of an {@link InterpolatedGeocentricTransform} is:
-     *   <div class="horizontal-flow" style="align-items:center">
-     *     <div>{@include formulas.html#NormalizeGeographic}</div>
-     *     <div>→</div>
-     *     <div><ol style="padding-left: 15px">
-     *       <li>Geographic to geocentric conversion</li>
-     *       <li>Geocentric interpolation</li>
-     *       <li>Geocentric to geographic conversion</li>
-     *     </ol></div>
-     *     <div>→</div>
-     *     <div>{@include formulas.html#DenormalizeGeographic}</div>
-     *   </div>
+     * <h4>Example</h4>
+     * The chain of transforms of an {@link InterpolatedGeocentricTransform} is:
+     * <div class="horizontal-flow" style="align-items:center">
+     *   <div>{@include formulas.html#NormalizeGeographic}</div>
+     *   <div>→</div>
+     *   <div><ol style="padding-left: 15px">
+     *     <li>Geographic to geocentric conversion</li>
+     *     <li>Geocentric interpolation</li>
+     *     <li>Geocentric to geographic conversion</li>
+     *   </ol></div>
+     *   <div>→</div>
+     *   <div>{@include formulas.html#DenormalizeGeographic}</div>
      * </div>
      *
      * This method returns the parameters for the part in the middle of above example.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
index 78816976d7..75eea93437 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
@@ -215,11 +215,10 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
     /**
      * The methods by type. All uses of this map shall be synchronized on {@code methodsByType}.
      *
-     * <div class="note"><b>Note:</b>
-     * we do not use a concurrent map here because the number of entries is expected to be very small
+     * <h4>Implementation note</h4>
+     * We do not use a concurrent map here because the number of entries is expected to be very small
      * (about 2 entries), which make concurrent algorithms hardly efficient. Furthermore, this map is
      * not used often.
-     * </div>
      */
     private final Map<Class<?>, OperationMethodSet> methodsByType;
 
@@ -1287,12 +1286,12 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      * produce normalized output coordinates. See {@link org.apache.sis.referencing.cs.AxesConvention} for more
      * information about what Apache SIS means by "normalized".</p>
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The most typical examples of transforms with normalized inputs/outputs are normalized
      * map projections expecting (<cite>longitude</cite>, <cite>latitude</cite>) inputs in degrees
      * and calculating (<cite>x</cite>, <cite>y</cite>) coordinates in metres,
      * both of them with ({@linkplain org.opengis.referencing.cs.AxisDirection#EAST East},
-     * {@linkplain org.opengis.referencing.cs.AxisDirection#NORTH North}) axis orientations.</div>
+     * {@linkplain org.opengis.referencing.cs.AxisDirection#NORTH North}) axis orientations.
      *
      * <h4>Controlling the normalization process</h4>
      * Users who need a different normalized space than the default one way find more convenient to
@@ -1413,11 +1412,12 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      * not {@link DefaultMathTransformFactory} job to handle changes between arbitrary CRS (those changes are
      * handled by {@link org.apache.sis.referencing.operation.DefaultCoordinateOperationFactory} instead).
      *
-     * <div class="note"><b>Note:</b> the {@code parameterized} transform is a black box receiving inputs in
+     * <h4>Implementation note</h4>
+     * The {@code parameterized} transform is a black box receiving inputs in
      * any CS and producing outputs in any CS, not necessarily of the same kind. For that reason, we cannot use
      * {@link CoordinateSystems#swapAndScaleAxes(CoordinateSystem, CoordinateSystem)} between the normalized CS.
      * We have to trust that the caller know that the coordinate systems (s)he provided are correct for the work
-     * done by the transform.</div>
+     * done by the transform.
      *
      * @param  parameterized  the parameterized transform, for producing an error message if needed.
      * @param  context        the source and target coordinate system.
@@ -1492,13 +1492,13 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      * then the {@code ellipsoid} argument is mandatory. In all other cases (including the case where both
      * coordinate systems are ellipsoidal), the ellipsoid argument is ignored and can be {@code null}.
      *
-     * <div class="note"><b>Design note:</b>
-     * this method does not accept separated ellipsoid arguments for {@code source} and {@code target} because
+     * <h4>Design note</h4>
+     * This method does not accept separated ellipsoid arguments for {@code source} and {@code target} because
      * this method should not be used for datum shifts. If the two given coordinate systems are ellipsoidal,
      * then they are assumed to use the same ellipsoid. If different ellipsoids are desired, then a
      * {@linkplain #createParameterizedTransform parameterized transform} like <cite>"Molodensky"</cite>,
      * <cite>"Geocentric translations"</cite>, <cite>"Coordinate Frame Rotation"</cite> or
-     * <cite>"Position Vector transformation"</cite> should be used instead.</div>
+     * <cite>"Position Vector transformation"</cite> should be used instead.
      *
      * @param  source     the source coordinate system.
      * @param  target     the target coordinate system.
@@ -1608,12 +1608,6 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
     /**
      * Creates a transform which passes through a subset of coordinates to another transform.
      * This allows transforms to operate on a subset of coordinates.
-     *
-     * <div class="note"><b>Example:</b>
-     * Giving (<var>latitude</var>, <var>longitude</var>, <var>height</var>) coordinates,
-     * a pass through transform can convert the height values from meters to feet without
-     * affecting the (<var>latitude</var>, <var>longitude</var>) values.</div>
-     *
      * The resulting transform will have the following dimensions:
      *
      * {@snippet lang="java" :
@@ -1621,6 +1615,11 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      *     int targetDim = firstAffectedCoordinate + subTransform.getTargetDimensions() + numTrailingCoordinates;
      *     }
      *
+     * <h4>Example</h4>
+     * Giving (<var>latitude</var>, <var>longitude</var>, <var>height</var>) coordinates,
+     * a pass through transform can convert the height values from meters to feet without
+     * affecting the (<var>latitude</var>, <var>longitude</var>) values.
+     *
      * @param  firstAffectedCoordinate  the lowest index of the affected coordinates.
      * @param  subTransform             transform to use for affected coordinates.
      * @param  numTrailingCoordinates   number of trailing coordinates to pass through. Affected coordinates will range
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/EllipsoidToCentricTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/EllipsoidToCentricTransform.java
index e38b769da0..8165e7cd35 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/EllipsoidToCentricTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/EllipsoidToCentricTransform.java
@@ -208,11 +208,11 @@ public class EllipsoidToCentricTransform extends AbstractMathTransform implement
     /**
      * The inverse of this transform.
      *
-     * <div class="note"><b>Note:</b>
-     * creation of this object is not deferred to the first call to the {@link #inverse()} method because this
+     * <h4>Implementation note</h4>
+     * Creation of this object is not deferred to the first call to the {@link #inverse()} method because this
      * object is lightweight and typically needed soon anyway (may be as soon as {@code ConcatenatedTransform}
      * construction time). In addition this field is part of serialization form in order to preserve the
-     * references graph.</div>
+     * references graph.
      */
     @SuppressWarnings("serial")                     // Most SIS implementations are serializable.
     private final AbstractMathTransform inverse;
@@ -408,11 +408,11 @@ public class EllipsoidToCentricTransform extends AbstractMathTransform implement
      * Returns a copy of internal parameter values of this {@code EllipsoidToCentricTransform} transform.
      * The returned group contains parameter values for the number of dimensions and the eccentricity.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
+     * <h4>Usage note</h4>
+     * This method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
      * since the isolation of non-linear parameters in this class is highly implementation dependent.
      * Most GIS applications will instead be interested in the {@linkplain #getContextualParameters()
-     * contextual parameters}.</div>
+     * contextual parameters}.
      *
      * @return a copy of the internal parameter values for this transform.
      */
@@ -481,10 +481,10 @@ public class EllipsoidToCentricTransform extends AbstractMathTransform implement
      * This method relaxes a little bit the {@code MathTransform} contract by accepting two- or three-dimensional
      * points even if the number of dimensions does not match the {@link #getSourceDimensions()} value.
      *
-     * <div class="note"><b>Rational:</b>
-     * that flexibility on the number of dimensions is required for calculation of {@linkplain #inverse() inverse}
+     * <h4>Rational</h4>
+     * That flexibility on the number of dimensions is required for calculation of {@linkplain #inverse() inverse}
      * transform derivative, because that calculation needs to inverse a square matrix with all terms in it before
-     * to drop the last row in the two-dimensional case.</div>
+     * to drop the last row in the two-dimensional case.
      *
      * @param  point  the position where to evaluate the derivative.
      * @return the derivative at the specified point (never {@code null}).
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
index 737a9c2265..087933e6df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
@@ -72,10 +72,11 @@ final class ExponentialTransform1D extends AbstractMathTransform1D implements Se
     /**
      * The scale value to be multiplied.
      *
-     * <div class="note">The scale could be handled by a concatenation with {@link LinearTransform1D} instead of
-     * an explicit field in this class. However, the <var>scale</var>⋅<var>base</var><sup><var>x</var></sup> formula
-     * is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently, we keep this explicit
-     * field for performance reasons.</div>
+     * <h4>Implementation note</h4>
+     * The scale could be handled by a concatenation with {@link LinearTransform1D} instead of an explicit
+     * field in this class. However, the <var>scale</var>⋅<var>base</var><sup><var>x</var></sup> formula
+     * is extensively used as a <cite>transfer function</cite> in grid coverages.
+     * Consequently, we keep this explicit field for performance reasons.
      */
     final double scale;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedGeocentricTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedGeocentricTransform.java
index 2320e3ee9e..09bae0b9f9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedGeocentricTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedGeocentricTransform.java
@@ -60,7 +60,8 @@ import org.apache.sis.util.ArgumentChecks;
  *   <li>Convert the shifted geocentric coordinate (X+ΔX, Y+ΔY, Z+ΔZ) back to a geographic coordinate.</li>
  * </ol>
  *
- * <div class="note"><b>Source:</b> IGN document {@code NTG_88.pdf},
+ * <h3>Reference</h3>
+ * IGN document {@code NTG_88.pdf},
  * <cite>"Grille de paramètres de transformation de coordonnées"</cite>
  * at <a href="http://www.ign.fr">http://www.ign.fr</a>.
  * Note however that the signs of (ΔX, ΔY, ΔZ) values expected by this class are the opposite of the
@@ -70,7 +71,7 @@ import org.apache.sis.util.ArgumentChecks;
  * <p><b>Note:</b> this algorithm is not the same as a (theoretical) {@link EllipsoidToCentricTransform} →
  * {@link InterpolatedTransform} → (inverse of {@code EllipsoidToCentricTransform}) concatenation
  * because the {@code DatumShiftGrid} inputs are geographic coordinates even if the interpolated
- * grid values are in geocentric space.</p></div>
+ * grid values are in geocentric space.</p>
  *
  * <h2>Performance consideration</h2>
  * {@link InterpolatedMolodenskyTransform} performs the same calculation more efficiently at the cost of
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedMolodenskyTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedMolodenskyTransform.java
index 1008bce1df..5ece127daf 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedMolodenskyTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedMolodenskyTransform.java
@@ -432,11 +432,11 @@ public class InterpolatedMolodenskyTransform extends MolodenskyFormula {
      * The returned group contains parameters for the source ellipsoid semi-axis lengths and the differences between
      * source and target ellipsoid parameters.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
+     * <h4>Usage note</h4>
+     * This method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
      * since the isolation of non-linear parameters in this class is highly implementation dependent.
      * Most GIS applications will instead be interested in the {@linkplain #getContextualParameters()
-     * contextual parameters}.</div>
+     * contextual parameters}.
      *
      * @return a description of the internal parameters.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
index 1815536d47..3dda442e1f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
@@ -46,8 +46,7 @@ import org.apache.sis.internal.referencing.DirectPositionView;
  * two-dimensional {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic CRS}.
  * The actual number of dimensions is determined by {@link DatumShiftGrid#getTranslationDimensions()}.
  *
- * <div class="note"><b>Example:</b>
- * this transform is used for example with NADCON and NTv2 datum shift grids.</div>
+ * <p>This transform is used for example with NADCON and NTv2 datum shift grids.</p>
  *
  * <h2>Input and output coordinates</h2>
  * First, <cite>"real world"</cite> input coordinates (<var>x</var>,<var>y</var>) are converted to
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
index bc7f110505..616977fbac 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
@@ -47,9 +47,9 @@ import org.apache.sis.util.resources.Errors;
  * surprising behavior when computing a data cube envelope, which may need extrapolation by 0.5
  * pixel before the first value or after the last value.
  *
- * <div class="note"><b>Example:</b>
- * if a vertical dimension is made of slices at y₀=5, y₁=10, y₂=100 and y₃=250 meters, then linear
- * interpolation at 0.5 is 7.5 meters and extrapolation at -0.5 is expected to give 2.5 meters.</div>
+ * <h3>Example</h3>
+ * If a vertical dimension is made of slices at y₀=5, y₁=10, y₂=100 and y₃=250 meters, then linear
+ * interpolation at 0.5 is 7.5 meters and extrapolation at -0.5 is expected to give 2.5 meters.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
index e95bb30a42..a3ed8bc61f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
@@ -102,10 +102,10 @@ public interface LinearTransform extends MathTransform {
      * Distance vectors are transformed without applying the translation components.
      * The supplied array of distance values will contain packed values.
      *
-     * <div class="note"><b>Example:</b> if the source dimension is 3, then the values will be packed in this order:
+     * <h4>Example</h4>
+     * If the source dimension is 3, then the values will be packed in this order:
      * (<var>Δx₀</var>,<var>Δy₀</var>,<var>Δz₀</var>,
      *  <var>Δx₁</var>,<var>Δy₁</var>,<var>Δz₁</var> …).
-     * </div>
      *
      * @param  srcPts  the array containing the source vectors.
      * @param  srcOff  the offset to the first vector to be transformed in the source array.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
index 5f8f1f2b33..61f4c8c270 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
@@ -290,10 +290,11 @@ class LogarithmicTransform1D extends AbstractMathTransform1D implements Serializ
         /**
          * The offset to add to the logarithm.
          *
-         * <div class="note"><b>Note:</b> the offset could be handled by a concatenation with {@link LinearTransform1D}.
+         * <h4>Implementation note</h4>
+         * The offset could be handled by a concatenation with {@link LinearTransform1D}.
          * instead of an explicit field in this class. However, the <var>offset</var> + log<sub>base</sub>(<var>x</var>)
          * formula is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently, we keep this
-         * explicit field for performance reasons.</div>
+         * explicit field for performance reasons.
          */
         private final double offset;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
index 63227debbc..da8766841d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
@@ -214,11 +214,11 @@ abstract class MolodenskyFormula extends DatumShiftTransform {
      * The returned group contains parameters for the source ellipsoid semi-axis lengths
      * and the differences between source and target ellipsoid parameters.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
+     * <h4>Usage note</h4>
+     * This method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
      * since the isolation of non-linear parameters in this class is highly implementation dependent.
      * Most GIS applications will instead be interested in the {@linkplain #getContextualParameters()
-     * contextual parameters}.</div>
+     * contextual parameters}.
      *
      * @return a copy of the internal parameter values for this transform.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyTransform.java
index d2fd156400..d2856e6542 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyTransform.java
@@ -389,11 +389,11 @@ public class MolodenskyTransform extends MolodenskyFormula {
      * Returns a description of the internal parameters of this {@code MolodenskyTransform} transform.
      * The returned group contains parameter descriptors for the number of dimensions and the eccentricity.
      *
-     * <div class="note"><b>Note:</b>
-     * this method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
+     * <h4>Usage note</h4>
+     * This method is mostly for {@linkplain org.apache.sis.io.wkt.Convention#INTERNAL debugging purposes}
      * since the isolation of non-linear parameters in this class is highly implementation dependent.
      * Most GIS applications will instead be interested in the {@linkplain #getContextualParameters()
-     * contextual parameters}.</div>
+     * contextual parameters}.
      *
      * @return a description of the internal parameters.
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
index aea2fa1455..73bfb301b0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
@@ -923,11 +923,11 @@ public class PassThroughTransform extends AbstractMathTransform implements Seria
     /**
      * Formats this transform as a <cite>Well Known Text</cite> version 1 (WKT 1) element.
      *
-     * <div class="note"><b>Compatibility note:</b>
+     * <h4>Compatibility note</h4>
      * {@code PassThrough_MT} is defined in the WKT 1 specification only.
      * If the {@linkplain Formatter#getConvention() formatter convention} is set to WKT 2,
      * then this method silently uses the WKT 1 convention without raising an error
-     * (unless this {@code PassThroughTransform} cannot be formatted as valid WKT 1 neither).</div>
+     * (unless this {@code PassThroughTransform} cannot be formatted as valid WKT 1 neither).
      *
      * @param  formatter  the formatter to use.
      * @return the WKT element name, which is {@code "PassThrough_MT"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PolarToCartesian.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PolarToCartesian.java
index 0081c477b3..d1fe42bb68 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PolarToCartesian.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PolarToCartesian.java
@@ -47,11 +47,11 @@ import static java.lang.Math.*;
  *
  * Axis order shall match the order defined by {@code Normalizer} in {@link org.apache.sis.referencing.cs} package.
  *
- * <div class="note"><b>Note:</b>
+ * <h2>Design note</h2>
  * We do not provide explicit {@code CylindricalToCartesian} implementation.  Instead, the cylindrical case is
  * implemented by the polar case with a {@link PassThroughTransform} for the height. This allows Apache SIS to
  * use the optimization implemented by {@code PassThroughTransform} when for example a concatenated transform
- * is dropping the <var>z</var> axis.</div>
+ * is dropping the <var>z</var> axis.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ScaleTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ScaleTransform.java
index 6f03a30b1d..8279749d12 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ScaleTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ScaleTransform.java
@@ -32,8 +32,9 @@ import org.apache.sis.util.ArgumentChecks;
  * An affine transform that multiply the coordinate values by constant values, and optionally drop the last coordinates.
  * This is an optimization of {@link ProjectiveTransform} for a common case.
  *
- * <div class="note"><b>Note:</b> we do not provide two-dimensional specialization because
- * {@link org.apache.sis.internal.referencing.j2d.AffineTransform2D} should be used in such case.</div>
+ * <h4>Design note</h4>
+ * We do not provide two-dimensional specialization because
+ * {@link org.apache.sis.internal.referencing.j2d.AffineTransform2D} should be used in such case.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
index 818d59c19a..7b044d5b1a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
@@ -482,8 +482,8 @@ class SpecializableTransform extends AbstractMathTransform implements Serializab
     /**
      * Formats the inner part of a <cite>Well Known Text</cite> version 1 (WKT 1) element.
      *
-     * <div class="note"><b>Compatibility note:</b>
-     * The {@code SPECIALIZABLE_MT} element formatted here is an Apache SIS-specific extension.</div>
+     * <h4>Compatibility note</h4>
+     * The {@code SPECIALIZABLE_MT} element formatted here is an Apache SIS-specific extension.
      *
      * @param  formatter  the formatter to use.
      * @return the WKT element name, which is {@code "Specializable_MT"}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SphericalToCartesian.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SphericalToCartesian.java
index 69957e2c4c..c532f36954 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SphericalToCartesian.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SphericalToCartesian.java
@@ -42,10 +42,10 @@ import static java.lang.Math.*;
  * It shall also match the order defined by {@code Normalizer} in {@link org.apache.sis.referencing.cs} package.
  * Note that this is <strong>not</strong> the convention used neither in physics (ISO 80000-2:2009) or in mathematics.
  *
- * <div class="note"><b>Relationship with the convention used in physics</b>
+ * <h4>Relationship with the convention used in physics</h4>
  * The ISO 80000-2 convention is (r,Ω,φ) where φ is like the spherical longitude, and Ω is measured from
  * the Z axis (North pole) instead of from the equator plane. The consequence in the formulas is that
- * {@code sin(Ω)} needs to be replaced by {@code cos(Ω)} and conversely.</div>
+ * {@code sin(Ω)} needs to be replaced by {@code cos(Ω)} and conversely.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TranslationTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TranslationTransform.java
index 91397b390a..1ab3b10581 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TranslationTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TranslationTransform.java
@@ -28,8 +28,9 @@ import org.apache.sis.util.ArgumentChecks;
 /**
  * An affine transform that translate the coordinate values by constant values.
  *
- * <div class="note"><b>Note:</b> we do not provide two-dimensional specialization because
- * {@link org.apache.sis.internal.referencing.j2d.AffineTransform2D} should be used in such case.</div>
+ * <h2>Design note</h2>
+ * We do not provide two-dimensional specialization because
+ * {@link org.apache.sis.internal.referencing.j2d.AffineTransform2D} should be used in such case.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.4
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
index cec98454b9..54186aaca6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
@@ -114,12 +114,12 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
      * <p>This field is used for inverse transforms only; it has no effect on the forward transforms.
      * If not NaN, this value is used for building the transform returned by {@link #inverse()}.</p>
      *
-     * <div class="note"><b>Note:</b>
-     * there is no {@code targetMedian} field because the target median is fixed to 0 in {@code WraparoundTransform}.
+     * <h4>Design note</h4>
+     * There is no {@code targetMedian} field because the target median is fixed to 0 in {@code WraparoundTransform}.
      * Non-zero target medians are implemented by {@linkplain MathTransforms#translation(double...) translations}
      * applied before and after {@code WraparoundTransform}. Because of this translation, the value of this field
      * is related to the arguments given to the {@link #create create(…)} method by
-     * {@code this.sourceMeridian = sourceMeridian - targetMeridian}.</div>
+     * {@code this.sourceMeridian = sourceMeridian - targetMeridian}.
      */
     public final double sourceMedian;
 
@@ -192,14 +192,13 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
      * <p>The {@code sourceMedian} argument is optional (can be {@link Double#NaN} if unknown) and has no effect on
      * the forward transform. This argument is used only for creating the {@linkplain #inverse() inverse} transform.</p>
      *
-     * <div class="note"><b>Examples:</b>
-     *   <ul>
-     *     <li>Wraparound longitudes in (φ,λ) coordinates from [-180 … +180]° range to [0 … 360]° range:
-     *         {@code create(2, 0, 360, 0, 180)}.</li>
-     *     <li>Wraparound longitudes in (φ,λ,h) coordinates from unknown range to [-180 … +180]° range:
-     *         {@code create(3, 0, 360, Double.NaN, 0)} (non-invertible).</li>
-     *   </ul>
-     * </div>
+     * <h4>Examples</h4>
+     * <ul>
+     *   <li>Wraparound longitudes in (φ,λ) coordinates from [-180 … +180]° range to [0 … 360]° range:
+     *       {@code create(2, 0, 360, 0, 180)}.</li>
+     *   <li>Wraparound longitudes in (φ,λ,h) coordinates from unknown range to [-180 … +180]° range:
+     *       {@code create(3, 0, 360, Double.NaN, 0)} (non-invertible).</li>
+     * </ul>
      *
      * @param  dimension            number of dimensions of the transform to create.
      * @param  wraparoundDimension  dimension where wraparound happens.
@@ -363,13 +362,13 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
     /**
      * Gets the derivative of this transform at a point.
      *
-     * <div class="note"><b>Mathematical note:</b>
-     * strictly speaking the derivative at (<var>n</var> + 0.5) × {@link #period} where <var>n</var> is an integer
+     * <h4>Mathematical note</h4>
+     * Strictly speaking the derivative at (<var>n</var> + 0.5) × {@link #period} where <var>n</var> is an integer
      * should be infinite because the coordinate value jumps "instantaneously" from any value to ±{@link #period}/2.
      * However, in practice we use derivatives as linear approximations around small regions, not for calculations
      * requiring strict mathematical values. An infinite value goes against the approximation goal.
      * Furthermore, whether a source coordinate is an integer value or not is subject to rounding errors,
-     * which may cause unpredictable behavior if infinite values were returned.</div>
+     * which may cause unpredictable behavior if infinite values were returned.
      *
      * @param  point  the position where to evaluate the derivative
      *                (ignored in default implementation, may be {@code null}).
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
index 3467509dfc..ae389e2fd0 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterFormatTest.java
@@ -54,10 +54,8 @@ public final class ParameterFormatTest extends TestCase {
     /**
      * Creates the parameter descriptors to be used by all tests in this class. This method creates
      * a variant of the example documented in the {@link DefaultParameterDescriptorGroup} javadoc
-     * with arbitrary non-zero default values.
-     *
-     * <div class="note"><b>Note:</b>
-     * the default values are not part of EPSG definitions. They are added here only for testing purpose.</div>
+     * with arbitrary non-zero default values. Those default values are not part of EPSG definitions.
+     * They are added here only for testing purpose.
      */
     @BeforeClass
     public static void createParameterDescriptor() {
@@ -66,9 +64,7 @@ public final class ParameterFormatTest extends TestCase {
 
     /**
      * Creates the test parameters for the Mercator projection, to be shared by {@link ParameterMarshallingTest}.
-     *
-     * <div class="note"><b>Note:</b>
-     * the default values are not part of EPSG definitions. They are added here only for testing purpose.</div>
+     * The default values are not part of EPSG definitions. They are added here only for testing purpose.
      */
     static ParameterDescriptorGroup createMercatorParameters() {
         ParameterBuilder builder = new ParameterBuilder();
@@ -190,10 +186,8 @@ public final class ParameterFormatTest extends TestCase {
 
     /**
      * Tests {@link ParameterFormat#format(Object, Appendable)} for descriptors with {@code ContentLevel.DETAILED}.
-     *
-     * <div class="note"><b>Note:</b>
-     * the default values expected by this method are not part of EPSG definitions.
-     * They are added here only for testing purpose.</div>
+     * The default values expected by this method are not part of EPSG definitions.
+     * They are added here only for testing purpose.
      */
     @Test
     public void testFormatDetailedDescriptors() {
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
index 5bf4a17221..079bf3fa0a 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
@@ -393,7 +393,7 @@ public class GeodeticCalculatorTest extends TestCase {
      * fraction of the expected resolution <var>r</var>. Consequently, the values in ∆x/r and ∆y/r columns should be less
      * than 1.
      *
-     * <div class="note"><b>Note:</b> the state of the given calculator is modified by this method.</div>
+     * <p>The state of the given calculator is modified by this method.</p>
      *
      * @param  resolution  tolerance threshold for the curve approximation, in metres.
      * @return statistics about errors relative to the resolution.
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
index 7f3439bcd8..2c38f5cc0e 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
@@ -134,11 +134,10 @@ public final class DefaultDerivedCRSTest extends TestCase {
      * Tests the WKT 1 formatting.
      * Note that in the particular case of {@code DerivedCRS}, WKT 1 and WKT 2 formats are very different.
      *
-     * <div class="note"><b>Note:</b>
      * The CRS formatted by this test is a dummy CRS which should not exist in the reality.
      * In particular, we use <cite>"Longitude rotation"</cite> (EPSG:9601) as if it was a conversion,
      * while in reality it is a transformation. We do that only because this operation is so simple,
-     * it is easy to create and test.</div>
+     * it is easy to create and test.
      */
     @Test
     @DependsOnMethod("testConstruction")
@@ -165,11 +164,10 @@ public final class DefaultDerivedCRSTest extends TestCase {
      * Tests the WKT 2 formatting.
      * Note that in the particular case of {@code DerivedCRS}, WKT 1 and WKT 2 formats are very different.
      *
-     * <div class="note"><b>Note:</b>
      * The CRS formatted by this test is a dummy CRS which should not exist in the reality.
      * In particular, we use <cite>"Longitude rotation"</cite> (EPSG:9601) as if it was a conversion,
      * while in reality it is a transformation. We do that only because this operation is so simple,
-     * it is easy to create and test.</div>
+     * it is easy to create and test.
      */
     @Test
     @DependsOnMethod("testWKT1")
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
index 1b2d73236a..7c68c52a47 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
@@ -212,9 +212,7 @@ public final class DefaultConversionTest extends TestCase {
     /**
      * Creates a defining conversion and tests {@link DefaultConversion#specialize DefaultConversion.specialize(…)}.
      * This test includes a swapping of axis order in the <em>source</em> CRS.
-     *
-     * <div class="note"><b>Note:</b>
-     * By contrast, {@link #testSpecialize()} will test swapping axis order in the <em>target</em> CRS.</div>
+     * By contrast, {@link #testSpecialize()} will test swapping axis order in the <em>target</em> CRS.
      *
      * @throws FactoryException if an error occurred while creating the conversion.
      */
@@ -251,9 +249,7 @@ public final class DefaultConversionTest extends TestCase {
     /**
      * Tests {@link DefaultConversion#specialize DefaultConversion.specialize(…)} with new source and target CRS.
      * This test attempts to swap axis order and change the number of dimensions of the <em>target</em> CRS.
-     *
-     * <div class="note"><b>Note:</b>
-     * By contrast, {@link #testDefiningConversion()} tested swapping axis order in the <em>source</em> CRS.</div>
+     * By contrast, {@link #testDefiningConversion()} tested swapping axis order in the <em>source</em> CRS.
      *
      * @throws FactoryException if an error occurred while creating the conversion.
      */
@@ -291,12 +287,12 @@ public final class DefaultConversionTest extends TestCase {
      * In this test, we invent an imaginary scenario where the longitude rotation to apply varies with time
      * (a "moving prime meridian").
      *
-     * <div class="note"><b>Note:</b>
-     * from some point of view, this scenario is not as weird as it may look like. The Greenwich prime meridian
+     * <h4>Note</h4>
+     * From some point of view, this scenario is not as weird as it may look like. The Greenwich prime meridian
      * was initially the meridian passing through the telescope of the Greenwich observatory. But when a new
      * more powerful telescopes was built, is was installed a few metres far from the old one. So if we were
      * staying to a strict interpretation like "the meridian passing through the main telescope",
-     * that meridian would indeed more with time.</div>
+     * that meridian would indeed more with time.
      *
      * @throws FactoryException if an error occurred while creating the conversion.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
index 8ec53f7fc2..cb65552699 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
@@ -78,9 +78,8 @@ public final class MatricesTest extends TestCase {
      * Tests {@link Matrices#createTransform(AxisDirection[], AxisDirection[])} with the same sequence of axes.
      * The result shall be an identity matrix.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     public void testCreateTransformWithSameAxes() {
@@ -100,9 +99,8 @@ public final class MatricesTest extends TestCase {
      * Axes are moved in different positions, and some axes will have opposite directions.
      * However, the number of axes stay the same.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     @DependsOnMethod("testCreateTransformWithSameAxes")
@@ -128,9 +126,8 @@ public final class MatricesTest extends TestCase {
      * Tests {@link Matrices#createTransform(AxisDirection[], AxisDirection[])} with less axes
      * in the destination than in the source.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     @DependsOnMethod("testCreateTransformWithDifferentAxes")
@@ -154,9 +151,8 @@ public final class MatricesTest extends TestCase {
      * Tests {@link Matrices#createTransform(AxisDirection[], AxisDirection[])} with the axis repeated twice.
      * This unusual, but shall nevertheless be supported.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     @DependsOnMethod("testCreateTransformWithLessAxes")
@@ -180,9 +176,8 @@ public final class MatricesTest extends TestCase {
      * Tests that {@link Matrices#createTransform(AxisDirection[], AxisDirection[])}
      * throw an exception if a destination axis is not in the source.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     public void testCreateTransformWithAxisNotInSource() {
@@ -200,9 +195,8 @@ public final class MatricesTest extends TestCase {
      * Tests that {@link Matrices#createTransform(AxisDirection[], AxisDirection[])}
      * throw an exception if the arguments contain colinear axis directions.
      *
-     * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
-     * because this method will be the most frequently invoked one when building CRS.</div>
+     * because this method will be the most frequently invoked one when building CRS.
      */
     @Test
     public void testCreateTransformWithColinearAxes() {
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedExecutor.java b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedExecutor.java
index 8e0d2d87a4..c2490a7d00 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedExecutor.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedExecutor.java
@@ -98,10 +98,10 @@ public final class DelayedExecutor extends DaemonThread {
      * Constructs a new thread as a daemon thread. This thread will be sleeping most of the time.
      * It will run only only a few nanoseconds every time a new {@link DelayedRunnable} is taken.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Design note</h4>
      * We give to this thread a priority higher than the normal one since this thread shall
      * execute only tasks to be completed very shortly. Quick execution of those tasks is at
-     * the benefit of the rest of the system, since they make more resources available sooner.</div>
+     * the benefit of the rest of the system, since they make more resources available sooner.
      */
     private DelayedExecutor(final DaemonThread lastCreatedDaemon) {
         super("DelayedExecutor", lastCreatedDaemon);
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedRunnable.java b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedRunnable.java
index 4dc85b2257..1c6442ae10 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedRunnable.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DelayedRunnable.java
@@ -24,10 +24,10 @@ import java.util.concurrent.atomic.AtomicLong;
 /**
  * A task to be submitted to {@link DelayedExecutor} for later execution.
  *
- * <div class="note"><b>Design note:</b>
- * we considered removing this interface in favor a library-wide executor instead of {@code DelayedExecutor}.
+ * <h2>Design note</h2>
+ * We considered removing this interface in favor a library-wide executor instead of {@code DelayedExecutor}.
  * But benchmarks suggested that this lightweight approach for the specific needs of SIS is preferable.
- * See <a href="https://issues.apache.org/jira/browse/SIS-76">SIS-76</a> for more information.</div>
+ * See <a href="https://issues.apache.org/jira/browse/SIS-76">SIS-76</a> for more information.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.0
@@ -39,11 +39,10 @@ public abstract class DelayedRunnable implements Delayed, Runnable {
      * In the particular case of the {@link Immediate} subclass, the meaning of this field is
      * modified: it is rather an ordinal value used for preserving task order.
      *
-     * <div class="note"><b>Note:</b>
-     * we use {@link System#nanoTime()} instead of {@link System#currentTimeMillis()} because
+     * <h4>Implementation note</h4>
+     * We use {@link System#nanoTime()} instead of {@link System#currentTimeMillis()} because
      * the latter is not guaranteed to be monotonic: {@code currentTimeMillis} may change abruptly
      * for example if the user adjusts the clock of his operating system.
-     * </div>
      */
     final long timestamp;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/system/ReferenceQueueConsumer.java b/core/sis-utility/src/main/java/org/apache/sis/internal/system/ReferenceQueueConsumer.java
index 17a2fead71..50cef1bf97 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/system/ReferenceQueueConsumer.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/system/ReferenceQueueConsumer.java
@@ -79,10 +79,10 @@ public final class ReferenceQueueConsumer extends DaemonThread {
      * Constructs a new thread as a daemon thread. This thread will be sleeping most of the time.
      * It will run only only a few nanoseconds every time a new {@link Reference} is enqueued.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Implementation note</h4>
      * We give to this thread a priority higher than the normal one since this thread shall
      * execute only tasks to be completed very shortly. Quick execution of those tasks is at
-     * the benefit of the rest of the system, since they make more resources available sooner.</div>
+     * the benefit of the rest of the system, since they make more resources available sooner.
      */
     private ReferenceQueueConsumer(final DaemonThread lastCreatedDaemon) {
         super("ReferenceQueueConsumer", lastCreatedDaemon);
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
index 2633b36800..542fa80b35 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
@@ -269,11 +269,11 @@ public final class CollectionsExt extends Static {
      *   <li>Otherwise this method throws {@link IllegalArgumentException}.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Design note</h4>
      * It would be very easy to add support for {@code value} argument of type {@code Object[]} or collections.
      * But we do not provide such support for now because this method is used mostly as a helper method for
      * constructors of {@code AbstractIdentifiedObject} subclasses receiving a map of properties,
-     * and the contract of our constructors do not allow those other types for now.</div>
+     * and the contract of our constructors do not allow those other types for now.
      *
      * @param  <E>         the type of elements in the array to be returned.
      * @param  name        the parameter name, used only for formatting an error message in case of failure.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
index 595da59529..7e28910a07 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DefinitionURI.java
@@ -126,9 +126,9 @@ public final class DefinitionURI {
     /**
      * The separator between {@linkplain #components} in a URN.
      *
-     * <div class="note"><b>Example:</b>
-     * in {@code "urn:ogc:def:crs,crs:EPSG:9.1:27700,crs:EPSG:9.1:5701"}, the components are
-     * {@code "crs:EPSG:9.1:27700"} and {@code "crs:EPSG:9.1:5701"}.</div>
+     * <h4>Example</h4>
+     * In {@code "urn:ogc:def:crs,crs:EPSG:9.1:27700,crs:EPSG:9.1:5701"}, the components are
+     * {@code "crs:EPSG:9.1:27700"} and {@code "crs:EPSG:9.1:5701"}.
      */
     public static final char COMPONENT_SEPARATOR = ',';
 
@@ -136,27 +136,24 @@ public final class DefinitionURI {
      * The separator between a URL and its first {@linkplain #components}.
      * In URL syntax, this is the separator between URL path and the query.
      *
-     * <div class="note"><b>Example:</b><code>
-     * http://www.opengis.net/def/crs-compound<u>?</u>1=…&amp;2=…
-     * </code></div>
+     * <h4>Example</h4>
+     * <code>http://www.opengis.net/def/crs-compound<u>?</u>1=…&amp;2=…</code>
      */
     private static final char COMPONENT_SEPARATOR_1 = '?';
 
     /**
      * The separator between {@linkplain #components} in a URL after the first component.
      *
-     * <div class="note"><b>Example:</b><code>
-     * http://www.opengis.net/def/crs-compound?1=…<u>&amp;</u>2=…
-     * </code></div>
+     * <h4>Example</h4>
+     * <code>http://www.opengis.net/def/crs-compound?1=…<u>&amp;</u>2=…</code>
      */
     private static final char COMPONENT_SEPARATOR_2 = '&';
 
     /**
      * Separator between keys and values in the query part of a URL.
      *
-     * <div class="note"><b>Example:</b><code>
-     * http://www.opengis.net/def/crs-compound?1<u>=</u>…&amp;2<u>=</u>…
-     * </code></div>
+     * <h4>Example</h4>
+     * <code>http://www.opengis.net/def/crs-compound?1<u>=</u>…&amp;2<u>=</u>…</code>
      */
     private static final char KEY_VALUE_SEPARATOR = '=';
 
@@ -198,8 +195,8 @@ public final class DefinitionURI {
      * Note that the set of valid types in OGC namespace is restricted.
      * See class javadoc for more information.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "crs"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "crs"}.
      *
      * @see org.apache.sis.internal.metadata.NameMeaning#toObjectType(Class)
      */
@@ -210,8 +207,8 @@ public final class DefinitionURI {
      * Note that the set of valid authorities in OGC namespace is restricted.
      * See class javadoc for more information.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "EPSG"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "EPSG"}.
      */
     public String authority;
 
@@ -219,48 +216,48 @@ public final class DefinitionURI {
      * The version part of a URI, or {@code null} if none (empty).
      * This field is null if the version in the parsed string was {@value #NO_VERSION}.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "8.2"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "8.2"}.
      */
     public String version;
 
     /**
      * The code part of a URI, or {@code null} if none (empty).
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "4326"}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:EPSG:8.2:4326"} URN, this is {@code "4326"}.
      */
     public String code;
 
     /**
      * The parameters, or {@code null} if none.
      *
-     * <div class="note"><b>Example:</b>
-     * In the {@code "urn:ogc:def:crs:OGC:1.3:AUTO42003:1:-100:45"} URN, this is <code>{"1", "-100", "45"}</code>}.</div>
+     * <h4>Example</h4>
+     * In the {@code "urn:ogc:def:crs:OGC:1.3:AUTO42003:1:-100:45"} URN, this is <code>{"1", "-100", "45"}</code>}.
      */
     public String[] parameters;
 
     /**
      * If the URI contains sub-components, those sub-components. Otherwise {@code null}.
+     * Note that this array may contain {@code null} elements if we failed to parse the corresponding component.
      *
-     * <div class="note"><b>URN example:</b>
-     * if the URI is {@code "urn:ogc:def:crs,crs:EPSG:9.1:27700,crs:EPSG:9.1:5701"}, then this
+     * <h4>URN example</h4>
+     * If the URI is {@code "urn:ogc:def:crs,crs:EPSG:9.1:27700,crs:EPSG:9.1:5701"}, then this
      * {@code DefinitionURI} will contain the {@code "urn:ogc:def:crs"} header with two components:
      * <ol>
      *   <li>{@code "urn:ogc:def:crs:EPSG:9.1:27700"}</li>
      *   <li>{@code "urn:ogc:def:crs:EPSG:9.1:5701"}</li>
-     * </ol></div>
+     * </ol>
      *
-     * <div class="note"><b>HTTP example:</b> if the URI is
+     * <h4>HTTP example</h4>
+     * If the URI is
      * {@code "http://www.opengis.net/def/crs-compound?1=(…)/crs/EPSG/9.1/27700&2=(…)/crs/EPSG/9.1/5701"},
      * then this {@code DefinitionURI} will contain the {@code "http://www.opengis.net/def/crs-compound"}
      * header with two components:
      * <ol>
      *   <li>{@code "http://http://www.opengis.net/def/crs/EPSG/9.1/27700"}</li>
      *   <li>{@code "http://http://www.opengis.net/def/crs/EPSG/9.1/5701"}</li>
-     * </ol></div>
-     *
-     * Note that this array may contain {@code null} elements if we failed to parse the corresponding component.
+     * </ol>
      */
     public DefinitionURI[] components;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/StandardDateFormat.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/StandardDateFormat.java
index db27b990a7..e95ae91f26 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/StandardDateFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/StandardDateFormat.java
@@ -109,9 +109,9 @@ public final class StandardDateFormat extends DateFormat {
      * The kinds of objects to get from calls to {@link #parseBest(CharSequence)}, in preference order.
      * The time is converted to UTC timezone if possible.
      *
-     * <div class="note"><b>Tip:</b>
-     * if we want to preserve the timezone instead of converting to UTC, we could try replacing
-     * {@code Instant::from} by {@code ZonedDateTime::from, OffsetDateTime::from}.</div>
+     * <h4>Alternative</h4>
+     * If we want to preserve the timezone instead of converting to UTC, we could try replacing
+     * {@code Instant::from} by {@code ZonedDateTime::from, OffsetDateTime::from}.
      *
      * @see #parseInstantUTC(CharSequence, int, int)
      */
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/TreeFormatCustomization.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/TreeFormatCustomization.java
index 39c6aff0d2..bcccd9368a 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/TreeFormatCustomization.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/TreeFormatCustomization.java
@@ -26,13 +26,13 @@ import org.apache.sis.util.collection.TreeTableFormat;
  * are invoked by {@link TreeTableFormat#format(TreeTable, Appendable)} before to format the tree.
  * Non-null return values are merged with the {@code TreeTableFormat} configuration.
  *
- * <div class="note"><b>Design note:</b>
+ * <h2>Design note</h2>
  * methods in this class are invoked for configuring the formatter before to write the tree.
  * We do not use this interface as callbacks invoked for individual rows during formatting.
  * The reason is that functions provided by this interface may need to manage a state
  * (for example {@linkplain #filter() filtering} may depend on previous rows) but we do not want
  * to force implementations to store such state in {@code TreeFormatCustomization} instances
- * since objects implementing this interface may be immutable.</div>
+ * since objects implementing this interface may be immutable.
  *
  * <p>This class is not yet in public API. We are waiting for more experience before to decide if it should be
  * committed API.</p>
diff --git a/core/sis-utility/src/main/java/org/apache/sis/io/CompoundFormat.java b/core/sis-utility/src/main/java/org/apache/sis/io/CompoundFormat.java
index 161690e047..ad38a6da58 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/io/CompoundFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/io/CompoundFormat.java
@@ -88,12 +88,12 @@ import static org.apache.sis.internal.util.StandardDateFormat.UTC;
  *   <li>{@link #parse(CharSequence, ParsePosition)}</li>
  * </ul>
  *
- * <div class="note"><b>API note:</b>
- * in the standard {@link Format} class, the {@code parse} methods either accept a {@link ParsePosition} argument
+ * <h2>Comparison with other API</h2>
+ * In the standard {@link Format} class, the {@code parse} methods either accept a {@link ParsePosition} argument
  * and returns {@code null} on error, or does not take position argument and throws a {@link ParseException} on error.
  * In this {@code CompoundFormat} class, the {@code parse} method both takes a {@code ParsePosition} argument and
  * throws a {@code ParseException} on error. This allows both substring parsing and more accurate exception message
- * in case of error.</div>
+ * in case of error.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
@@ -169,13 +169,13 @@ public abstract class CompoundFormat<T> extends Format implements Localized {
      *       and {@link org.opengis.util.InternationalString} contents.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
+     * For subclasses that do not override this method, the default implementation returns {@link #getLocale()}.
+     *
+     * <h4>Example</h4>
      * The ISO 19162 (<cite>Well Known Text</cite>) standard requires a number format similar to the one defined by
      * {@code Locale.ROOT} while it allows informative texts (remarks, <i>etc.</i>) to be formatted according the
      * user's locale. Consequently, {@code WKTFormat} fixes (usually) the locale for {@code Category.FORMAT} to
-     * {@code Locale.ROOT} and let {@code Category.DISPLAY} be any locale.</div>
-     *
-     * For subclasses that do not override this method, the default implementation returns {@link #getLocale()}.
+     * {@code Locale.ROOT} and let {@code Category.DISPLAY} be any locale.
      *
      * @param  category  the category for which a locale is desired.
      * @return the locale for the given category (never {@code null}).
@@ -201,12 +201,11 @@ public abstract class CompoundFormat<T> extends Format implements Localized {
      * The returned type may be a subclass of {@code <T>} if the format is configured in a way
      * that restrict the kind value to be parsed.
      *
-     * <div class="note"><b>Example:</b>
-     *   <ul>
-     *     <li>{@code StatisticsFormat} unconditionally returns {@code Statistics.class}.</li>
-     *     <li>{@code TreeTableFormat} unconditionally returns {@code TreeTable.class}.</li>
-     *   </ul>
-     * </div>
+     * <h4>Examples</h4>
+     * <ul>
+     *   <li>{@code StatisticsFormat} unconditionally returns {@code Statistics.class}.</li>
+     *   <li>{@code TreeTableFormat} unconditionally returns {@code TreeTable.class}.</li>
+     * </ul>
      *
      * @return the base type of values parsed and formatted by this {@code Format} instance.
      */
@@ -302,11 +301,11 @@ public abstract class CompoundFormat<T> extends Format implements Localized {
      * {@linkplain Character#isSpaceChar(int) spaces} and
      * {@linkplain Character#isISOControl(int) ISO control characters}.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Whitespaces</h4>
      * The usual SIS policy, as documented in the {@link org.apache.sis.util.CharSequences} class, is to test for
      * whitespaces using the {@code Character.isWhitespace(…)} method. The combination of {@code isSpaceChar(…)}
      * and {@code isISOControl(…)} done in this {@code parseObject(…)} method is more permissive since it encompasses
-     * all whitespace characters, plus non-breaking spaces and non-white ISO controls.</div>
+     * all whitespace characters, plus non-breaking spaces and non-white ISO controls.
      *
      * @param  text  the string representation of the object to parse.
      * @return the parsed object.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/io/TabularFormat.java b/core/sis-utility/src/main/java/org/apache/sis/io/TabularFormat.java
index e490ec32d8..7eaf633375 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/io/TabularFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/io/TabularFormat.java
@@ -218,11 +218,10 @@ public abstract class TabularFormat<T> extends CompoundFormat<T> {
      *       with the {@link Pattern} syntax.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * The {@code "?……[…] "} pattern means <cite>"If the next value is non-null, then insert the
      * {@code "……"} string, repeat the {@code '…'} character as many time as needed (may be zero),
      * then insert a space"</cite>.
-     * </div>
      *
      * @param  pattern  the pattern of the new column separator.
      * @throws IllegalArgumentException if the given pattern is illegal.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/DecimalFunctions.java b/core/sis-utility/src/main/java/org/apache/sis/math/DecimalFunctions.java
index 63155d40bd..d8d7e68dff 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/DecimalFunctions.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/DecimalFunctions.java
@@ -119,21 +119,21 @@ public final class DecimalFunctions extends Static {
      * fraction digits to zero.
      * For example, {@code (double) 0.1f} gives 0.10000000149011612 while {@code floatToDouble(0.1f)} returns 0.1.
      *
-     * <div class="note"><b>Note:</b>
+     * <p>This method is equivalent to the following code, except that it is potentially faster
+     * because the actual implementation avoid to format and parse the value:</p>
+     *
+     * {@snippet lang="java" :
+     *   return Double.parseDouble(Float.toString(value));
+     *   }
+     *
+     * <h4>Note on accuracy</h4>
      * This method is <strong>not</strong> more accurate than the standard Java cast – it should be used only when
      * the base 10 representation of the given value may be of special interest. If the value come from a call to
      * {@link Float#parseFloat(String)} (directly or indirectly), and if that call cannot be replaced by a call to
      * {@link Double#parseDouble(String)} (for example because the original {@code String} is not available anymore),
      * then this method may be useful if one consider the {@code String} representation in base 10 as definitive.
      * But if the value come from an instrument measurement or a calculation, then there is probably no reason to use
-     * this method because base 10 is not more "real" than base 2 or any other base for natural phenomenon.</div>
-     *
-     * This method is equivalent to the following code, except that it is potentially faster since the
-     * actual implementation avoid to format and parse the value:
-     *
-     * {@snippet lang="java" :
-     *   return Double.parseDouble(Float.toString(value));
-     *   }
+     * this method because base 10 is not more "real" than base 2 or any other base for natural phenomenon.
      *
      * @param  value  the {@code float} value to convert as a {@code double}.
      * @return the given value as a {@code double} with the extra decimal fraction digits set to zero.
@@ -404,9 +404,9 @@ public final class DecimalFunctions extends Static {
      *       {@code Math.ulp(0)} = {@value java.lang.Double#MIN_VALUE}.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
-     * This method is useful with {@link java.text.NumberFormat} for formatting all significant digits of a
-     * {@code double} value, padding with trailing zeros if necessary, but no more than necessary.</div>
+     * <h4>Example</h4>
+     * This method is useful with {@link java.text.NumberFormat} for formatting all significant digits
+     * of a {@code double} value, padding with trailing zeros if necessary, but no more than necessary.
      *
      * @param  value  the value for which to get the number of significant fraction digits.
      * @return the number of significant fraction digits (may be negative), or 0 if {@code value} is NaN or infinity.
@@ -440,10 +440,9 @@ public final class DecimalFunctions extends Static {
      *   <li>Otherwise this method returns {@code fractionDigits}.</li>
      * </ul>
      *
-     * <div class="note"><b>Note:</b>
-     * The threshold of 4 trailing fraction digits is arbitrary and may change in any future SIS version.</div>
+     * The threshold of 4 trailing fraction digits is arbitrary and may change in any future SIS version.
      *
-     * <div class="note"><b>Examples:</b>
+     * <h4>Examples</h4>
      * <ul>
      *   <li>{@code fractionDigitsForValue(179.12499999999824)} returns 14,
      *       the amount of digits after the decimal separator.</li>
@@ -456,7 +455,6 @@ public final class DecimalFunctions extends Static {
      *   <li>{@code fractionDigitsForValue(179.12499997999999, 3)} returns 14 because rounding the 3 last digits
      *       results in 179.12499997000. The condition for 4 trailing zero fraction digits is not met.</li>
      * </ul>
-     * </div>
      *
      * @param  value  the value for which to get the number of significant fraction fraction digits minus rounding error.
      * @param  uncertainDigits  number of trailing fraction digits which may be rounding error artefacts.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/FunctionProperty.java b/core/sis-utility/src/main/java/org/apache/sis/math/FunctionProperty.java
index ae223b028a..62de9c1ada 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/FunctionProperty.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/FunctionProperty.java
@@ -78,14 +78,12 @@ public enum FunctionProperty {
     /**
      * A function is <cite>injective</cite> if each value of <var>T</var> is either unrelated
      * to <var>S</var>, or is the output of exactly one value of <var>S</var>.
+     * For example an {@link org.apache.sis.util.ObjectConverter} doing conversions from {@link Integer}
+     * to {@link String} is an injective function, because no pair of integers can produce the same string.
      *
-     * <div class="note"><b>Example:</b>
-     * An {@link org.apache.sis.util.ObjectConverter} doing conversions from {@link Integer} to {@link String}
-     * is an injective function, because no pair of integers can produce the same string.</div>
-     *
-     * A function which is both injective and {@linkplain #SURJECTIVE surjective} is a
+     * <p>A function which is both injective and {@linkplain #SURJECTIVE surjective} is a
      * <cite>bijective</cite> function. In such functions, there is a one-to-one relationship
-     * between all input and output values.
+     * between all input and output values.</p>
      *
      * @see #SURJECTIVE
      * @see #isBijective(Set)
@@ -95,15 +93,13 @@ public enum FunctionProperty {
     /**
      * A function is <cite>surjective</cite> if any value of <var>T</var> can be created
      * from one or many values of <var>S</var>.
+     * For example an {@link org.apache.sis.util.ObjectConverter} doing conversions from {@link String}
+     * to {@link Integer} is a surjective function, because there is always at least one string for each integer value.
+     * Note that such function cannot be injective since many different strings can represent the same integer value.
      *
-     * <div class="note"><b>Example:</b>
-     * An {@link org.apache.sis.util.ObjectConverter} doing conversions from {@link String} to {@link Integer}
-     * is a surjective function, since there is always at least one string for each integer value. Note that such
-     * function cannot be injective since many different strings can represent the same integer value.</div>
-     *
-     * A function which is both {@linkplain #INJECTIVE injective} and surjective is a
+     * <p>A function which is both {@linkplain #INJECTIVE injective} and surjective is a
      * <cite>bijective</cite> function. In such functions, there is a one-to-one relationship
-     * between all input and output values.
+     * between all input and output values.</p>
      *
      * @see #INJECTIVE
      * @see #isBijective(Set)
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Line.java b/core/sis-utility/src/main/java/org/apache/sis/math/Line.java
index dd6db9020e..8b0dc78157 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Line.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Line.java
@@ -39,9 +39,9 @@ import static java.lang.Double.*;
  * value using the {@link #y(double)} method. Method {@link #x(double)} computes the converse and should
  * work even if the line is vertical.</p>
  *
- * <div class="note"><b>Comparison with Java2D geometries:</b>
+ * <h2>Comparison with Java2D geometries</h2>
  * At the difference of {@link java.awt.geom.Line2D} which is bounded by (<var>x₁</var>,<var>y₁</var>)
- * and (<var>x₂</var>,<var>y₂</var>) points, {@code Line} objects extend toward infinity.</div>
+ * and (<var>x₂</var>,<var>y₂</var>) points, {@code Line} objects extend toward infinity.
  *
  * @author  Martin Desruisseaux (MPO, IRD)
  * @version 1.4
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/MathFunctions.java b/core/sis-utility/src/main/java/org/apache/sis/math/MathFunctions.java
index d7e418186a..02a409c481 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/MathFunctions.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/MathFunctions.java
@@ -154,10 +154,10 @@ public final class MathFunctions extends Static {
      * In the current implementation, this value is {@value}. However, this limit may
      * change in any future Apache SIS version.
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Implementation note</h4>
      * The current value is the highest prime number representable as an unsigned 16 bits integer.
      * This is enough for current needs because 16 bits prime numbers are sufficient for finding
-     * the divisors of any 32 bits integers.</div>
+     * the divisors of any 32 bits integers.
      *
      * @see #nextPrimeNumber(int)
      */
@@ -195,9 +195,10 @@ public final class MathFunctions extends Static {
      * <var>y</var> are very large, because it will avoid the lost of last digits before averaging.
      * If exactly one of <var>x</var> and <var>y</var> is odd, the result will contain the 0.5 fraction digit.
      *
-     * <div class="note"><b>Source:</b> this function is adapted from
+     * <h4>Reference</h4>
+     * This function is adapted from
      * <a href="http://aggregate.org/MAGIC/#Average%20of%20Integers">The Aggregate Magic Algorithms</a>
-     * from University of Kentucky.</div>
+     * from University of Kentucky.
      *
      * @param  x  the first value to average.
      * @param  y  the second value to average.
@@ -340,13 +341,14 @@ public final class MathFunctions extends Static {
      * which may be approximate for magnitudes greater than 2<sup>52</sup>.
      * This method may also be faster.
      *
-     * <div class="note"><b>Implementation note:</b> this method uses
-     * <a href="https://en.wikipedia.org/wiki/Exponentiation_by_squaring">exponentiation by squaring</a> technic.</div>
-     *
-     * The type of the {@code base} argument is {@code long} for convenience, since this method is used in contexts
+     * <p>The type of the {@code base} argument is {@code long} for convenience, since this method is used in contexts
      * where relatively large integers are handled. However, any value greater than the capacity of {@code int} type
      * is guaranteed to fail with {@link ArithmeticException} unless {@code exponent} is 0 or 1.
-     * Likewise any {@code exponent} value greater than 62 is guaranteed to fail unless {@code base} is 0 or 1.
+     * Likewise any {@code exponent} value greater than 62 is guaranteed to fail unless {@code base} is 0 or 1.</p>
+     *
+     * <h4>Reference</h4>
+     * This method uses
+     * <a href="https://en.wikipedia.org/wiki/Exponentiation_by_squaring">exponentiation by squaring</a> technic.
      *
      * @param  base      the value to raise to an exponent.
      * @param  exponent  the exponent, as zero or positive number.
@@ -378,13 +380,6 @@ public final class MathFunctions extends Static {
     /**
      * Computes 10 raised to the power of <var>x</var>. This method is faster and slightly more accurate
      * than invoking <code>{@linkplain Math#pow(double, double) Math.pow}(10, x)</code>.
-     *
-     * <div class="note"><b>Note:</b>
-     * This method has been defined because the standard {@code Math.pow(10, x)} method does not always return
-     * the closest IEEE floating point representation. Slight departures (1 or 2 ULP) are often allowed in math
-     * functions for performance reasons. The most accurate calculations are usually not necessary, but the base
-     * 10 is a special case since it is used for scaling axes or formatting human-readable output.</div>
-     *
      * Special cases:
      * <ul>
      *   <li>If <var>x</var> is equal or lower than -324, then the result is 0.</li>
@@ -393,6 +388,12 @@ public final class MathFunctions extends Static {
      *   <li>For all other <var>x</var> values, the result is the closest IEEE 754 approximation.</li>
      * </ul>
      *
+     * <h4>Purpose</h4>
+     * This method has been defined because the standard {@code Math.pow(10, x)} method does not always return
+     * the closest IEEE floating point representation. Slight departures (1 or 2 ULP) are often allowed in math
+     * functions for performance reasons. The most accurate calculations are usually not necessary, but the base
+     * 10 is a special case since it is used for scaling axes or formatting human-readable output.
+     *
      * @param  x  the exponent.
      * @return 10 raised to the given exponent.
      *
@@ -1173,10 +1174,8 @@ next:   while (i < roots.length) {
     /**
      * Tries to improves accuracy of polynomial roots by applying small displacements
      * to the <var>x</var> values using ∂y/∂x derivative around those values.
-     *
-     * <div class="note"><b>Purpose:</b>
-     * this refinement is significant in a {@link org.apache.sis.referencing.GeodesicsOnEllipsoid}
-     * test checking the value of an μ(x²,y²) function.</div>
+     * This refinement is significant in a {@link org.apache.sis.referencing.GeodesicsOnEllipsoid}
+     * test checking the value of an μ(x²,y²) function.
      *
      * @param  coefficients  the user-specified coefficients.
      * @param  roots         the roots. This array will be modified in place.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java b/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java
index ceaa5294bf..1450f67eae 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java
@@ -79,10 +79,7 @@ public class Plane implements DoubleBinaryOperator, Cloneable, Serializable {
      *
      * This arbitrary threshold value may change in any future SIS version according experience gained.
      *
-     * <div class="note"><b>Note:</b>
-     * A similar constant exists in {@code org.apache.sis.referencing.operation.matrix.GeneralMatrix}.
-     * </div>
-     *
+     * @see org.apache.sis.referencing.operation.matrix.GeneralMatrix#ZERO_THRESHOLD
      * @see Numerics#COMPARISON_THRESHOLD
      */
     private static final double ZERO_THRESHOLD = 1E-14;
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
index 923184a6c0..3ccd710488 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
@@ -76,8 +76,8 @@ import static org.apache.sis.util.ArgumentChecks.ensureValidIndex;
  * the {@code float} type are represented by positive of negative infinity), but conversions from {@code long} to
  * {@code short} are allowed only if the value is between {@link Short#MIN_VALUE} and {@link Short#MAX_VALUE} inclusive.
  *
- * <div class="note"><b>Comparison with other API:</b>
- * the above functionalities look like similar functionalities provided by {@link java.nio.ByteBuffer}
+ * <h2>Comparison with other API</h2>
+ * The above functionalities look like similar functionalities provided by {@link java.nio.ByteBuffer}
  * in standard Java, but they actually serve different purposes. The {@code ByteBuffer} getter methods
  * (for example {@code getShort(int)}, {@code getLong(int)}, <i>etc.</i>) allow to decode a sequence of
  * bytes in a way determined by the type of the value to decode (2 bytes for a {@code short}, 8 bytes
@@ -88,7 +88,7 @@ import static org.apache.sis.util.ArgumentChecks.ensureValidIndex;
  * For example, a method performing a numerical calculation may want to see the data as {@code double} values
  * without concern about whether the data were really stored as {@code double} or as {@code float} values.
  * For the situations where a {@link Buffer} is needed, inter-operability is provided by the {@link #buffer()}
- * method and by accepting buffer in the {@link #create(Object, boolean)} method.</div>
+ * method and by accepting buffer in the {@link #create(Object, boolean)} method.
  *
  * @author  Martin Desruisseaux (MPO, Geomatys)
  * @version 1.4
@@ -513,18 +513,16 @@ public abstract class Vector extends AbstractList<Number> implements RandomAcces
     /**
      * Returns the number at the given index, or {@code null} if none.
      * The object returned by this method is usually an instance of the class returned by {@link #getElementType()},
-     * but may also be an instance of a wider type if this is necessary for representing the values.
-     *
-     * <div class="note"><b>Example:</b>
+     * but may also be an instance of a wider type if this is necessary for representing the values. For example
      * if {@link #getElementType()} returns {@code Byte.class} but {@link #isUnsigned()} returns {@code true},
      * then this method will rather return instances of {@link Short} because that type is the smallest Java
      * primitive type capable to hold byte values in the [0 … 255] range. But the elements are still stored
      * internally as {@code byte}, and the vector cannot accept values outside the [0 … 255] range even if
-     * they are valid {@link Short} values.</div>
+     * they are valid {@link Short} values.
      *
-     * The class of returned objects should be stable. For example, this method should not use different types
+     * <p>The class of returned objects should be stable. For example, this method should not use different types
      * for different range of values. This stability is recommended but not guaranteed because {@code Vector}
-     * can also wrap arbitrary {@code Number[]} arrays.
+     * can also wrap arbitrary {@code Number[]} arrays.</p>
      *
      * @param  index  the index in the [0 … {@linkplain #size() size}-1] range.
      * @return the value at the given index (may be {@code null}).
@@ -1310,16 +1308,16 @@ search:     for (;;) {
      *   <li>If {@code eachValue} is {@code false}, then whole vector is repeated {@code count} times.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
+     * This method returns an empty vector if {@code count} is zero and returns {@code this} if {@code count} is one.
+     * For other positive {@code count} values, this method returns an unmodifiable view of this vector:
+     * changes in this vector are reflected in the repeated vector.
+     *
+     * <h4>Examples</h4>
      * if {@code vec} contains {@code {1, 2, 3}}, then:
      * <ul>
      *   <li>{@code vec.repeat(true,  4)} returns {@code {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3}}.</li>
      *   <li>{@code vec.repeat(false, 4)} returns {@code {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}}.</li>
-     * </ul></div>
-     *
-     * This method returns an empty vector if {@code count} is zero and returns {@code this} if {@code count} is one.
-     * For other positive {@code count} values, this method returns an unmodifiable view of this vector:
-     * changes in this vector are reflected in the repeated vector.
+     * </ul>
      *
      * @param  eachValue  whether to apply the repetition on each value ({@code true}) or on the whole vector ({@code false}).
      * @param  count      number of repetitions as a positive number (including zero).
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/AbstractUnit.java b/core/sis-utility/src/main/java/org/apache/sis/measure/AbstractUnit.java
index 6ac07d4498..17206ceebb 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/AbstractUnit.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/AbstractUnit.java
@@ -281,10 +281,10 @@ abstract class AbstractUnit<Q extends Quantity<Q>> implements Unit<Q>, LenientCo
      * Returns the symbol (if any) of this unit. A unit may have no symbol, in which case
      * the {@link #toString()} method is responsible for creating a string representation.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * {@link Units#METRE} has the {@code "m"} symbol and the same string representation.
      * But {@link Units#METRES_PER_SECOND} has no symbol; it has only the {@code "m/s"}
-     * string representation.</div>
+     * string representation.
      *
      * @return the unit symbol, or {@code null} if this unit has no specific symbol.
      *
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java b/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java
index 59825b503a..4665a1f64f 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java
@@ -102,7 +102,6 @@ import static org.apache.sis.math.DecimalFunctions.fractionDigitsForDelta;
  * or latitude values without the degrees field are unusual, omitting that field is likely to increase the
  * risk of confusion in those cases.
  *
- * <div class="note"><b>Examples:</b>
  * <table class="sis">
  *   <caption>Pattern examples</caption>
  *   <tr><th>Pattern               </th>  <th>48.5      </th> <th>-12.53125    </th></tr>
@@ -114,7 +113,6 @@ import static org.apache.sis.math.DecimalFunctions.fractionDigitsForDelta;
  *   <tr><td>{@code DDMMSSs}       </td>  <td>4830000   </td> <td>-1231525     </td></tr>
  *   <tr><td>{@code DD°MM′?SS.s″?} </td>  <td>48°30′    </td> <td>-12°31′52.5″ </td></tr>
  * </table>
- * </div>
  *
  * @author  Martin Desruisseaux (MPO, IRD, Geomatys)
  * @version 1.1
@@ -326,9 +324,9 @@ public class AngleFormat extends Format implements Localized {
      * If the minutes field is declared optional but the degrees and seconds are formatted,
      * then minutes will be formatted too un order to reduce the risk of confusion
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * Value 12.01 is formatted as {@code 12°00′36″} if this field is {@code true},
-     * and as {@code 12°36″} if this field is {@code false}.</div>
+     * and as {@code 12°36″} if this field is {@code false}.
      */
     private transient boolean showLeadingFields;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/MeasurementRange.java b/core/sis-utility/src/main/java/org/apache/sis/measure/MeasurementRange.java
index acca67d316..1fe9e56304 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/MeasurementRange.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/MeasurementRange.java
@@ -258,12 +258,12 @@ public class MeasurementRange<E extends Number & Comparable<? super E>> extends
      * instead of {@code MeasurementRange}. Nevertheless this method may return {@code null} if a unit
      * <em>should</em> exist but for some reason is unavailable.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * ISO 19115-1 {@code SampleDimension} specifies that its
      * {@linkplain org.opengis.metadata.content.SampleDimension#getUnits() unit} property is mandatory if the
      * {@linkplain org.opengis.metadata.content.SampleDimension#getMinValue() minimum value} or
      * {@linkplain org.opengis.metadata.content.SampleDimension#getMaxValue() maximum value} are provided.
-     * Nevertheless it happens sometimes that this information is missing in metadata.</div>
+     * Nevertheless it happens sometimes that this information is missing in metadata.
      *
      * @return the unit of measurement, or {@code null}.
      */
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java b/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
index 5be9072aa1..019eda568d 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
@@ -410,10 +410,11 @@ public class NumberRange<E extends Number & Comparable<? super E>> extends Range
      * Constructs a range of {@code int} values without upper bound.
      * This method may return a shared instance, at implementation choice.
      *
-     * <div class="note"><b>Note:</b> for creating left-bounded ranges of floating point values,
+     * <h4>API note</h4>
+     * For creating left-bounded ranges of floating point values,
      * use one of the {@code create(…)} methods with a {@code POSITIVE_INFINITY} constant.
      * We do not provide variants for other integer types because this method is typically invoked for
-     * defining the {@linkplain org.apache.sis.feature.DefaultFeatureType multiplicity of an attribute}.</div>
+     * defining the {@linkplain org.apache.sis.feature.DefaultFeatureType multiplicity of an attribute}.
      *
      * @param  minValue       the minimal value.
      * @param  isMinIncluded  {@code true} if the minimal value is inclusive, or {@code false} if exclusive.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/Units.java b/core/sis-utility/src/main/java/org/apache/sis/measure/Units.java
index 1bec091089..f1e99147d4 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/Units.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/Units.java
@@ -87,13 +87,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE}
      * and the unlocalized name is "nanometre".
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI units:</td>         <td style="word-spacing:1em"><u>{@code NANOMETRE}</u>, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @see org.apache.sis.metadata.iso.content.DefaultBand#getBoundUnits()
      *
@@ -106,13 +105,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “millimetre” and the identifier is EPSG:1025.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, <u>{@code MILLIMETRE}</u>, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -123,13 +121,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “centimetre” and the identifier is EPSG:1033.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, <u>{@code CENTIMETRE}</u>, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -140,13 +137,12 @@ public final class Units extends Static {
      * The unlocalized name is “metre” and the identifier is EPSG:9001.
      * This is the base of all other {@linkplain #isLinear(Unit) linear} units.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <u><b>{@code METRE}</b></u>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -157,13 +153,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “kilometre” and the identifier is EPSG:9036.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, <u>{@code KILOMETRE}</u>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #KILOMETRES_PER_HOUR}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -180,13 +175,12 @@ public final class Units extends Static {
      * International Hydrographic Organization (IHO) and the International Bureau of Weights and Measures (BIPM).
      * But “NM” and “nmi” are also in use.</p>
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, <u>{@code NAUTICAL_MILE}</u>.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #KILOMETRES_PER_HOUR}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -201,13 +195,12 @@ public final class Units extends Static {
      * for avoiding confusion with the US survey mile.
      * The identifier is EPSG:9093.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, <u>{@code STATUTE_MILE}</u>, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #KILOMETRES_PER_HOUR}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -219,13 +212,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “US survey foot” and the identifier is EPSG:9003.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, <u>{@code US_SURVEY_FOOT}</u>, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -236,13 +228,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “Clarke’s foot” and the identifier is EPSG:9005.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, {@link #FOOT}, <u>{@code CLARKE_FOOT}</u>, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -253,13 +244,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE},
      * the unlocalized name is “foot” and the identifier is EPSG:9002.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, {@link #INCH}, <u>{@code FOOT}</u>, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -270,13 +260,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE}
      * and the unlocalized name is “inch”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #POINT}, <u>{@code INCH}</u>, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -288,13 +277,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRE}
      * and the unlocalized name is “point”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI length units:</td>  <td style="word-spacing:1em">{@link #NANOMETRE}, {@link #MILLIMETRE}, {@link #CENTIMETRE}, <b>{@link #METRE}</b>, {@link #KILOMETRE}.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em"><u>{@code POINT}</u>, {@link #INCH}, {@link #FOOT}, {@link #CLARKE_FOOT}, {@link #US_SURVEY_FOOT}, {@link #STATUTE_MILE}, {@link #NAUTICAL_MILE}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #SQUARE_METRE}, {@link #CUBIC_METRE}, {@link #METRES_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -304,12 +292,11 @@ public final class Units extends Static {
      * The SI derived unit for area (m²).
      * The unlocalized name is “square metre”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI area units:</td> <td style="word-spacing:1em"><u><b>{@code SQUARE_METRE}</b></u>, {@link #HECTARE}.</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #CUBIC_METRE}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -321,12 +308,11 @@ public final class Units extends Static {
      * While not an SI unit, the hectare is often used in the measurement of land.
      * The unlocalized name is “hectare”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI area units:</td> <td style="word-spacing:1em"><b>{@link #SQUARE_METRE}</b>, <u>{@code HECTARE}</u>.</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #CUBIC_METRE}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -362,13 +348,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #RADIAN},
      * the unlocalized name is “microradian” and the identifier is EPSG:9109.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em"><u>{@code MICRORADIAN}</u>, <b>{@link #RADIAN}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #DEGREE}, {@link #ARC_MINUTE}, {@link #ARC_SECOND}, {@link #GRAD}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -380,13 +365,12 @@ public final class Units extends Static {
      * The unlocalized name is “radian” and the identifier is EPSG:9101.
      * This is the base of all other {@linkplain #isAngular(Unit) angular} units.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em">{@link #MICRORADIAN}, <u><b>{@code RADIAN}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #DEGREE}, {@link #ARC_MINUTE}, {@link #ARC_SECOND}, {@link #GRAD}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}, {@link #RADIANS_PER_SECOND}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -398,13 +382,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #RADIAN},
      * the unlocalized name is “degree” and the identifier is EPSG:9102.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em">{@link #MICRORADIAN}, <b>{@link #RADIAN}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em"><u>{@code DEGREE}</u>, {@link #ARC_MINUTE}, {@link #ARC_SECOND}, {@link #GRAD}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -417,13 +400,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #RADIAN},
      * the unlocalized name is “arc-minute” and the identifier is EPSG:9103.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em">{@link #MICRORADIAN}, <b>{@link #RADIAN}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #DEGREE}, <u>{@code ARC_MINUTE}</u>, {@link #ARC_SECOND}, {@link #GRAD}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -437,13 +419,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #RADIAN},
      * the unlocalized name is “arc-second” and the identifier is EPSG:9104.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em">{@link #MICRORADIAN}, <b>{@link #RADIAN}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #DEGREE}, {@link #ARC_MINUTE}, <u>{@code ARC_SECOND}</u>, {@link #GRAD}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -456,13 +437,12 @@ public final class Units extends Static {
      * the unlocalized name is “grad”, but the “gon” alias is also accepted.
      * The identifier is EPSG:9105.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI angle units:</td>   <td style="word-spacing:1em">{@link #MICRORADIAN}, <b>{@link #RADIAN}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #DEGREE}, {@link #ARC_MINUTE}, {@link #ARC_SECOND}, <u>{@code GRAD}</u>.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #STERADIAN}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -474,13 +454,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND}
      * and the unlocalized name is “millisecond”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em"><u>{@code MILLISECOND}</u>, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, {@link #HOUR}, {@link #DAY}, {@link #WEEK}, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #METRES_PER_SECOND}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @see java.util.concurrent.TimeUnit#MILLISECONDS
      *
@@ -493,13 +472,12 @@ public final class Units extends Static {
      * The unlocalized name is “second” and the identifier is EPSG:1040.
      * This is the base of all other {@linkplain #isTemporal(Unit) temporal} units.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <u><b>{@link #SECOND}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, {@link #HOUR}, {@link #DAY}, {@link #WEEK}, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #METRES_PER_SECOND}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -510,13 +488,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND}
      * and the unlocalized name is “minute”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em"><u>{@code MINUTE}</u>, {@link #HOUR}, {@link #DAY}, {@link #WEEK}, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #METRES_PER_SECOND}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -527,13 +504,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND}
      * and the unlocalized name is “hour”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, <u>{@code HOUR}</u>, {@link #DAY}, {@link #WEEK}, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #KILOMETRES_PER_HOUR}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -544,13 +520,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND}
      * and the unlocalized name is “day”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, {@link #HOUR}, <u>{@code DAY}</u>, {@link #WEEK}, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #KILOMETRES_PER_HOUR}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -561,13 +536,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND}
      * and the unlocalized name is “week”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, {@link #HOUR}, {@link #DAY}, <u>{@link #WEEK}</u>, {@link #TROPICAL_YEAR}.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #KILOMETRES_PER_HOUR}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -580,13 +554,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #SECOND},
      * the unlocalized name is “year” and the identifier is EPSG:1029.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI time units:</td>    <td style="word-spacing:1em">{@link #MILLISECOND}, <b>{@link #SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #MINUTE}, {@link #HOUR}, {@link #DAY}, {@link #WEEK}, <u>{@code TROPICAL_YEAR}</u>.</td></tr>
      *   <tr><td>Derived units:</td>    <td style="word-spacing:1em">{@link #KILOMETRES_PER_HOUR}, {@link #HERTZ}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -597,11 +570,10 @@ public final class Units extends Static {
      * One hertz is equal to one cycle per {@linkplain #SECOND second}.
      * The unlocalized name is “hertz”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td><td style="word-spacing:0.5em">{@link #SECOND}<sup>-1</sup></td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -611,11 +583,10 @@ public final class Units extends Static {
      * The unit for angular velocity (rad/s).
      * The identifier is EPSG:1035.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #RADIAN} ∕ {@link #SECOND}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -625,13 +596,12 @@ public final class Units extends Static {
      * The SI derived unit for speed (m/s).
      * The unlocalized name is “metres per second” and the identifier is EPSG:1026.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI speed units:</td>   <td style="word-spacing:1em"><u><b>{@code METRES_PER_SECOND}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em">{@link #KILOMETRES_PER_HOUR}.</td></tr>
      *   <tr><td>Components:</td>       <td style="word-spacing:0.5em">{@link #METRE} ∕ {@link #SECOND}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -642,13 +612,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRES_PER_SECOND}
      * and the unlocalized name is “kilometres per hour”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI speed units:</td>   <td style="word-spacing:1em"><b>{@link #METRES_PER_SECOND}</b>.</td></tr>
      *   <tr><td>In other systems:</td> <td style="word-spacing:1em"><u>{@code KILOMETRES_PER_HOUR}</u>.</td></tr>
      *   <tr><td>Components:</td>       <td style="word-spacing:0.5em">{@link #KILOMETRE} ∕ {@link #HOUR}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -658,13 +627,12 @@ public final class Units extends Static {
      * The SI derived unit for acceleration (m/s²).
      * The unlocalized name is “metres per second squared”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI acceleration units:</td> <td style="word-spacing:1em"><u><b>{@code METRES_PER_SECOND_SQUARED}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td>      <td style="word-spacing:1em">{@link #GAL}.</td></tr>
      *   <tr><td>Components:</td>            <td style="word-spacing:0.5em">{@link #METRES_PER_SECOND} ∕ {@link #SECOND}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 1.2
      */
@@ -676,13 +644,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #METRES_PER_SECOND_SQUARED},
      * the symbol is "Gal" (upper-case first letter) and the unlocalized name is “gal” (lower-case letter).
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI acceleration units:</td> <td style="word-spacing:1em"><u><b>{@link #METRES_PER_SECOND_SQUARED}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td>      <td style="word-spacing:1em">{@code GAL}.</td></tr>
      *   <tr><td>Components:</td>            <td style="word-spacing:0.5em">{@link #CENTIMETRE} ∕ {@link #SECOND}²</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 1.2
      */
@@ -695,13 +662,12 @@ public final class Units extends Static {
      * for height measurements on a vertical axis.
      * The unlocalized name is “pascal”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI pressure units:</td> <td style="word-spacing:1em"><u><b>{@code PASCAL}</b></u>, {@link #HECTOPASCAL}.</td></tr>
      *   <tr><td>In other systems:</td>  <td style="word-spacing:1em">{@link #DECIBAR}, {@link #BAR}, {@link #ATMOSPHERE}.</td></tr>
      *   <tr><td>Components:</td>        <td style="word-spacing:0.5em">{@link #NEWTON} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -714,13 +680,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #PASCAL}
      * and the unlocalized name is “hectopascal”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI pressure units:</td> <td style="word-spacing:1em"><b>{@link #PASCAL}</b>, <u>{@code HECTOPASCAL}</u>.</td></tr>
      *   <tr><td>In other systems:</td>  <td style="word-spacing:1em">{@link #DECIBAR}, {@link #BAR}, {@link #ATMOSPHERE}.</td></tr>
      *   <tr><td>Components:</td>        <td style="word-spacing:0.5em">{@link #NEWTON} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -733,13 +698,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #PASCAL}
      * and the unlocalized name is “decibar”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI pressure units:</td> <td style="word-spacing:1em"><b>{@link #PASCAL}</b>, {@link #HECTOPASCAL}.</td></tr>
      *   <tr><td>In other systems:</td>  <td style="word-spacing:1em"><u>{@code DECIBAR}</u>, {@link #BAR}, {@link #ATMOSPHERE}.</td></tr>
      *   <tr><td>Components:</td>        <td style="word-spacing:0.5em">{@link #NEWTON} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -752,13 +716,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #PASCAL}
      * and the unlocalized name is “bar”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI pressure units:</td> <td style="word-spacing:1em"><b>{@link #PASCAL}</b>, {@link #HECTOPASCAL}.</td></tr>
      *   <tr><td>In other systems:</td>  <td style="word-spacing:1em">{@link #DECIBAR}, <u>{@code BAR}</u>, {@link #ATMOSPHERE}.</td></tr>
      *   <tr><td>Components:</td>        <td style="word-spacing:0.5em">{@link #NEWTON} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -770,13 +733,12 @@ public final class Units extends Static {
      * The {@linkplain ConventionalUnit#getSystemUnit() system unit} is {@link #PASCAL}
      * and the unlocalized name is “atmosphere”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI pressure units:</td> <td style="word-spacing:1em"><b>{@link #PASCAL}</b>, {@link #HECTOPASCAL}.</td></tr>
      *   <tr><td>In other systems:</td>  <td style="word-spacing:1em">{@link #DECIBAR}, {@link #BAR}, <u>{@code ATMOSPHERE}</u>.</td></tr>
      *   <tr><td>Components:</td>        <td style="word-spacing:0.5em">{@link #NEWTON} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -787,12 +749,11 @@ public final class Units extends Static {
      * One newton is the force required to give a mass of 1 kg an acceleration of 1 m/s².
      * The unlocalized name is “newton”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #KILOGRAM} ⋅ {@link #METRES_PER_SECOND} ∕ {@link #SECOND}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #PASCAL}, {@link #JOULE}, {@link #WATT}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -802,12 +763,11 @@ public final class Units extends Static {
      * The SI derived unit for energy (J).
      * The unlocalized name is “joule”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #NEWTON} ⋅ {@link #METRE}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #WATT}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -818,12 +778,11 @@ public final class Units extends Static {
      * One watt is equal to one joule per second.
      * The unlocalized name is “watt”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #JOULE} ∕ {@link #SECOND}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #VOLT}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -833,12 +792,11 @@ public final class Units extends Static {
      * The SI derived unit for electric potential difference (V).
      * The unlocalized name is “volt”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #WATT} ∕ {@link #AMPERE}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #FARAD}, {@link #OHM}, {@link #SIEMENS}, {@link #WEBER}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -848,11 +806,10 @@ public final class Units extends Static {
      * The SI base unit for electric current (A).
      * The unlocalized name is “ampere”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #COULOMB}, {@link #VOLT}, {@link #OHM}, {@link #SIEMENS}, {@link #HENRY}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -863,12 +820,11 @@ public final class Units extends Static {
      * One coulomb is the charge transferred by a current of one ampere during one second.
      * The unlocalized name is “coulomb”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #AMPERE} ⋅ {@link #SECOND}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #FARAD}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -878,11 +834,10 @@ public final class Units extends Static {
      * The SI derived unit for electric capacitance (F).
      * The unlocalized name is “farad”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #COULOMB} ∕ {@link #VOLT}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -893,12 +848,11 @@ public final class Units extends Static {
      * This is the inverse of electric conductance.
      * The unlocalized name is “ohm”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #VOLT} ∕ {@link #AMPERE}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #SIEMENS}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -909,12 +863,11 @@ public final class Units extends Static {
      * This is the inverse of electric resistance.
      * The unlocalized name is “siemens”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #AMPERE} ∕ {@link #VOLT}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #OHM}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -924,12 +877,11 @@ public final class Units extends Static {
      * The SI derived unit for magnetic flux (Wb).
      * The unlocalized name is “weber”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td>    <td style="word-spacing:0.5em">{@link #VOLT} ⋅ {@link #SECOND}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #TESLA}, {@link #HENRY}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -939,11 +891,10 @@ public final class Units extends Static {
      * The SI derived unit for magnetic flux density (T).
      * The unlocalized name is “tesla”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #WEBER} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -953,11 +904,10 @@ public final class Units extends Static {
      * The SI derived unit for inductance (H).
      * The unlocalized name is “henry”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #WEBER} ∕ {@link #AMPERE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -967,12 +917,11 @@ public final class Units extends Static {
      * The SI base unit for thermodynamic temperature (K).
      * The unlocalized name is “kelvin”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI temperature units:</td> <td style="word-spacing:1em"><u><b>{@code KELVIN}</b></u>.</td></tr>
      *   <tr><td>In other systems:</td>     <td style="word-spacing:1em">{@link #CELSIUS}, {@link #FAHRENHEIT}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -983,12 +932,11 @@ public final class Units extends Static {
      * The symbol is °C and the unlocalized name is “Celsius”.
      * Note that this is the only SI unit with an upper-case letter in its name.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI temperature units:</td> <td style="word-spacing:1em"><b>{@link #KELVIN}</b>.</td></tr>
      *   <tr><td>In other systems:</td>     <td style="word-spacing:1em"><u>{@code CELSIUS}</u>, {@link #FAHRENHEIT}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -999,12 +947,11 @@ public final class Units extends Static {
      * The symbol is °F and the unlocalized name is “Fahrenheit”
      * (note the upper-case "F" letter).
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>SI temperature units:</td> <td style="word-spacing:1em"><b>{@link #KELVIN}</b>.</td></tr>
      *   <tr><td>In other systems:</td>     <td style="word-spacing:1em">{@link #CELSIUS}, <u>{@code FAHRENHEIT}</u>.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -1014,11 +961,10 @@ public final class Units extends Static {
      * The SI base unit for luminous intensity (cd).
      * The unlocalized name is “candela”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #LUMEN}, {@link #LUX}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -1028,12 +974,11 @@ public final class Units extends Static {
      * The SI derived unit for luminous flux (lm).
      * The unlocalized name is “lumen”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #CANDELA} ⋅ {@link #STERADIAN}</td></tr>
      *   <tr><td>Derived units:</td> <td style="word-spacing:1em">{@link #LUX}.</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -1043,11 +988,10 @@ public final class Units extends Static {
      * The SI derived unit for illuminance (lx).
      * The unlocalized name is “lux”.
      *
-     * <div class="note">
      * <table class="compact" style="margin-left:30px; line-height:1.25">
      *   <caption>Related units</caption>
      *   <tr><td>Components:</td> <td style="word-spacing:0.5em">{@link #LUX} ∕ {@link #SQUARE_METRE}</td></tr>
-     * </table></div>
+     * </table>
      *
      * @since 0.8
      */
@@ -1602,13 +1546,13 @@ public final class Units extends Static {
      * The "standard" unit is usually the SI unit on which the given unit is based, as given by
      * {@link Unit#getSystemUnit()}.
      *
-     * <div class="note"><b>Example:</b>
-     * if the given unit is {@link #KILOMETRE}, then this method returns 1000 since a measurement in kilometres
-     * must be multiplied by 1000 in order to give the equivalent measurement in the "standard" units
-     * (here {@link #METRE}).</div>
+     * <p>If the given unit is {@code null} or if the conversion to the "standard" unit cannot be expressed
+     * by a single multiplication factor, then this method returns {@link Double#NaN}.</p>
      *
-     * If the given unit is {@code null} or if the conversion to the "standard" unit cannot be expressed
-     * by a single multiplication factor, then this method returns {@link Double#NaN}.
+     * <h4>Example</h4>
+     * If the given unit is {@link #KILOMETRE}, then this method returns 1000 since a measurement in kilometres
+     * must be multiplied by 1000 in order to give the equivalent measurement in the "standard" units
+     * (here {@link #METRE}).
      *
      * @param  <Q>   the quantity measured by the unit, or {@code null}.
      * @param  unit  the unit for which we want the multiplication factor to standard unit, or {@code null}.
@@ -1784,10 +1728,10 @@ public final class Units extends Static {
      *   </tr>
      * </table>
      *
-     * <div class="note"><b>Note:</b>
+     * <h4>Axis units special case</h4>
      * EPSG uses code 9102 (<cite>degree</cite>) for prime meridian and coordinate operation parameters,
      * and code 9122 (<cite>degree (supplier to define representation)</cite>) for coordinate system axes.
-     * But Apache SIS considers those two codes as synonymous.</div>
+     * But Apache SIS considers those two codes as synonymous.
      *
      * @param  code  the EPSG code for a unit of measurement.
      * @return the unit, or {@code null} if the code is unrecognized.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java b/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
index 5b2475214d..63c86d07c6 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/setup/InstallationResources.java
@@ -30,7 +30,8 @@ import org.apache.sis.internal.util.MetadataServices;
  * {@code InstallationResources} can be used for downloading large files that may not be of interest
  * to every users, or data that are subject to more restricting terms of use than the Apache license.
  *
- * <div class="note"><b>Examples:</b><ul class="verbose">
+ * <h2>Examples</h2>
+ * <ul>
  * <li>The NADCON grid files provide <cite>datum shifts</cite> data for North America.
  *     Since those files are in the public domain, they could be bundled in Apache SIS.
  *     But the weight of those files (about 2.4 Mb) is unnecessary for users who do not live in North America.</li>
@@ -38,8 +39,9 @@ import org.apache.sis.internal.util.MetadataServices;
  *     Codes like {@code "EPSG:4326"} became a <i>de-facto</i> standard in various places like <cite>Web Map Services</cite>,
  *     images encoded in GeoTIFF format, <i>etc</i>. But the <a href="https://epsg.org/terms-of-use.html">EPSG terms of use</a>
  *     are more restrictive than the Apache license and require that we inform the users about those conditions.</li>
- * </ul></div>
+ * </ul>
  *
+ * <h2>Recognized authorities</h2>
  * Some authorities implemented in Apache SIS modules are listed below.
  * In this list, {@code "Embedded"} is a pseudo-authority for an embedded database containing EPSG and other data.
  * The embedded database is provided as a convenience for avoiding the need to define a {@code SIS_DATA} directory
diff --git a/core/sis-utility/src/main/java/org/apache/sis/setup/OptionalInstallations.java b/core/sis-utility/src/main/java/org/apache/sis/setup/OptionalInstallations.java
index d87b24160c..e3d0e655b5 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/setup/OptionalInstallations.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/setup/OptionalInstallations.java
@@ -109,9 +109,9 @@ public abstract class OptionalInstallations extends InstallationResources implem
      *   <li>With a non-null {@code license} argument for asking if the user agrees with the license terms.</li>
      * </ol>
      *
-     * <div class="note"><b>Design note:</b>
-     * the download action needs to be initiated before to ask for license agreement
-     * because the license text is bundled in the resource to download.</div>
+     * <h4>Design note</h4>
+     * The download action needs to be initiated before to ask for license agreement
+     * because the license text is bundled in the resource to download.
      *
      * @param  authority  one of the authorities returned by {@link #getAuthorities()}.
      * @param  license    the license, or {@code null} for asking if the user wants to download the data.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java b/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
index 821ad8157f..0575e37b2d 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
@@ -1353,18 +1353,18 @@ public final class ArraysExt extends Static {
      * returning values in an array instead of in a stream. This method is okay for small sequences;
      * for large sequences the stream approach should be preferred.
      *
-     * <div class="note"><b>Purpose:</b>
-     * this method is convenient for enumerating dimensions in a coordinate reference system or bands in an image.
+     * <p>For any array returned by this method, <code>{@link #isRange(int, int[]) isRange}(start, array)</code>
+     * is guaranteed to return {@code true}.</p>
+     *
+     * <h4>Use case</h4>
+     * This method is convenient for enumerating dimensions in a coordinate reference system or bands in an image.
      * Some methods in the Java library or in Apache SIS want dimensions or bands to be specified by their indices.
      * An example from the Java library is the {@code bankIndices} argument in
      * <code>{@linkplain java.awt.image.Raster#createBandedRaster(int, int, int, int, int[], int[], java.awt.Point)
      * Raster.createBandedRaster}(…, bankIndices, …)</code>.
      * An example from Apache SIS is the {@code range} argument in
      * <code>{@linkplain org.apache.sis.storage.GridCoverageResource#read GridCoverageResource.read}(…, range)</code>.
-     * This {@code range(start, end)} method can be used in the common case where all bands are wanted in order.</div>
-     *
-     * For any array returned by this method, <code>{@link #isRange(int, int[]) isRange}(start, array)</code>
-     * is guaranteed to return {@code true}.
+     * This {@code range(start, end)} method can be used in the common case where all bands are wanted in order.
      *
      * @param  start  first value (inclusive) in the array to return.
      * @param  end    upper bound (exclusive) of values in the array to return.
@@ -1401,13 +1401,13 @@ public final class ArraysExt extends Static {
      *   <li>Otherwise return {@code false}.</li>
      * </ul>
      *
-     * <div class="note"><b>Example:</b>
-     * {@code isRange(1, array)} returns {@code true} if the given array is {@code {1, 2, 3, 4}}
-     * but {@code false} if the array is {@code {1, 2, 4}} (missing 3).</div>
-     *
      * This method is useful when {@code array} is an argument specified to another method, and determining that the
      * argument values are {@code start}, {@code start}+1, {@code start}+2, <i>etc.</i> allows some optimizations.
      *
+     * <h4>Example</h4>
+     * {@code isRange(1, array)} returns {@code true} if the given array is {@code {1, 2, 3, 4}}
+     * but {@code false} if the array is {@code {1, 2, 4}} (missing 3).
+     *
      * @param  start  first value expected in the given {@code array}.
      * @param  array  the array to test, or {@code null}.
      * @return {@code true} if the given array is non-null and equal to
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/CharSequences.java b/core/sis-utility/src/main/java/org/apache/sis/util/CharSequences.java
index b2c090c323..e153d9d486 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/CharSequences.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/CharSequences.java
@@ -49,13 +49,13 @@ import static java.lang.Character.*;
  *       feeds or tabulations are entity boundaries.</li>
  * </ul>
  *
- * <div class="note"><b>Example:</b>
- * Numbers formatted in the French locale use no-break spaces as group separators. When parsing a list of numbers,
- * ordinary spaces around the numbers may need to be ignored, but no-break spaces shall be considered as part of the
- * numbers. Consequently, {@code isWhitespace(…)} is appropriate for skipping spaces <em>between</em> the numbers.
+ * For example numbers formatted in the French locale use no-break spaces as group separators.
+ * When parsing a list of numbers, ordinary spaces around the numbers may need to be ignored,
+ * but no-break spaces shall be considered as part of the numbers.
+ * Consequently, {@code isWhitespace(…)} is appropriate for skipping spaces <em>between</em> the numbers.
  * But if there is spaces to skip <em>inside</em> a single number, then {@code isSpaceChar(…)} is a good choice
  * for accepting no-break spaces and for stopping the parse operation at tabulations or line feed character.
- * A tabulation or line feed between two characters is very likely to separate two distinct values.</div>
+ * A tabulation or line feed between two characters is very likely to separate two distinct values.
  *
  * In practice, the {@link java.text.Format} implementations in the SIS library typically use
  * {@code isSpaceChar(…)} while most of the rest of the SIS library, including this
@@ -689,13 +689,13 @@ search:     for (; fromIndex <= toIndex; fromIndex++) {
      *       {@linkplain Characters#PARAGRAPH_SEPARATOR paragraph separator}.</li>
      * </ul>
      *
-     * <div class="note"><b>Performance note:</b>
+     * <h4>Performance note</h4>
      * Prior Java 8 this method was usually cheap because all string instances created by
      * {@link String#substring(int,int)} shared the same {@code char[]} internal array.
      * However, since Java 8, the new {@code String} implementation copies the data in new arrays.
      * Consequently, it is better to use index rather than this method for splitting large {@code String}s.
      * However, this method still useful for other {@link CharSequence} implementations providing an efficient
-     * {@code subSequence(int,int)} method.</div>
+     * {@code subSequence(int,int)} method.
      *
      * @param  text  the multi-line text from which to get the individual lines, or {@code null}.
      * @return the lines in the text, or an empty array if the given text was null.
@@ -1393,12 +1393,11 @@ searchWordBreak:    while (true) {
      * built from at least one character of each word in the {@code words} string. More than
      * one character from the same word may appear in the acronym, but they must always
      * be the first consecutive characters. The comparison is case-insensitive.
+     * If any of the given arguments is {@code null}, this method returns {@code false}.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * Given the {@code "Open Geospatial Consortium"} words, the following strings are recognized as acronyms:
-     * {@code "OGC"}, {@code "ogc"}, {@code "O.G.C."}, {@code "OpGeoCon"}.</div>
-     *
-     * If any of the given arguments is {@code null}, this method returns {@code false}.
+     * {@code "OGC"}, {@code "ogc"}, {@code "O.G.C."}, {@code "OpGeoCon"}.
      *
      * @param  acronym  a possible acronym of the sequence of words, or {@code null}.
      * @param  words    the sequence of words, or {@code null}.
@@ -1969,17 +1968,17 @@ cmp:    while (ia < lga) {
      * The latter are often eastward and northward components of a vector, in which case this method provides
      * an identifier for the vector as a whole.</p>
      *
-     * <div class="note"><b>Example:</b>
-     * given the following inputs:
+     * <p>If one of the given texts is {@code null}, then the other text is returned.
+     * If there are no common words, then this method returns an empty string.</p>
+     *
+     * <h4>Example</h4>
+     * Given the following inputs:
      * <ul>
      *   <li>{@code "baroclinic_eastward_velocity"}</li>
      *   <li>{@code "baroclinic_northward_velocity"}</li>
      * </ul>
      * This method returns {@code "baroclinic_velocity"}. Note that the {@code "ward"} characters
-     * are a common suffix of both texts but nevertheless omitted because they cut a word.</div>
-     *
-     * <p>If one of those texts is {@code null}, then the other text is returned.
-     * If there are no common words, then this method returns an empty string.</p>
+     * are a common suffix of both texts but nevertheless omitted because they cut a word.
      *
      * <h4>Possible future evolution</h4>
      * Current implementation searches only for a common prefix and a common suffix, ignoring any common words
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/ComparisonMode.java b/core/sis-utility/src/main/java/org/apache/sis/util/ComparisonMode.java
index e0162a387e..143abf332d 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/ComparisonMode.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/ComparisonMode.java
@@ -112,9 +112,9 @@ public enum ComparisonMode {
      * those objects as equivalent despite difference in the set of parameters, as long as coordinate
      * transformations still produce the same results.
      *
-     * <div class="note"><b>Example:</b> A <cite>"Mercator (2SP)"</cite> projection with a <cite>standard parallel</cite>
-     * value of 60° produces the same results than a <cite>"Mercator (1SP)"</cite> projection with a <cite>scale factor</cite>
-     * value of 0.5.</div>
+     * <h4>Example</h4>
+     * A <cite>"Mercator (2SP)"</cite> projection with a <cite>standard parallel</cite> value of 60° produces the
+     * same results than a <cite>"Mercator (1SP)"</cite> projection with a <cite>scale factor</cite> value of 0.5.
      *
      * @see org.apache.sis.util.Utilities#equalsIgnoreMetadata(Object, Object)
      */
@@ -144,13 +144,12 @@ public enum ComparisonMode {
      * <p>The main purpose of this method is to verify if two Coordinate Reference Systems (CRS)
      * are approximately equal ignoring axis order.</p>
      *
-     * <div class="note"><b>Example:</b>
-     * consider two geographic coordinate reference systems with the same attributes except axis order,
+     * <h4>Example</h4>
+     * Consider two geographic coordinate reference systems with the same attributes except axis order,
      * where one CRS uses (<var>latitude</var>, <var>longitude</var>) axes
      * and the other CRS uses (<var>longitude</var>, <var>latitude</var>) axes.
      * All comparison modes (even {@code APPROXIMATE}) will consider those two CRS as different,
      * except this {@code ALLOW_VARIANT} mode which will consider one CRS to be a variant of the other.
-     * </div>
      *
      * @since 0.7
      */
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/Deprecable.java b/core/sis-utility/src/main/java/org/apache/sis/util/Deprecable.java
index 73d09e083a..197f995be2 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/Deprecable.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/Deprecable.java
@@ -24,14 +24,14 @@ import org.opengis.util.InternationalString;
  * by this interface are unrelated to the entities deprecated by the Java {@link Deprecated} annotation.
  * This interface is for identifying deprecated <em>data</em> rather than language constructs.
  *
- * <div class="note"><b>Example:</b>
+ * <h2>Examples</h2>
  * When an error is discovered in the definition of a Coordinate Reference System (CRS) in the EPSG database,
  * the EPSG maintainers do not change the data. Instead, they deprecate the erroneous definition and create a
  * new one with a new EPSG code. The {@link #isDeprecated()} method in this interface allows users to identify
  * CRS instances created from such deprecated database records, for example in order to log a warning when data
- * are projected to a deprecated CRS.</div>
+ * are projected to a deprecated CRS.
  *
- * Some examples of deprecated instances are:
+ * <p>Some examples of deprecated instances are:</p>
  *
  * <ul>
  *   <li>An {@link org.apache.sis.referencing.AbstractIdentifiedObject} (typically a CRS)
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java b/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
index 724915aee2..9496f735c0 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
@@ -248,10 +248,10 @@ filter: for (final Locale locale : locales) {
      * string are parsed as documented in the {@link #parse(String)} method. In particular, this method tries to
      * convert 3-letters codes to 2-letters code on a <cite>best effort</cite> basis.
      *
-     * <div class="note"><b>Example:</b>
+     * <h4>Example</h4>
      * This method is useful when language codes are appended to a base property or resource name.
      * For example, a dictionary may define the {@code "remarks"} property by values associated to the
-     * {@code "remarks_en"} and {@code "remarks_fr"} keys, for English and French locales respectively.</div>
+     * {@code "remarks_en"} and {@code "remarks_fr"} keys, for English and French locales respectively.
      *
      * @param  code  the language code, which may be followed by country code.
      * @param  fromIndex  index of the first character to parse.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/LocalizedException.java b/core/sis-utility/src/main/java/org/apache/sis/util/LocalizedException.java
index 11c6c4c1a4..95f1490d33 100644
... 335 lines suppressed ...