3 Nested Paragraphs (OoUtilities)

<..clean paragraphs..>
 <set name="text-p" >
    <.open oo xslt script.>
    <.remove nested text:p.>
    <.remove nested text:p in biblatex.>
    <.multicolumn styles.>
    <.close xslt script.>
 </set>
 <xslt name="." xml="." xsl="text-p" />
-_-_-

<..remove nested text:p2???..>
 <xsl:template match="text:p[ @text:style-name = ’start_subjclass’
                            ]" >
    <xsl:comment>
        <xsl:text>start-subjclass</xsl:text>
    </xsl:comment>
    <xsl:apply-templates select="*|text()|comment()" />
 </xsl:template>
 <xsl:template match="text:p[ @text:style-name = ’end_subjclass’>
    <xsl:apply-templates select="*|text()|comment()" />
    <xsl:comment>
        <xsl:text>end-subjclass</xsl:text>
    </xsl:comment>
 </xsl:template>
-_-_-

<..remove nested text:p..>
 <xsl:template match="text:p[ (count(child::*)=1)
                              and child::draw:frame
                              and parent::text:p
                            ]" >
     <xsl:apply-templates select="child::draw:frame" />
 </xsl:template>
-_-_-

<..remove nested text:p..>+
 <xsl:template match="text:p[
      child::text:p
    and
      (count(child::text:p) = count(child::*))
  ]" >
    <!--xsl:copy>
       <xsl:attribute name="text:style-name">
           <xsl:text>start_</xsl:text>
          <xsl:value-of select="@text:style-name" />
       </xsl:attribute-->
       <xsl:comment>
           <xsl:text>start </xsl:text>
           <xsl:value-of select=" @text:style-name " />
      </xsl:comment>
    <!--/xsl:copy-->
        <xsl:apply-templates select="*|text()|comment()" mode="nested-p" />
    <!--xsl:copy>
       <xsl:attribute name="text:style-name">
           <xsl:text>end</xsl:text>
          <xsl:value-of select="@text:style-name" />
       </xsl:attribute-->
       <xsl:comment>
           <xsl:text>end_</xsl:text>
           <xsl:value-of select=" @text:style-name " />
      </xsl:comment>
    <!--/xsl:copy-->
 </xsl:template>
-_-_-

<..remove nested text:p..>+
 <xsl:template match="*[not(text:p)]|text()|comment()" mode="nested-p" >
   <xsl:copy/>
 </xsl:template>
-_-_-

<..remove nested text:p..>+
 <xsl:template match="text:p" mode="nested-p" >
   <xsl:copy>
       <xsl:attribute name="text:style-name">
          <xsl:value-of select="parent::text:p/@text:style-name" />
          <xsl:text>_</xsl:text>
          <xsl:value-of select="@text:style-name" />
          <xsl:text>_</xsl:text>
          <xsl:value-of select="child::*[1]/@text:style-name" />
       </xsl:attribute>
       <xsl:apply-templates select="@*[ name() != ’text:style-name’ ]" />
       <xsl:apply-templates select="*|text()|comment()" />
   </xsl:copy>
 </xsl:template>
-_-_-

<..remove nested text:p in biblatex..>
 <xsl:template
     match="text:p[
               parent::text:p/@text:style-name=’printthebibliography-dd’
           ]"
     mode="nested-p" >
   <xsl:copy>
       <xsl:attribute name="text:style-name">
          <xsl:value-of select="’printthebibliography-dd’" />
       </xsl:attribute>
       <xsl:apply-templates select="@*[ name() != ’text:style-name’ ]" />
       <xsl:apply-templates select="*|text()|comment()" />
   </xsl:copy>
 </xsl:template>
-_-_-

<..multicolumn styles..>
 <xsl:template match="text:p[  child::text:span[
                        starts-with(@text:style-name, ’multicolumn-’)
                      ] ]" >
    <xsl:copy>
        <xsl:apply-templates
             select="child::text:span[
                        starts-with(@text:style-name, ’multicolumn-’) ]
                     /@*
                    " />
        <xsl:apply-templates select="*|text()|comment()" />
    </xsl:copy>
 </xsl:template>
 <xsl:template match="text:span[
                        starts-with(@text:style-name, ’multicolumn-’) ]" />
-_-_-

<..handle mixed content..>
 System.out.println("handle mixed content " + name);
       int i=0;
       for( Node nd = first; nd != null; nd = nd.getNextSibling() ){
         nodeType = nd.getNodeType();
         <.trace mixed content.>
         i++;
       }
 System.out.println("end handle mixed content " + name);
-_-_-

<..text:p into text:section..>
 System.out.println("text:p into text:section");
-_-_-

<..trace mixed content..>
 System.out.println(
 i + "     "+  ((Boolean)v.get(i))
 +
 
 ((nodeType == Node.TEXT_NODE)?
     ("  TEXT: " + nd.getNodeValue() )
    :
 (
 (nodeType == Node.ELEMENT_NODE)?
      ("  " + nd.getNodeName())
      :
      ""
 )
 ));
-_-_-