[PATCH 2/2] docs: Adapt to semantic tag usage of docutils-0.17 and later

Peter Krempa pkrempa at redhat.com
Tue Apr 12 11:53:05 UTC 2022


Docutils-0.17 switched to using <main> instead of a <div
class='document'> and <section> instead of <div class='section'>.

To ensure that our pages still work we need to slightly adapt our XSL
stylesheet to select the <main> tag properly and adapt the CSS to also
select the 'section' element instead of a class and to apply to a <main>
tag with the appropriate names.

Docutils-0.17 also changed to use 'h2' for section heading instead of
'h1'.

Note the styles applied to the 'main' element with certain id can't be
made more universal by just applying to the id itself, as in certain
cases (e.g. 'documentation') we also have sections with that name. This
was previously ensured by also matching the 'document' class which would
make it equal to the 'main' element.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 docs/css/libvirt.css | 9 +++++++++
 docs/page.xsl        | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/docs/css/libvirt.css b/docs/css/libvirt.css
index 2b2208f56e..097dfcbe8e 100644
--- a/docs/css/libvirt.css
+++ b/docs/css/libvirt.css
@@ -95,6 +95,7 @@
     margin-right: 1em;
 }

+main,
 .document {
     margin-left: auto;
     margin-right: auto;
@@ -104,9 +105,13 @@
     width: 70em;
 }

+main#index,
 #index.document,
+main#hvsupport,
 #hvsupport.document,
+main#documentation,
 #documentation.document,
+main#knowledge-base,
 #knowledge-base.document
 {
     width: inherit;
@@ -397,7 +402,9 @@ h6:hover > a.headerlink {
 }

 div.panel,
+#documentation section,
 #documentation .section,
+#knowledge-base section,
 #knowledge-base .section
 {
     width: 24%;
@@ -407,7 +414,9 @@ div.panel,
 }

 div.panel h2,
+#documentation section h2,
 #documentation .section h1,
+#knowledge-base section h2,
 #knowledge-base .section h1 {
     margin-top: 0px;
     padding: 0.5em;
diff --git a/docs/page.xsl b/docs/page.xsl
index a6a270896c..7d0203cf62 100644
--- a/docs/page.xsl
+++ b/docs/page.xsl
@@ -120,9 +120,15 @@
       <body onload="pageload()">
         <div id="body">
           <xsl:choose>
+            <!-- docutils-0.16 and older use a div as container for contents -->
             <xsl:when test="html:html/html:body/html:div/@class='document'">
               <xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
             </xsl:when>
+            <!-- docutils-0.17 adopted use of the 'main' semantic container -->
+            <xsl:when test="html:html/html:body/html:main">
+              <xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
+            </xsl:when>
+            <!-- for our older html-only files -->
             <xsl:otherwise>
               <div class="document">
                 <xsl:if test="html:html/html:body/@id">
-- 
2.35.1



More information about the libvir-list mailing list