You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/07/27 18:13:40 UTC

[maven-doxia-sitetools] branch DOXIASITETOOLS-266 created (now f64ffd2)

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

michaelo pushed a change to branch DOXIASITETOOLS-266
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git


      at f64ffd2  [DOXIASITETOOLS-266] Don't create anchors behind the user's back

This branch includes the following new commits:

     new f64ffd2  [DOXIASITETOOLS-266] Don't create anchors behind the user's back

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-doxia-sitetools] 01/01: [DOXIASITETOOLS-266] Don't create anchors behind the user's back

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch DOXIASITETOOLS-266
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git

commit f64ffd26044ebb89354e6d1fc6927c54f3c8d5c7
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Wed Jul 27 20:13:07 2022 +0200

    [DOXIASITETOOLS-266] Don't create anchors behind the user's back
---
 .../doxia/siterenderer/sink/SiteRendererSink.java  | 102 +--------------------
 .../maven/doxia/siterenderer/AptVerifier.java      |  11 +--
 .../doxia/siterenderer/AttributesVerifier.java     |  18 +---
 .../maven/doxia/siterenderer/EntitiesVerifier.java |  19 ----
 .../maven/doxia/siterenderer/FaqVerifier.java      |  14 +--
 .../doxia/siterenderer/JavascriptVerifier.java     |   4 -
 .../doxia/siterenderer/MultipleBlockVerifier.java  |   4 -
 .../doxia/siterenderer/NestedItemsVerifier.java    |  16 ----
 .../src/test/resources/site/fml/faq.fml            |   4 +-
 9 files changed, 8 insertions(+), 184 deletions(-)

diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
index 550e03c..2f7c32a 100644
--- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
+++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
@@ -22,16 +22,10 @@ package org.apache.maven.doxia.siterenderer.sink;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
-
-import javax.swing.text.html.HTML.Attribute;
 
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.module.xhtml5.Xhtml5Sink;
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.siterenderer.DocumentContent;
 import org.apache.maven.doxia.siterenderer.RenderingContext;
 import org.apache.maven.doxia.util.HtmlTools;
@@ -47,7 +41,7 @@ import org.codehaus.plexus.util.StringUtils;
 @SuppressWarnings( "checkstyle:methodname" )
 public class SiteRendererSink
     extends Xhtml5Sink
-    implements Sink, DocumentContent
+    implements DocumentContent
 {
     private String date;
 
@@ -57,16 +51,6 @@ public class SiteRendererSink
 
     private final StringWriter headWriter;
 
-    private StringBuilder sectionTitleBuffer;
-
-    private StringBuilder sectionTitleWriteBuffer;
-
-    private boolean sectionHasID;
-
-    private boolean isSectionTitle;
-
-    private Set<String> anchorsInSectionTitle;
-
     private final Writer writer;
 
     private RenderingContext renderingContext;
@@ -201,80 +185,6 @@ public class SiteRendererSink
         setHeadFlag( true );
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public void anchor( String name, SinkEventAttributes attributes )
-    {
-        super.anchor( name, attributes );
-        if ( isSectionTitle )
-        {
-            if ( anchorsInSectionTitle == null )
-            {
-                anchorsInSectionTitle = new HashSet<String>();
-            }
-            anchorsInSectionTitle.add( name );
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void onSectionTitle( int depth, SinkEventAttributes attributes )
-    {
-        sectionHasID = ( attributes != null && attributes.isDefined ( Attribute.ID.toString() ) );
-        isSectionTitle = true;
-
-        super.onSectionTitle( depth, attributes );
-
-        this.sectionTitleBuffer = new StringBuilder();
-        this.sectionTitleWriteBuffer = new StringBuilder();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void onSectionTitle_( int depth )
-    {
-        String sectionTitle = sectionTitleBuffer.toString();
-        this.sectionTitleBuffer = null;
-        String sectionWriteTitle = sectionTitleWriteBuffer.toString();
-        this.sectionTitleWriteBuffer = null;
-
-        if ( !StringUtils.isEmpty( sectionTitle ) )
-        {
-            if ( sectionHasID )
-            {
-                sectionHasID = false;
-            }
-            else
-            {
-                String id = HtmlTools.encodeId( sectionTitle );
-                if ( ( anchorsInSectionTitle == null ) || ( !anchorsInSectionTitle.contains( id ) ) )
-                {
-                    anchor( id );
-                    anchor_();
-                }
-            }
-        }
-
-        super.write( sectionWriteTitle );
-
-        this.isSectionTitle = false;
-        anchorsInSectionTitle = null;
-        super.onSectionTitle_( depth );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void text( String text )
-    {
-        if ( sectionTitleBuffer != null )
-        {
-            // this implies we're inside a section title, collect text events for anchor generation
-            sectionTitleBuffer.append( text );
-        }
-
-        super.text( text );
-    }
-
     /** {@inheritDoc} */
     @Override
     protected void write( String text )
@@ -302,15 +212,7 @@ public class SiteRendererSink
             }
         }
 
-        if ( sectionTitleWriteBuffer != null )
-        {
-            // this implies we're inside a section title, collect text events for anchor generation
-            sectionTitleWriteBuffer.append( txt );
-        }
-        else
-        {
-            super.write( txt );
-        }
+        super.write( txt );
     }
 
     // DocumentContent interface
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
index 776b6a2..bfab1a8 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
@@ -68,14 +68,11 @@ public class AptVerifier
         assertNotNull( h1 );
         assertEquals( "Links", h1.asNormalizedText().trim() );
 
-        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Links", a.getAttribute( "name" ) );
-
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
 
         // Expected log: [APT Parser] Ambiguous link: 'cdc.html'. If this is a local link, prepend "./"!
-        a = (HtmlAnchor) elementIterator.next();
+        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
         assertEquals( "Anchor", a.getAttribute( "name" ) );
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "cdc.html", a.getAttribute( "name" ) );
@@ -114,9 +111,6 @@ public class AptVerifier
         // Note: htmlunit strips the white space, actual result is ok
         assertEquals( "Section formatting: italic bold mono", h1.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Section_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
-
         HtmlItalic italic = (HtmlItalic) elementIterator.next();
         assertEquals( "i", italic.getTagName() );
         assertEquals( "italic", italic.asNormalizedText().trim() );
@@ -137,9 +131,6 @@ public class AptVerifier
         // Note: htmlunit strips the white space, actual result is ok
         assertEquals( "SubSection formatting: italic bold mono", h2.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "SubSection_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
-
         italic = (HtmlItalic) elementIterator.next();
         assertEquals( "i", italic.getTagName() );
         assertEquals( "italic", italic.asNormalizedText().trim() );
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
index d895fcf..423539c 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
@@ -81,10 +81,6 @@ public class AttributesVerifier
         assertNotNull( h1 );
         assertEquals( "section", h1.asNormalizedText().trim() );
 
-        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "section", a.getAttribute( "name" ) );
-
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
 
@@ -162,7 +158,7 @@ public class AttributesVerifier
         assertNotNull( p );
         assertEquals( "color: red; margin-left: 20px", p.getAttribute( "style" ) );
 
-        a = (HtmlAnchor) elementIterator.next();
+        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
         assertEquals( "Anchor", a.getAttribute( "name" ) );
 
         p = (HtmlParagraph) elementIterator.next();
@@ -200,30 +196,22 @@ public class AttributesVerifier
         section = (HtmlSection) elementIterator.next();
         h1 = (HtmlHeading1) elementIterator.next();
         assertEquals( "Section without id", h1.asNormalizedText().trim() );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Section_without_id", a.getAttribute( "name" ) );
 
         section = (HtmlSection) elementIterator.next();
         HtmlHeading2 h2 = (HtmlHeading2) elementIterator.next();
         assertEquals( "Subsection without id", h2.asNormalizedText().trim() );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Subsection_without_id", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "section-id", a.getAttribute( "name" ) );
         section = (HtmlSection) elementIterator.next();
         h1 = (HtmlHeading1) elementIterator.next();
         assertEquals( "Section with id", h1.asNormalizedText().trim() );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Section_with_id", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "subsection-id", a.getAttribute( "name" ) );
         section = (HtmlSection) elementIterator.next();
         h2 = (HtmlHeading2) elementIterator.next();
         assertEquals( "Subsection with id", h2.asNormalizedText().trim() );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Subsection_with_id", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "foo", a.getAttribute( "name" ) );
@@ -233,8 +221,6 @@ public class AttributesVerifier
         h1 = (HtmlHeading1) elementIterator.next();
         assertEquals( "Section name", h1.asNormalizedText().trim() );
         assertEquals( "", h1.getAttribute( "class" ) );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Section_name", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "subfoo", a.getAttribute( "name" ) );
@@ -244,8 +230,6 @@ public class AttributesVerifier
         h2 = (HtmlHeading2) elementIterator.next();
         assertEquals( "Subsection name", h2.asNormalizedText().trim() );
         assertEquals( "", h2.getAttribute( "class" ) );
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Subsection_name", a.getAttribute( "name" ) );
 
         assertFalse( elementIterator.hasNext() );
     }
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
index 8828999..d683e84 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
@@ -69,11 +69,6 @@ public class EntitiesVerifier
         assertNotNull( h1 );
         assertEquals( h1.asNormalizedText().trim(), "section name with entities: '&' '\u0391' ' ' '\uD835\uDFED'" );
 
-        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "section_name_with_entities:_.27.26.27_.27.CE.91.27_.27.C2.A0.27_.27.3F.3F.27",
-                      a.getAttribute( "name" ) );
-
         section = (HtmlSection) elementIterator.next();
         assertNotNull( section );
 
@@ -84,10 +79,6 @@ public class EntitiesVerifier
         assertNotNull( h3 );
         assertEquals( "Entities", h3.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "Entities", a.getAttribute( "name" ) );
-
         section = (HtmlSection) elementIterator.next();
         assertNotNull( section );
 
@@ -95,8 +86,6 @@ public class EntitiesVerifier
         assertNotNull( h2 );
         assertEquals( "Generic Entities: '&' '<' '>' '\"' '''", h2.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "'&' '<' '>' '\"' '''", p.asNormalizedText().trim() );
@@ -108,8 +97,6 @@ public class EntitiesVerifier
         assertNotNull( h2 );
         assertEquals( "Local Entities: '\u0391' '\u0392' '\u0393' '\uD835\uDFED'", h2.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "'\u0391' '\u0392' '\u0393' '\uD835\uDFED\uD835\uDFED' '\u0159\u0159' '\u0159'", p.asNormalizedText().trim() );
@@ -121,8 +108,6 @@ public class EntitiesVerifier
         assertNotNull( h2 );
         assertEquals( "DTD Entities: ' ' '\u00A1' '\u00A2'", h2.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "' ' '\u00A1' '\u00A2'", p.asNormalizedText().trim() );
@@ -134,10 +119,6 @@ public class EntitiesVerifier
         assertNotNull( h3 );
         assertEquals( "CDATA", h3.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "CDATA", a.getAttribute( "name" ) );
-
         HtmlDivision div = (HtmlDivision) elementIterator.next();
         assertNotNull( div );
 
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java
index 5328516..57ab00d 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java
@@ -68,12 +68,9 @@ public class FaqVerifier
         HtmlSection section = (HtmlSection) elementIterator.next();
 
         HtmlHeading1 h1 = (HtmlHeading1) elementIterator.next();
-        assertEquals( "Oft Asked Questions", h1.asNormalizedText().trim() );
+        assertEquals( "Often Asked Questions", h1.asNormalizedText().trim() );
 
         HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertEquals( a.getAttribute( "name" ), "Oft_Asked_Questions" );
-
-        a = (HtmlAnchor) elementIterator.next();
         assertEquals( "top", a.getAttribute( "name" ) );
 
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
@@ -114,9 +111,6 @@ public class FaqVerifier
         h1 = (HtmlHeading1) elementIterator.next();
         assertEquals( "Contributing", h1.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Contributing", a.getAttribute( "name" ) );
-
         HtmlDefinitionList dl = (HtmlDefinitionList) elementIterator.next();
 
         HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
@@ -134,7 +128,7 @@ public class FaqVerifier
         p = (HtmlParagraph) elementIterator.next();
 
         a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "#Using_Maven", a.getAttribute( "href" ) );
+        assertEquals( "#using", a.getAttribute( "href" ) );
         assertEquals( "local link", a.asNormalizedText().trim() );
 
         a = (HtmlAnchor) elementIterator.next();
@@ -160,15 +154,11 @@ public class FaqVerifier
         assertEquals( "#top", a.getAttribute( "href" ) );
         assertEquals( "[top]", a.asNormalizedText().trim() );
 
-
         section = (HtmlSection) elementIterator.next();
 
         h1 = (HtmlHeading1) elementIterator.next();
         assertEquals( "Using Maven", h1.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Using_Maven", a.getAttribute( "name" ) );
-
         dl = (HtmlDefinitionList) elementIterator.next();
 
         dt = (HtmlDefinitionTerm) elementIterator.next();
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/JavascriptVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/JavascriptVerifier.java
index b98fe59..cdf47f1 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/JavascriptVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/JavascriptVerifier.java
@@ -92,10 +92,6 @@ public class JavascriptVerifier
             assertNotNull( h1 );
             assertEquals( "Test", h1.asNormalizedText().trim() );
 
-            HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-            assertNotNull( a );
-            assertEquals( "Test", a.getAttribute( "name" ) );
-
             HtmlParagraph p = (HtmlParagraph) elementIterator.next();
             assertNotNull( p );
             assertEquals( "You should see a JavaScript alert...", p.asNormalizedText().trim() );
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/MultipleBlockVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/MultipleBlockVerifier.java
index c9405ad..ebeae78 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/MultipleBlockVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/MultipleBlockVerifier.java
@@ -67,10 +67,6 @@ public class MultipleBlockVerifier
         assertNotNull( h1 );
         assertEquals( "section name", h1.asNormalizedText().trim() );
 
-        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "section_name", a.getAttribute( "name" ) );
-
         // ----------------------------------------------------------------------
         // Paragraph
         // ----------------------------------------------------------------------
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
index 9fcbc03..29a40b9 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
@@ -72,10 +72,6 @@ public class NestedItemsVerifier
         assertNotNull( h1 );
         assertEquals( "List Section", h1.asNormalizedText().trim() );
 
-        HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "List_Section", a.getAttribute( "name" ) );
-
         // ----------------------------------------------------------------------
         // Unordered lists
         // ----------------------------------------------------------------------
@@ -90,10 +86,6 @@ public class NestedItemsVerifier
         assertNotNull( h3 );
         assertEquals( "Unordered lists", h3.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "Unordered_lists", a.getAttribute( "name" ) );
-
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "Below is an unordered list, followed by six paragraphs.", p.asNormalizedText().trim() );
@@ -180,10 +172,6 @@ public class NestedItemsVerifier
         assertNotNull( h3 );
         assertEquals( "Ordered lists", h3.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "Ordered_lists", a.getAttribute( "name" ) );
-
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "Below is an ordered list, followed by six paragraphs.", p.asNormalizedText().trim() );
@@ -266,10 +254,6 @@ public class NestedItemsVerifier
         assertNotNull( h3 );
         assertEquals( "Definition lists", h3.asNormalizedText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertNotNull( a );
-        assertEquals( "Definition_lists", a.getAttribute( "name" ) );
-
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( "Below is a definition list, followed by six paragraphs.", p.asNormalizedText().trim() );
diff --git a/doxia-site-renderer/src/test/resources/site/fml/faq.fml b/doxia-site-renderer/src/test/resources/site/fml/faq.fml
index a6843c5..28e629c 100644
--- a/doxia-site-renderer/src/test/resources/site/fml/faq.fml
+++ b/doxia-site-renderer/src/test/resources/site/fml/faq.fml
@@ -21,7 +21,7 @@ under the License.
 <faqs xmlns="http://maven.apache.org/FML/1.0.1"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 file:../../../../../../../doxia/doxia-modules/doxia-module-fml/src/main/resources/fml-1.0.1.xsd"
-  title="Oft Asked Questions">
+  title="Often Asked Questions">
 
   <part id="contributing">
     <!-- A comment -->
@@ -31,7 +31,7 @@ under the License.
       <question>One <b>stupid</b> question &amp; a silly answer?</question>
       <answer>
         <p>
-          A paragraph with a <a href="#Using_Maven">local link</a>,
+          A paragraph with a <a href="#using">local link</a>,
           a link to another <a href="./cdc.html">source document</a>,
           an <a href="http://maven.apache.org/?l=a&amp;m=b">external link</a>
           with entities, an <i>italic</i> text and <b>non-US-ASCII characters: ����</b>.