define columns in csv using <a name="col-42"/>
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 19 Jan 2017 16:18:39 +0000 (17:18 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 19 Jan 2017 16:18:39 +0000 (17:18 +0100)
This allows persistant column position for optional ones or
inserting of different values into same column

compact.xsl
html.pl

index ebbe4f3..7786122 100644 (file)
         </xsl:if>
 
                <br/>
-               <hr/>
+               <a name="col-1"/>
         <xsl:call-template name="showAuthor100">
                        <xsl:with-param name="authorfield100" select="marc:datafield[@tag=100]"/>
                </xsl:call-template>
                </xsl:otherwise>
                </xsl:choose>
                <br/>
-               <hr/>
+               <a name="col-2"/>
                <span class="results_summary">
         <xsl:if test="marc:datafield[@tag=245]">
                <span class="title">
                </span>
         </xsl:if>
        </span>
+       <a name="col-3"/>
 
     <!-- Author Statement: Alternate Graphic Representation (MARC 880) -->
     <xsl:if test="$display880">
     </xsl:for-each>
     </span>
     </xsl:if>
-
     <xsl:if test="marc:datafield[@tag=773]">
         <xsl:for-each select="marc:datafield[@tag=773]">
             <xsl:if test="marc:subfield[@code='n']">
 
        <xsl:if test="marc:datafield[@tag=856]">
                        <br/>
-                       <hr/>
+                       <a name="col-4"/>
          <span class="results_summary">
                             <xsl:for-each select="marc:datafield[@tag=856]">
                             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
diff --git a/html.pl b/html.pl
index 8467a55..cc3a3ce 100755 (executable)
--- a/html.pl
+++ b/html.pl
@@ -620,15 +620,23 @@ sub department_html {
                foreach my $bib_num ( @biblionumber ) {
                        my @li = li_biblio( $bib_num );
                        my $li_html = join('', @li);
-                       $li_html =~ s{<hr/?>}{}g;
+                       $li_html =~ s{<a name="col-\d+"></a>}{}gs;
                        print $fh $li_html;
 
                        next unless $csv_fh;
 
                        my $year = $li[1];
-                       my $html = $li[4];
-                       $html =~ s{<hr/?>}{\t}gs;
-#                      $html =~ s{</?[^>]*>}{}gs;
+                       my @html;
+                       foreach ( split(/<a name="col-/, $li[4]) ) {
+                               if ( s{(\d+)"></a>}{} ) {
+                                       $html[$1] = $_;
+                               } else {
+                                       warn "SKIPPED: Can't find col in [$_] from $li[4]" unless m/^<[^>]+>$/;
+                               }
+                       }
+                       my $html = join("\t", @html);
+
+                       $html =~ s{</?[^>]*>}{}gs;
                        $html =~ s{\s+$}{}gs;
                        print $csv_fh "$bib_num\t$year\t$type\t$label\t$category\t$cat_label\t$html\n";
                }