@@ -76,7 +76,7 @@ let rec internal formatSpan (ctx: FormattingContext) span =
7676        // use mathjax grammar, for detail, check: http://www.mathjax.org/ 
7777        ctx.Writer.Write( " <span class=\" math\" >\\ (" +  ( htmlEncode body)  +  " \\ )</span>" ) 
7878
79-     |  AnchorLink( id,  _)  ->  ctx.Writer.Write( " <a name=\" " +  id +  " \" > </a>" ) 
79+     |  AnchorLink( id,  _)  ->  ctx.Writer.Write( " <a name=\" " +  htmlEncodeQuotes  id +  " \" > </a>" ) 
8080    |  EmbedSpans( cmd,  _)  ->  formatSpans ctx ( cmd.Render()) 
8181    |  Literal( str,  _)  ->  ctx.Writer.Write( str) 
8282    |  HardLineBreak(_)  ->  ctx.Writer.Write( " <br />" +  ctx.Newline) 
@@ -181,7 +181,8 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
181181
182182        if  ctx.GenerateHeaderAnchors then 
183183            let  anchorName  =  formatAnchor ctx spans
184-             ctx.Writer.Write( sprintf """ <a name="%s %s """ ) 
184+             let  safeAnchorName  =  htmlEncodeQuotes anchorName
185+             ctx.Writer.Write( sprintf """ <a name="%s %s """ ) 
185186            formatSpans ctx spans
186187            ctx.Writer.Write " </a>" 
187188        else 
@@ -210,7 +211,7 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
210211        if  String.IsNullOrWhiteSpace( language)  then 
211212            ctx.Writer.Write( sprintf " <pre><code>" ) 
212213        else 
213-             let  langCode  =  sprintf " language-%s " 
214+             let  langCode  =  sprintf " language-%s " ( htmlEncodeQuotes  language) 
214215            ctx.Writer.Write( sprintf " <pre><code class=\" %s \" >" ) 
215216
216217        ctx.Writer.Write( htmlEncode code) 
0 commit comments