Matthias Bünger created DOXIASITETOOLS-358:
----------------------------------------------

             Summary: Doxia duplicates meta-tags if defined by page (Markdown)
                 Key: DOXIASITETOOLS-358
                 URL: https://issues.apache.org/jira/browse/DOXIASITETOOLS-358
             Project: Maven Doxia Sitetools
          Issue Type: Bug
          Components: Site renderer
    Affects Versions: 2.0.0-M19
            Reporter: Matthias Bünger


In my MavenSite's PR to fix rendering warnings the question if html headers can 
be added when writing Markdown files. [~kwindszus] answered that it it's 
possible in general, but unclear how doxia-sitetolls handles them:
{quote}In general every valid HTML is also valid in MD 
([https://daringfireball.net/projects/markdown/syntax#html]). This is more a 
question on how the resulting HTML is being partitioned by the doxia-sitetools 
(to inject things like navigation).
{quote}
Because there's interest to transform the xml-docs into Markdown I made some 
tests about this.
h2. First test
{code:java}
<head>
  <meta charset="UTF-8">
  <meta name="description" content="Free Web tutorials">
  <meta name="keywords" content="HTML, CSS, JavaScript">
  <meta name="author" content="John Doe">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
{code}
This failes in exceptions
{code:java}
URI:    /developers/mdwithhtmltest2.html
STATUS: 500
MESSAGE:        javax.servlet.ServletException: 
org.apache.maven.doxia.siterenderer.RendererException: Error parsing 
'D:\Github\Maven\maven-site\content\markdown\developers\mdwithhtmltest2.md', 
line 28
SERVLET:        default
CAUSED BY:      javax.servlet.ServletException: 
org.apache.maven.doxia.siterenderer.RendererException: Error parsing 
'D:\Github\Maven\maven-site\content\markdown\developers\mdwithhtmltest2.md', 
line 28
CAUSED BY:      org.apache.maven.doxia.siterenderer.RendererException: Error 
parsing 
'D:\Github\Maven\maven-site\content\markdown\developers\mdwithhtmltest2.md', 
line 28
CAUSED BY:      org.apache.maven.doxia.parser.ParseException: Error parsing the 
model
CAUSED BY:      org.codehaus.plexus.util.xml.pull.XmlPullParserException: end 
tag name </head> must be the same as start tag <meta> from line 20 (position: 
TEXT seen ...<title>Download Apache Maven</title>\n</head>... @28:8) 
{code}
We learn
 * void elements (like meta tags) are not (fully) supported by DOXIA

h2. Second test
{code:java}
<head>
  <meta charset="UTF-8" />
  <meta name="description" content="Free Web tutorials" />
  <meta name="keywords" content="HTML, CSS, JavaScript" />
  <meta name="author" content="John Doe" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
{code}
This gets transformed to
{code:java}
<html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
    <meta name="author" content="John Doe" />
    <title>Maven</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-2.0.1.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
    <script src="../js/apache-maven-fluido-2.0.1.min.js"></script>
<meta charset="UTF-8" /><meta name="description" content="Free Web tutorials" 
/><meta name="keywords" content="HTML, CSS, JavaScript" /><meta name="viewport" 
content="width=device-width, initial-scale=1.0" />    <!-- Matomo -->
    <script>
        ///
    </script>
    <!-- End Matomo Code -->
  </head>
  <body>
{code}
We see
 * "Maven" as a title gets added somehow (for me, but I assume it's some Doxia 
or fluido skin configuration)
 * The manually added HTML meta tags *{*}all excepts author{*}* got put behind 
the path definition for the fluido Javascript
 * This leads duplicated meta, in this test the "viewport" one.
 * Void elements are renedered with a trailing slash resulting in validator 
infos / warning

{quote}Info: Trailing slash on void elements has no effect and interacts badly 
with unquoted attribute values.

>From line 19, column 5; to line 19, column 67

s" />↩ <link rel="stylesheet" href="../css/print.css" media="print" />↩ <
{quote}
h2. Third test

As we have xml-files with multiple authors and a title definition I tested this 
too.
{code:java}
<head>
  <meta charset="UTF-8" />
  <meta name="description" content="Free Web tutorials" />
  <meta name="keywords" content="HTML, CSS, JavaScript" />
  <meta name="author" content="John Doe" />
 <meta name="author" content="Maven 1" />
 <meta name="author" content="Maven 2" />
 <meta name="generator" content="Not Doxia">
<title>Download Apache Maven</title>
</head>
{code}
This gets transformed to
{code:java}
<html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
    <meta name="author" content="John Doe" />
    <meta name="author" content="Maven 1" />
    <meta name="author" content="Maven 2" />
    <title>Download Apache Maven – Maven</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-2.0.1.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
    <script src="../js/apache-maven-fluido-2.0.1.min.js"></script>
<meta charset="UTF-8" /><meta name="description" content="Free Web tutorials" 
/><meta name="keywords" content="HTML, CSS, JavaScript" /><meta 
name="generator" content="Not Doxia" />    <!-- Matomo -->
    <script>
        ///
    </script>
    <!-- End Matomo Code -->
  </head>
{code}
Additional to what we saw in the first test:
 * multiple authors are picked up and rendered correctly
 * the "title" attribute" is picked up and used

h2. Fourth test

Last test was about the html elements which are not headers.
{code:java}
<nav>
  <a href="/html/">HTML</a> |
  <a href="/css/">CSS</a> |
  <a href="/js/">JavaScript</a> |
  <a href="/python/">Python</a>
</nav>

# Mojo API Specification

Let's test this
{code}
{code:java}
      <main id="bodyColumn" class="span10">

<nav>
  <a href="/html/">HTML</a> |
  <a href="/css/">CSS</a> |
  <a href="/js/">JavaScript</a> |
  <a href="/python/">Python</a>
</nav>
<section><a id="Mojo_API_Specification"></a>
<h1>Mojo API Specification</h1>
<p>Let's test this</p></section>        </main>
{code}
As expected they just got put into the main area of the page (here resulting in 
duplicate nav, but that's user's fault)
h2. Result

As a result we can see that it's possible to add meta tags, but this might 
create invalid HTML, e.g. duplicate charset, but also infos/warnings, due the 
trailing slash on void elements



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to