diff --git a/src/main/java/org/apache/sling/api/request/RequestPathInfo.java b/src/main/java/org/apache/sling/api/request/RequestPathInfo.java
index 90dce48..ce07ae3 100644
--- a/src/main/java/org/apache/sling/api/request/RequestPathInfo.java
+++ b/src/main/java/org/apache/sling/api/request/RequestPathInfo.java
@@ -52,11 +52,12 @@
  * request URI, the extension is empty.
  * <li>{@link #getSuffix() suffix path} - If the request URI contains a slash
  * character after the content path and optional selectors and extension, the
- * path starting with the slash upto the end of the request URI is the suffix
+ * path starting with the slash up to the end of the request URI is the suffix
  * path.
  * </ol>
  * <p>
- * Examples: <table summary="">
+ * Examples: <table>
+ * <caption>URI decomposition</caption>
  * <tr>
  * <th>URI</th>
  * <th>Content Path</th>
diff --git a/src/main/java/org/apache/sling/api/resource/ResourceResolver.java b/src/main/java/org/apache/sling/api/resource/ResourceResolver.java
index 0bceb86..8a2b27d 100644
--- a/src/main/java/org/apache/sling/api/resource/ResourceResolver.java
+++ b/src/main/java/org/apache/sling/api/resource/ResourceResolver.java
@@ -57,7 +57,8 @@
  * <code>resolve</code> methods and the <code>getResource</code> methods. The
  * difference lies in the algorithm applied to find the requested resource and
  * in the behavior in case a resource cannot be found:
- * <table summary="">
+ * <table>
+ *     <caption>Accessing Resources</caption>
  * <tr>
  * <th>Method Kind</th>
  * <th>Access Algorithm</th>
@@ -286,7 +287,7 @@
      * @throws IllegalStateException if this resource resolver has already been
      *             {@link #close() closed}.
      * 
-     * @see {@link ResourceMapper#getMapping(String, HttpServletRequest)}
+     * @see ResourceMapper#getMapping(String, HttpServletRequest)
      * @see <a href="https://tools.ietf.org/html/rfc3986#section-2.1">Percent-Encoding</a>
      * @see <a href="https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html">Mappings for Resource Resolution</a>
      */
@@ -324,7 +325,7 @@
      *             {@link #close() closed}.
      * @since 2.0.4 (Sling API Bundle 2.0.4)
      * 
-     * @see {@link ResourceMapper#getMapping(String, HttpServletRequest)}
+     * @see ResourceMapper#getMapping(String, HttpServletRequest)
      * @see <a href="https://tools.ietf.org/html/rfc3986#section-2.1">Percent-Encoding</a>
      * @see <a href="https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html">Mappings for Resource Resolution</a>
      */
diff --git a/src/main/java/org/apache/sling/api/resource/mapping/ResourceMapper.java b/src/main/java/org/apache/sling/api/resource/mapping/ResourceMapper.java
index 53086d5..a302469 100644
--- a/src/main/java/org/apache/sling/api/resource/mapping/ResourceMapper.java
+++ b/src/main/java/org/apache/sling/api/resource/mapping/ResourceMapper.java
@@ -96,7 +96,7 @@
     @NotNull String getMapping(@NotNull String resourcePath, @NotNull HttpServletRequest request);
     
     /**
-     * Retuns all possible mappings for a given <tt>resourcePath</tt> as paths.
+     * Returns all possible mappings for a given {@code resourcePath} as paths.
      * 
      * <p>
      * This method differs from the {@link #getMapping(String)} variant
@@ -114,7 +114,7 @@
     Collection<String> getAllMappings(@NotNull String resourcePath);
 
     /**
-     * Retuns all possible mappings for a given <tt>resourcePath</tt> as URLs.
+     * Returns all possible mappings for a given {@code resourcePath} as URLs.
      * 
      * <p>
      * This method differs from the {@link #getMapping(String, HttpServletRequest)} variant
diff --git a/src/main/java/org/apache/sling/api/resource/path/PathBuilder.java b/src/main/java/org/apache/sling/api/resource/path/PathBuilder.java
index f7f3334..72c9950 100644
--- a/src/main/java/org/apache/sling/api/resource/path/PathBuilder.java
+++ b/src/main/java/org/apache/sling/api/resource/path/PathBuilder.java
@@ -19,7 +19,7 @@
 package org.apache.sling.api.resource.path;
 
 /**
- * The <tt>PathBuilder</tt> offers a convenient way of creating a valid path from multiple fragments
+ * The {@code PathBuilder} offers a convenient way of creating a valid path from multiple fragments
  *
  * @since 1.0.0 (Sling API Bundle 2.11.0)
  */
@@ -28,7 +28,7 @@
     private final StringBuilder sb = new StringBuilder();
 
     /**
-     * Creates a new <tt>PathBuilder</tt> instance
+     * Creates a new {@code PathBuilder} instance
      *
      * @param path the initial path
      */
@@ -76,4 +76,4 @@
     public String toString() {
         return sb.toString();
     }
-}
\ No newline at end of file
+}
