html5/markup/tools Output.java,1.3,1.4 generate-spec-source.xsl,1.228,1.229 specgen.xsl,1.48,1.49 trang.jar,1.3,1.4

Update of /sources/public/html5/markup/tools
In directory hutz:/tmp/cvs-serv2080/tools

Modified Files:
	Output.java generate-spec-source.xsl specgen.xsl trang.jar 
Log Message:
checkpointing; reverted to generating content models from schema, but with translation of RNC syntax to natural language

Index: Output.java
===================================================================
RCS file: /sources/public/html5/markup/tools/Output.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Output.java	30 Jan 2010 04:44:26 -0000	1.3
+++ Output.java	4 Feb 2010 15:09:22 -0000	1.4
@@ -232,7 +232,7 @@
           literal(ns);
         pp.endNest();
         pp.endGroup();
-        pp.text("</div>");
+        pp.text("</span>");
         pp.hardNewline();
         needNewline = true;
       }
@@ -673,12 +673,12 @@
         pp.text(op);
       }
       else {
-        pp.text("(");
-        pp.startNest("(");
+        pp.text(" <span class='agroupof'>");
+        pp.startNest("<span class='agroupof'>");
         p.getChild().accept(patternOutput);
         pp.endNest();
         pp.text(op);
-        pp.text(")");
+        pp.text("</span>");
       }
       endAnnotations(p);
     }
@@ -829,7 +829,7 @@
     }
 
     public VoidValue visitInterleave(InterleavePattern p) {
-      composite(p, " <span class='postfix &amp;'>&amp;</span> ", false);
+      composite(p, " <span class='postfix intermixed'>intermixed with</span> ", false);
       return VoidValue.VOID;
     }
 
@@ -846,8 +846,8 @@
       if (isSimple)
         pp.startGroup();
       if (useParens) {
-        pp.text("(");
-        pp.startNest("(");
+        pp.text(" <span class='agroupof'>");
+        pp.startNest("<span class='agroupof'>");
       }
 
       boolean first = true;
@@ -872,7 +872,7 @@
       }
       if (useParens) {
         pp.endNest();
-        pp.text(")");
+        pp.text("</span>");
       }
       if (isSimple)
         pp.endGroup();
@@ -1040,8 +1040,8 @@
       else if (nc.getChildren().size() == 1)
         useParens = false;
       if (useParens) {
-        pp.text("(");
-        pp.startNest("(");
+        pp.text(" <span class='agroupof'>");
+        pp.startNest("<span class='agroupof'>");
       }
       pp.startGroup();
       boolean first = true;
@@ -1057,7 +1057,7 @@
       pp.endGroup();
       if (useParens) {
         pp.endNest();
-        pp.text(")");
+        pp.text("</span>");
       }
       endAnnotations(nc);
       return VoidValue.VOID;
@@ -1296,9 +1296,9 @@
     int idx = escaped.lastIndexOf("&"); 
     if ( idx != -1 ) { 
       StringBuffer ret_amp = new StringBuffer(str); 
-      ret_amp.replace(idx, idx+1, " <span class='postfix &amp;' title='INTERLEAVED IN ANY ORDER'>&amp;</span> "); 
+      ret_amp.replace(idx, idx+1, " <span class='postfix intermixed'>intermixed with</span> "); 
       while( (idx=str.lastIndexOf("&", idx-1)) != -1 ) { 
-        ret_amp.replace(idx, idx+1, " <span class='postfix &amp;' title='INTERLEAVED IN ANY ORDER'>&amp;</span> "); 
+        ret_amp.replace(idx, idx+1, " <span class='postfix intermixed'>intermixed with</span> "); 
       } 
       escaped = ret_amp.toString(); 
     } 

Index: specgen.xsl
===================================================================
RCS file: /sources/public/html5/markup/tools/specgen.xsl,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- specgen.xsl	3 Feb 2010 14:44:07 -0000	1.48
+++ specgen.xsl	4 Feb 2010 15:09:23 -0000	1.49
@@ -647,11 +647,38 @@
     </xsl:choose>
   </xsl:template>
   <xsl:template match='*'/>
-  <xsl:template match="h:a[@href[starts-with(.,'#')]]">
+  <xsl:template match="h:a[@href[starts-with(.,'#')]]" name="link-handler">
     <!-- * href ID references in chunked output need to become intra-file -->
     <!-- * references to IDs that are to targets in other files; so this -->
     <!-- * template prepends the correct file name to all "bare" -->
     <!-- * (filename-less) fragment href ID references -->
+    <xsl:if test="ancestor::*[@class='content-models']
+    and not(ancestor::*[@id='common-models'])
+    and not(@href='#normal-character-data')
+    and not(@href='#phrasing-content')
+    and not(@href='#flow-content')
+    and not(starts-with(@href,'#common.'))
+    ">
+      <xsl:choose>
+        <xsl:when test="following-sibling::*[1][@class='postfix zeroormore']">
+          <span>zero or more </span>
+        </xsl:when>
+        <xsl:when test="following-sibling::*[1][@class='postfix optional']">
+          <span>an optional </span>
+        </xsl:when>
+        <xsl:when test="following-sibling::*[1][@class='postfix oneormore']">
+          <span>one or more </span>
+        </xsl:when>
+        <xsl:when test="ancestor::*[@class='agroupof']
+        ">
+          <span>one </span>
+        </xsl:when>
+        <xsl:when test="following-sibling::*
+        ">
+          <span>one </span>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:if>
     <xsl:choose>
       <xsl:when test="not($chunk=0)">
         <xsl:variable name="href" select="substring-after(@href,'#')"/>
@@ -660,6 +687,10 @@
           |key('id',$href)/ancestor::h:section[(count(ancestor::h:section)=0 and not(@id='elements'))]
           "/>
         <xsl:choose>
+          <xsl:when test="preceding-sibling::h:span[@class='postfix intermixed']
+            and ancestor::*[@class='elem-mdl']
+            and contains($href,'.attrs')
+          "/>
           <xsl:when test="$href='syntax'">
             <a>
               <xsl:copy-of select="@*"/>
@@ -765,6 +796,64 @@
     ">
       <span class="postfix required" title="REQUIRED">&#x2605;</span>
     </xsl:if>
+    <xsl:if test="ancestor::*[@class='content-models']
+    and not(ancestor::*[@id='common-models'])
+    and not(@href='#normal-character-data')
+    and not(@href='#phrasing-content')
+    and not(@href='#flow-content')
+    and not(starts-with(@href,'#common.'))
+    ">
+      <xsl:choose>
+        <xsl:when test="
+        ancestor::h:*[@class='content-models']
+        and following-sibling::*[1][self::h:*[contains(@class,'zeroormore')]]
+        ">
+          <span> elements</span>
+          <xsl:if test="following-sibling::*[not(contains(@class,'postfix'))][not(contains(.,'.attrs'))]">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:when>
+        <xsl:when test="
+        ancestor::h:*[@class='content-models']
+        and following-sibling::*[1][self::h:*[contains(@class,'optional')]]
+        ">
+          <xsl:choose>
+            <xsl:when test="contains(@href,'.attrs.')">
+              <span> attribute</span>
+            </xsl:when>
+            <xsl:otherwise>
+              <span> element</span>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:if test="following-sibling::*[not(contains(@class,'postfix'))][not(contains(.,'.attrs'))]">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:when>
+        <xsl:when test="
+        ancestor::h:*[@class='content-models']
+        and following-sibling::*[1][self::h:*[contains(@class,'oneormore')]]
+        ">
+          <span> elements</span>
+          <xsl:if test="following-sibling::*[not(contains(@class,'postfix'))][not(contains(.,'.attrs'))]">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:when>
+        <xsl:when test="ancestor::*[@class='agroupof']
+        ">
+          <span> element</span>
+          <xsl:if test="following-sibling::*[not(contains(@class,'postfix'))][not(contains(.,'.attrs'))]">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:when>
+        <xsl:when test="following-sibling::*
+        ">
+          <span> element</span>
+          <xsl:if test="following-sibling::*[not(contains(@class,'postfix'))][not(contains(.,'.attrs'))]">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:if>
   </xsl:template>
   <xsl:template match="h:div[@id='tocjump']">
     <div id="tocjump" class="skip-link" style="text-align: center">
@@ -793,4 +882,135 @@
       </xsl:choose>
     </div>
   </xsl:template>
+  <xsl:template match="h:span[@class='agroupof']
+    [following-sibling::*[1][@class='postfix zeroormore']]
+    [ancestor::*[@class='content-models']]
+  ">
+    <span>zero or more of: </span>
+    <span class="agroupof">
+      <xsl:apply-templates/>
+    </span>
+    <xsl:text> </xsl:text>
+  </xsl:template>
+  <xsl:template match="h:span[@class='agroupof']
+    [following-sibling::*[1][@class='postfix optional']]
+    [ancestor::*[@class='content-models']]
+  ">
+    <span>optionally: </span>
+    <span class="agroupof">
+      <xsl:apply-templates/>
+    </span>
+    <xsl:text> </xsl:text>
+  </xsl:template>
+  <xsl:template match="h:span[@class='agroupof']
+    [following-sibling::*[1][@class='postfix oneormore']]
+    [ancestor::*[@class='content-models']]
+  ">
+    <span>one or more of: </span>
+    <span class="agroupof">
+      <xsl:apply-templates/>
+    </span>
+    <xsl:text> </xsl:text>
+  </xsl:template>
+  <xsl:template match="h:span[@class='postfix zeroormore']"/>
+  <xsl:template match="h:span[@class='postfix optional']"/>
+  <xsl:template match="h:span[@class='postfix oneormore']"/>
+  <xsl:template match="h:span[@class='postfix intermixed']">
+    <xsl:choose>
+      <xsl:when test="following-sibling::h:*[1][self::h:a[contains(@href,'.attrs')]]
+        and ancestor::*[@class='elem-mdl']
+      "/>
+      <xsl:when test="ancestor::*[@class='attr-content-models']">
+        <span class="postfix intermixed">&amp;</span>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:copy-of select="."/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  <xsl:template match="h:*[@class='elem-mdl']
+    [child::*[1][self::h:a[@href='#phrasing-content']]]
+    [following-sibling::*[1][@class='postfix or']
+      [following-sibling::*[1]
+        [self::h:*[@class='elem-mdl']
+          [child::*[1][self::h:a[@href='#flow-content']]]
+        ]
+      ]
+    ]
+    ">
+    <xsl:call-template name="transparent"/>
+  </xsl:template>
+  <xsl:template match="h:*[@class='elem-mdl']
+    [child::*[1][self::h:a[@href='#flow-content']]]
+    [following-sibling::*[1][@class='postfix or']
+      [following-sibling::*[1]
+        [self::h:*[@class='elem-mdl']
+          [child::*[1][self::h:a[@href='#phrasing-content']]]
+        ]
+      ]
+    ]
+    ">
+    <xsl:call-template name="transparent"/>
+  </xsl:template>
+  <xsl:template match="h:*[@class='postfix or']
+    [preceding-sibling::*[1]
+      [self::h:*[@class='elem-mdl']
+        [child::*[1][self::h:a[@href='#flow-content']]]
+      ]
+    ]
+    [following-sibling::*[1]
+      [self::h:*[@class='elem-mdl']
+        [child::*[1][self::h:a[@href='#phrasing-content']]]
+      ]
+    ]
+  "/>
+  <xsl:template match="h:*[@class='postfix or']
+    [preceding-sibling::*[1]
+      [self::h:*[@class='elem-mdl']
+        [child::*[1][self::h:a[@href='#phrasing-content']]]
+      ]
+    ]
+    [following-sibling::*[1]
+      [self::h:*[@class='elem-mdl']
+        [child::*[1][self::h:a[@href='#flow-content']]]
+      ]
+    ]
+  "/>
+  <xsl:template match="h:*[@class='elem-mdl']
+    [child::*[1][self::h:a[@href='#phrasing-content']]]
+    [preceding-sibling::*[1][@class='postfix or']
+      [preceding-sibling::*[1]
+        [self::h:*[@class='elem-mdl']
+          [child::*[1][self::h:a[@href='#flow-content']]]
+        ]
+      ]
+    ]
+  "/>
+  <xsl:template match="h:*[@class='elem-mdl']
+    [child::*[1][self::h:a[@href='#flow-content']]]
+    [preceding-sibling::*[1][@class='postfix or']
+      [preceding-sibling::*[1]
+        [self::h:*[@class='elem-mdl']
+          [child::*[1][self::h:a[@href='#phrasing-content']]]
+        ]
+      ]
+    ]
+  "/>
+  <xsl:template name="transparent">
+    <xsl:variable name="terminology.html">
+      <xsl:if test="$chunk=1">terminology.html</xsl:if>
+    </xsl:variable>
+    <p class="elem-mdl"><span class="transparent"><a href="{$terminology.html}#transparent">transparent</a>
+      <xsl:text> (</xsl:text>
+      <span class="postfix or">either</span>
+      <xsl:text> </xsl:text>
+      <a href="{$terminology.html}#phrasing-content">phrasing content</a>
+      <xsl:text> </xsl:text>
+      <span class="postfix or">or</span>
+      <xsl:text> </xsl:text>
+      <a href="{$terminology.html}#phrasing-content">flow content</a>
+      <xsl:text>)</xsl:text>
+    </span>
+    </p>
+  </xsl:template>
 </xsl:stylesheet>

Index: generate-spec-source.xsl
===================================================================
RCS file: /sources/public/html5/markup/tools/generate-spec-source.xsl,v
retrieving revision 1.228
retrieving revision 1.229
diff -u -d -r1.228 -r1.229
--- generate-spec-source.xsl	3 Feb 2010 14:44:07 -0000	1.228
+++ generate-spec-source.xsl	4 Feb 2010 15:09:23 -0000	1.229
@@ -1280,7 +1280,8 @@
     <xsl:param name="name"/>
     <xsl:param name="name-dot" select="concat($name, '.')"/>
     <xsl:if
-      test="document(concat('../elements/',$name,'.html'))//h:div[@id='prose-model']">
+      test="document(concat('../elements/',$name,'.html'))//h:div[@id='prose-model']
+      and $show-content-models = 0">
       <div class="no-number no-toc" id="{$name}-contents">
         <h2 class="element-subhead">Permitted content</h2>
         <div class="prose-model">
@@ -1321,7 +1322,7 @@
     <xsl:if test="not($show-content-models = 0)">
     <div class="no-number no-toc" id="{$name}-content-model">
       <xsl:text>&#10;        </xsl:text>
-      <h2 class="element-subhead">Content model</h2>
+      <h2 class="element-subhead">Permitted content</h2>
       <div class="content-models">
       <xsl:text>&#10;        </xsl:text>
       <xsl:variable name="count">
@@ -1339,7 +1340,8 @@
       <xsl:variable name="wrapper">
         <xsl:choose>
           <xsl:when test="$count > 1">
-            <xsl:text>dl</xsl:text>
+            <!-- * <xsl:text>dl</xsl:text> -->
+            <xsl:text>div</xsl:text>
           </xsl:when>
           <xsl:otherwise>
             <xsl:text>div</xsl:text>
@@ -1385,6 +1387,9 @@
                 <xsl:with-param name="name" select="$name"/>
                 <xsl:with-param name="pname" select="$pname"/>
               </xsl:call-template>
+              <xsl:if test="not(position() = last())">
+                <div class="postfix or">or</div>
+              </xsl:if>
             </xsl:for-each>
           </xsl:when>
           <xsl:otherwise>
@@ -1397,6 +1402,9 @@
                 <xsl:with-param name="name" select="$name"/>
                 <xsl:with-param name="pname" select="$pname"/>
               </xsl:call-template>
+              <xsl:if test="not(position() = last())">
+                <div class="postfix or">or</div>
+              </xsl:if>
             </xsl:for-each>
           </xsl:otherwise>
         </xsl:choose>
@@ -1594,50 +1602,50 @@
     <xsl:param name="pname"/>
     <xsl:text>&#10;        </xsl:text>
     <xsl:if test="$count > 1">
-      <dt class="content-model">
-        <xsl:variable name="myname">
-          <xsl:choose>
-            <xsl:when test="not($pname = $name)">
-              <xsl:value-of select="$pname"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <!-- * we get here for li, source, and style -->
-              <xsl:value-of select="concat($pname,'-pattern')"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-        <span class="element-pattern-name" id="{$myname}">
-          <a class="hash" href="#{$myname}">
-            <xsl:choose>
-              <xsl:when test="$pname='oli'">
-                <xsl:text>o</xsl:text><span class="element">li</span>
-              </xsl:when>
-              <xsl:when test="$pname='mli'">
-                <xsl:text>m</xsl:text><span class="element">li</span>
-              </xsl:when>
-              <xsl:when test="contains($pname,'.')">
-                <span class="element">
-                  <xsl:value-of select="substring-before($pname,'.')"/>
-                </span>
-                <xsl:text>.</xsl:text>
-                <xsl:value-of select="substring-after($pname,'.')"/>
-              </xsl:when>
-              <xsl:otherwise>
-                <span class="element">
-                  <xsl:value-of select="$pname"/>
-                </span>
-              </xsl:otherwise>
-            </xsl:choose>
-          </a>
-          <xsl:text> = </xsl:text>
-        </span>
-      </dt>
+      <!-- * <dt class="content-model"> -->
+        <!-- * <xsl:variable name="myname"> -->
+          <!-- * <xsl:choose> -->
+            <!-- * <xsl:when test="not($pname = $name)"> -->
+              <!-- * <xsl:value-of select="$pname"/> -->
+            <!-- * </xsl:when> -->
+            <!-- * <xsl:otherwise> -->
+              <!-- * <xsl:value-of select="concat($pname,'-pattern')"/> -->
+            <!-- * </xsl:otherwise> -->
+          <!-- * </xsl:choose> -->
+        <!-- * </xsl:variable> -->
+        <!-- * <span class="element-pattern-name" id="{$myname}"> -->
+          <!-- * <a class="hash" href="#{$myname}"> -->
+            <!-- * <xsl:choose> -->
+              <!-- * <xsl:when test="$pname='oli'"> -->
+                <!-- * <xsl:text>o</xsl:text><span class="element">li</span> -->
+              <!-- * </xsl:when> -->
+              <!-- * <xsl:when test="$pname='mli'"> -->
+                <!-- * <xsl:text>m</xsl:text><span class="element">li</span> -->
+              <!-- * </xsl:when> -->
+              <!-- * <xsl:when test="contains($pname,'.')"> -->
+                <!-- * <span class="element"> -->
+                  <!-- * <xsl:value-of select="substring-before($pname,'.')"/> -->
+                <!-- * </span> -->
+                <!-- * <xsl:text>.</xsl:text> -->
+                <!-- * <xsl:value-of select="substring-after($pname,'.')"/> -->
+              <!-- * </xsl:when> -->
+              <!-- * <xsl:otherwise> -->
+                <!-- * <span class="element"> -->
+                  <!-- * <xsl:value-of select="$pname"/> -->
+                <!-- * </span> -->
+              <!-- * </xsl:otherwise> -->
+            <!-- * </xsl:choose> -->
+          <!-- * </a> -->
+          <!-- * <xsl:text> = </xsl:text> -->
+        <!-- * </span> -->
+      <!-- * </dt> -->
       <xsl:text>&#10;        </xsl:text>
     </xsl:if>
     <xsl:variable name="wrapper">
       <xsl:choose>
         <xsl:when test="$count > 1">
-          <xsl:text>dd</xsl:text>
+          <!-- * <xsl:text>dd</xsl:text> -->
+          <xsl:text>p</xsl:text>
         </xsl:when>
         <xsl:otherwise>
           <xsl:text>p</xsl:text>
@@ -1646,30 +1654,28 @@
     </xsl:variable>
     <xsl:element name="{$wrapper}">
       <xsl:attribute name="class">elem-mdl</xsl:attribute>
-      <xsl:if test="not($count > 1)">
-        <span class="element-pattern-name">
-        <xsl:choose>
-          <xsl:when test="contains($name,'.')">
-              <a id="{$name}-mdl" href="#{$name}-mdl">
-                <span class="element">
-                  <xsl:value-of select="substring-before($name,'.')"/>
-                </span>
-                <xsl:text>.</xsl:text>
-                <xsl:value-of select="substring-after($name,'.')"/>
-              </a>
-          </xsl:when>
-          <xsl:otherwise>
-            <a id="{$name}-mdl" href="#{$name}-mdl" class="element">
-              <xsl:value-of select="$name"/>
-            </a>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:text> = </xsl:text>
-      </span>
-      </xsl:if>
-      <xsl:copy>
-        <xsl:apply-templates/>
-      </xsl:copy>
+      <!-- * <xsl:if test="not($count > 1)"> -->
+        <!-- * <span class="element-pattern-name"> -->
+        <!-- * <xsl:choose> -->
+          <!-- * <xsl:when test="contains($name,'.')"> -->
+              <!-- * <a id="{$name}-mdl" href="#{$name}-mdl"> -->
+                <!-- * <span class="element"> -->
+                  <!-- * <xsl:value-of select="substring-before($name,'.')"/> -->
+                <!-- * </span> -->
+                <!-- * <xsl:text>.</xsl:text> -->
+                <!-- * <xsl:value-of select="substring-after($name,'.')"/> -->
+              <!-- * </a> -->
+          <!-- * </xsl:when> -->
+          <!-- * <xsl:otherwise> -->
+            <!-- * <a id="{$name}-mdl" href="#{$name}-mdl" class="element"> -->
+              <!-- * <xsl:value-of select="$name"/> -->
+            <!-- * </a> -->
+          <!-- * </xsl:otherwise> -->
+        <!-- * </xsl:choose> -->
+        <!-- * <xsl:text> = </xsl:text> -->
+      <!-- * </span> -->
+      <!-- * </xsl:if> -->
+      <xsl:apply-templates/>
     </xsl:element>
   </xsl:template>
 
@@ -1808,38 +1814,19 @@
             </xsl:when>
             <xsl:when test="@name='colgroup'">
               <div class="attr-content-models">
-                <xsl:for-each
-                  select="document($rnc-html)//*[@class='pattern'][starts-with(@id,'colgroup.attrs')]">
-                  <div class="attr-content-model">
-                    <!-- * <xsl:choose> -->
-                      <!-- * <xsl:when test="@id='colgroup.attrs.span'"> -->
-                        <!-- * <a class="attribute-pattern-name" -->
-                          <!-- * id="{@id}-mdl" -->
-                          <!-- * href="#{@id}-mdl" -->
-                          <!-- * > -->
-                          <!-- * <xsl:value-of select="@id"/> -->
-                        <!-- * </a> -->
-                      <!-- * </xsl:when> -->
-                      <!-- * <xsl:otherwise> -->
-                        <!-- * <a class="attribute-pattern-name" -->
-                          <!-- * id="{@id}" -->
-                          <!-- * href="#{@id}" -->
-                          <!-- * > -->
-                          <!-- * <xsl:value-of select="@id"/> -->
-                        <!-- * </a> -->
-                      <!-- * </xsl:otherwise> -->
-                    <!-- * </xsl:choose> -->
-                    <!-- * <xsl:text> = </xsl:text> -->
-                    <xsl:choose>
-                      <xsl:when test="@id='colgroup.attrs.span'">
-                        <a href='#colgroup.attrs.span'>span</a>
-                      </xsl:when>
-                      <xsl:otherwise>
-                        <xsl:copy-of select="node()"/>
-                      </xsl:otherwise>
-                    </xsl:choose>
-                  </div>
-                </xsl:for-each>
+              <p>
+              <span class="pattern" id="colgroup.attrs">
+              <a href="#common-attributes">common attributes</a>
+              <span class="postfix optional">?</span>
+              <xsl:text> </xsl:text>
+              <span class="postfix intermixed">&amp;</span>
+              <xsl:text> </xsl:text>
+              <span class="postfix optional">?</span>
+              <xsl:text> </xsl:text>
+              <a href="#colgroup.attrs.span">span</a>
+              <span class="postfix optional">?</span>
+              </span>
+              </p>
               </div>
             </xsl:when>
             <xsl:when test="@name='area'">
@@ -1903,53 +1890,39 @@
                       <!-- * <xsl:value-of select="@id"/> -->
                     <!-- * </a> -->
                     <!-- * <xsl:text> = </xsl:text> -->
-                    <xsl:choose>
-                      <xsl:when test="starts-with(@id,'button.')
-                        or starts-with(@id,'input.')
-                        or starts-with(@id,'command.')
-                        or starts-with(@id,'meta.')
-                        or starts-with(@id,'source.')
-                        or starts-with(@id,'style.')
-                        ">
-                        <xsl:variable name="ref" select="@id"/>
-                        <span class="pattern" id="{@id}">
-                          <xsl:choose>
-                            <xsl:when test="document($rnc-html)//h:*[@id = $ref]//h:a[@href='#common-form.attrs']">
-                              <xsl:for-each select="document($rnc-html)//h:*[@id = $ref]/node()">
-                                <xsl:choose>
-                                  <xsl:when test=". = 'common-form.attrs'">
-                                    <xsl:for-each
-                                      select="document($rnc-html)//h:*[@id = 'common-form.attrs']/node()">
-                                      <xsl:copy-of select="."/>
-                                    </xsl:for-each>
-                                  </xsl:when>
-                                  <xsl:otherwise>
-                                    <xsl:copy-of select="."/>
-                                  </xsl:otherwise>
-                                </xsl:choose>
-                              </xsl:for-each>
-                            </xsl:when>
-                            <xsl:otherwise>
-                              <xsl:copy-of select="node()"/>
-                            </xsl:otherwise>
-                          </xsl:choose>
-                        </span>
-                      </xsl:when>
-                      <xsl:otherwise>
                         <xsl:variable name="ref" select="@id"/>
                         <xsl:choose>
                           <xsl:when test="document($rnc-html)//h:*[@id = $ref]//h:a[@href='#common-form.attrs']">
                             <span class="pattern" id="{@id}">
                               <xsl:for-each select="document($rnc-html)//h:*[@id = $ref]/node()">
                                 <xsl:choose>
-                                  <xsl:when test=". = 'common-form.attrs'">
-                                    <xsl:for-each
-                                      select="document($rnc-html)//h:*[@id = 'common-form.attrs']/node()">
-                                      <xsl:copy-of select="."/>
+                                  <xsl:when test="@class='agroupof'">
+                                    <xsl:for-each select="node()">
+                                      <xsl:choose>
+                                        <xsl:when test="@href='#common-form.attrs'">
+                                          <xsl:for-each
+                                            select="document($rnc-html)//h:*[@id = 'common-form.attrs']/node()">
+                                            <xsl:copy-of select="."/>
+                                          </xsl:for-each>
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                          <xsl:copy-of select="."/>
+                                        </xsl:otherwise>
+                                      </xsl:choose>
                                     </xsl:for-each>
                                   </xsl:when>
                                   <xsl:otherwise>
-                                    <xsl:copy-of select="."/>
+                                    <xsl:choose>
+                                      <xsl:when test="@href='#common-form.attrs'">
+                                        <xsl:for-each
+                                          select="document($rnc-html)//h:*[@id = 'common-form.attrs']/node()">
+                                          <xsl:copy-of select="."/>
+                                        </xsl:for-each>
+                                      </xsl:when>
+                                      <xsl:otherwise>
+                                        <xsl:copy-of select="."/>
+                                      </xsl:otherwise>
+                                    </xsl:choose>
                                   </xsl:otherwise>
                                 </xsl:choose>
                               </xsl:for-each>
@@ -1959,8 +1932,6 @@
                             <xsl:copy-of select="."/>
                           </xsl:otherwise>
                         </xsl:choose>
-                      </xsl:otherwise>
-                    </xsl:choose>
                   </p>
                   <xsl:if test="not(position() = last())">
                     <span class="postfix or">or</span>
@@ -2523,12 +2494,10 @@
         <!-- * special-case constraint of col element vs. span -->
         <!-- * attribute in colgroup content model requires some -->
         <!-- * additional finessing to make things clear -->
-        <xsl:text>(</xsl:text>
         <xsl:for-each select="//h:*[@id = $ref]/node()">
           <xsl:choose>
             <xsl:when test=".='span'">
-              <a href="#colgroup.attrs.span-mdl">
-                <span class="attr-qualifier">colgroup.attrs.</span>
+              <a href="#colgroup.attrs.span" class="attribute">
                 <xsl:text>span</xsl:text>
               </a>
             </xsl:when>
@@ -2537,7 +2506,6 @@
             </xsl:otherwise>
           </xsl:choose>
         </xsl:for-each>
-        <xsl:text>)</xsl:text>
       </xsl:when>
       <xsl:when test="$ref = 'ol.inner'">
         <xsl:for-each select="//*[@id='ol.inner']/node()">
@@ -2601,19 +2569,19 @@
 <!-- * * UTILITY TEMPLATES -->
 <!-- * ***************************************************************** -->
   <xsl:template name="garnish.as.needed">
-    <!-- * add back parens where necessary -->
     <xsl:choose>
-      <xsl:when test=". = 'common.inner.flow'">
-        <xsl:text>(</xsl:text>
-        <xsl:copy-of
-          select="//h:*[@id = 'common.inner.flow']/node()"/>
-        <xsl:text>)</xsl:text>
+      <xsl:when test="@class='agroupof'">
+      <span class='agroupof'>
+      <xsl:for-each select="node()">
+        <xsl:call-template name="garnish.as.needed"/>
+      </xsl:for-each>
+      </span>
       </xsl:when>
-      <xsl:when test=". = 'common.inner.phrasing'">
-        <xsl:text>(</xsl:text>
-        <xsl:copy-of
-          select="//h:*[@id = 'common.inner.phrasing']/node()"/>
-        <xsl:text>)</xsl:text>
+      <xsl:when test="@href = '#common.inner.flow'">
+        <a href="#flow-content">flow content</a>
+      </xsl:when>
+      <xsl:when test="@href = '#common.inner.phrasing'">
+        <a href="#phrasing-content">phrasing content</a>
       </xsl:when>
       <xsl:when test=". = 'common.inner.anything'">
         <xsl:text>(</xsl:text>
@@ -2622,10 +2590,7 @@
         <xsl:text>)</xsl:text>
       </xsl:when>
       <xsl:when test=". = 'common.inner.metadata'">
-        <xsl:text>(</xsl:text>
-        <xsl:copy-of
-          select="//h:*[@id = 'common.inner.metadata']/node()"/>
-        <xsl:text>)</xsl:text>
+        <a href="#common.elem.metadata">metadata elements</a>
       </xsl:when>
       <xsl:when test="@href='#audio.attrs.src'">
         <a class="ref" href="{@href}">audio.attrs.src</a>
@@ -2707,7 +2672,10 @@
     <!-- * <xsl:text>&#160;</xsl:text> -->
     <!-- * </xsl:message> -->
 
-  <xsl:template match="h:a[@class='rnc-symbol']">
+  <xsl:template match="h:span[@class='postfix intermixed']">
     <xsl:copy-of select="."/>
   </xsl:template>
+  <xsl:template match="node()[normalize-space(.)='empty']">
+    <span>empty (<a href="#void-element">void element</a>)</span>
+  </xsl:template>
 </xsl:stylesheet>

Index: trang.jar
===================================================================
RCS file: /sources/public/html5/markup/tools/trang.jar,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
Binary files /tmp/cvs53KNLf and /tmp/cvsZhlHKR differ

Received on Thursday, 4 February 2010 15:09:27 UTC