Преглед изворни кода

All log processing functionality has been moved to first stage. Some bugs with release/full views have been fixed

[SVN r28756]
Misha Bergal пре 21 година
родитељ
комит
e7b1ed2c52

+ 3 - 1
tools/regression/xsl_reports/xsl/v2/common.xsl

@@ -217,10 +217,12 @@ http://www.boost.org/LICENSE_1_0.txt)
 
 
     <func:function name="meta:log_file_path">
     <func:function name="meta:log_file_path">
         <xsl:param name="test_log"/>
         <xsl:param name="test_log"/>
+        <xsl:param name="runner"/>
+        <xsl:param name="release_postfix" select="''"/>
         <func:result>
         <func:result>
             <xsl:choose>
             <xsl:choose>
                 <xsl:when test="meta:show_output( $explicit_markup, $test_log )">
                 <xsl:when test="meta:show_output( $explicit_markup, $test_log )">
-                    <xsl:value-of select="meta:output_file_path( concat( $test_log/../@runner, '-', $test_log/@target-directory ) )"/>
+                    <xsl:value-of select="meta:output_file_path( concat( $runner, '-', $test_log/@target-directory, $release_postfix ) )"/>
                 </xsl:when>
                 </xsl:when>
                 <xsl:otherwise>
                 <xsl:otherwise>
                     <xsl:text></xsl:text>
                     <xsl:text></xsl:text>

+ 288 - 91
tools/regression/xsl_reports/xsl/v2/links_page.xsl

@@ -11,10 +11,12 @@ http://www.boost.org/LICENSE_1_0.txt)
 
 
 <xsl:stylesheet 
 <xsl:stylesheet 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    xmlns:str="http://exslt.org/strings"
+    xmlns:set="http://exslt.org/sets"
     xmlns:exsl="http://exslt.org/common"
     xmlns:exsl="http://exslt.org/common"
     xmlns:func="http://exslt.org/functions"
     xmlns:func="http://exslt.org/functions"
     xmlns:meta="http://www.meta-comm.com"
     xmlns:meta="http://www.meta-comm.com"
-    extension-element-prefixes="func exsl"
+    extension-element-prefixes="func exsl str set"
     exclude-result-prefixes="meta"
     exclude-result-prefixes="meta"
     version="1.0">
     version="1.0">
 
 
@@ -32,105 +34,300 @@ http://www.boost.org/LICENSE_1_0.txt)
     <xsl:param name="explicit_markup_file"/>
     <xsl:param name="explicit_markup_file"/>
 
 
     <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
     <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
+    <xsl:variable name="runner_id" select="test-run/@runner"/>
 
 
-    <xsl:template match="test-log[ meta:show_output( $explicit_markup, . ) ]">
-        <xsl:variable name="document_path" select="meta:output_file_path( concat( ../@runner, '-', @target-directory ) )"/>
-
-        <xsl:message>Writing log file document <xsl:value-of select="$document_path"/></xsl:message>
-
-        <exsl:document href="{$document_path}" 
-        method="html" 
-        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
-        encoding="utf-8"
-        indent="yes">
-
-        <html>
-            <xsl:variable name="component">
-            <xsl:choose>
-                <xsl:when test="@test-name != ''">
-                <div class="log-test-title">
-                    <xsl:value-of select="concat( ../@runner, ' - ', @library, ' - ', @test-name, ' / ', @toolset )"/>
-                </div>
-                </xsl:when>
-                <xsl:otherwise>
-                <xsl:value-of select="@target-dir"/>
-                </xsl:otherwise>
-            </xsl:choose>
-            </xsl:variable>
-            
-            <head>
-            <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
-            <title>Test output: <xsl:value-of select="$component"/></title>
-            </head>
-
-            <body>
-            <div>
-                <div class="log-test-title">
-                Test output: <xsl:value-of select="$component"/>
-            </div>
-            
-            <div>
-                <b>Report Time: </b> <xsl:value-of select="$run_date"/>
-            </div>
-
-            <xsl:if test="notes/note">
-                <p>
-                <div class="notes-title">Notes</div>
-                <xsl:call-template name="show_notes">
-                    <xsl:with-param name="notes" select="notes/note"/>
-                    <xsl:with-param name="explicit_markup" select="$explicit_markup"/>
+    <!-- 
+         Build a  tree with the following structure:
+
+         lib -> test -> toolsets -> test-log
+         -->
+
+    <xsl:template match="/">
+        <xsl:variable name="test_logs_to_show" select="//test-log[ meta:show_output( $explicit_markup, . ) ]"/>
+        <xsl:variable name="libs_test_test_log_tree" select="meta:restructure_logs( $test_logs_to_show )"/>
+        
+        <exsl:document href="debug.xml"
+            method="xml" 
+            encoding="utf-8"
+            indent="yes">
+            <debug>
+                <xsl:copy-of select="$libs_test_test_log_tree"/>
+            </debug>
+        </exsl:document>
+
+        <xsl:for-each select="$libs_test_test_log_tree//toolset">
+            <xsl:variable name="toolset" select="."/>
+            <xsl:variable name="library_name" select="$toolset/../../@name"/>
+            <xsl:variable name="test_name" select="$toolset/../@name"/>
+            <xsl:variable name="toolset_name" select="$toolset/@name"/>
+            <xsl:message>Processing test "<xsl:value-of select="$runner_id"/>/<xsl:value-of select="$library_name"/>/<xsl:value-of select="$test_name"/>/<xsl:value-of select="$toolset_name"/>"</xsl:message>
+
+            <xsl:if test="count( $toolset/* ) != 1">
+                <xsl:message>  Processing variants</xsl:message>
+
+                <xsl:variable name="variants_file_path" select="meta:output_file_path( concat( $runner_id, '-', $library_name, '-', $toolset_name, '-', $test_name, '-variants' ) )"/>
+
+                <xsl:call-template name="write_variants_file">
+                    <xsl:with-param name="path" select="$variants_file_path"/>
+                    <xsl:with-param name="test_logs" select="$toolset/*"/>
                 </xsl:call-template>
                 </xsl:call-template>
-                </p>
-            </xsl:if>
-              
-            <xsl:if test="compile">
-                <p>
-                <div class="log-compiler-output-title">Compiler output [<xsl:value-of select="compile/@timestamp"/>]:
-                </div>
-                <pre>
-                    <xsl:copy-of select="compile/node()"/>
-                </pre>
-                </p>
-            </xsl:if>
-              
-            <xsl:if test="link">
-                <p>
-                <div class="log-linker-output-title">Linker output [<xsl:value-of select="link/@timestamp"/>]:</div>
-                <pre>
-                    <xsl:copy-of select="link/node()"/>
-                </pre>
-                </p>
-            </xsl:if>
 
 
-            <xsl:if test="lib">
-                <p>
-                <div class="log-linker-output-title">Lib output [<xsl:value-of select="lib/@timestamp"/>]:</div>
-                <p>
-                    See <a href="{meta:encode_path( concat( ../@runner, '-',  lib/node() )  ) }.html">
-                    <xsl:copy-of select="lib/node()"/>
-                    </a>
-                </p>
-                </p>
-            </xsl:if>
-              
-            <xsl:if test="run">
-                <p>
-                <div class="log-run-output-title">Run output [<xsl:value-of select="run/@timestamp"/>]:</div>
-                <pre>
-                    <xsl:copy-of select="run/node()"/>
-                </pre>
-                </p>
+                <xsl:for-each select="str:tokenize( string( ' |_release' ), '|')">
+                    <xsl:variable name="release_postfix" select="translate(.,' ','')"/>
+                    <xsl:for-each select="str:tokenize( string( 'developer|user' ), '|')">
+                        <xsl:variable name="directory" select="."/>
+                        <xsl:variable name="variants__file_path" select="concat( $directory, '/', meta:encode_path( concat( $runner_id, '-', $library_name, '-', $toolset_name, '-', $test_name, '-variants_', $release_postfix ) ), '.html' )"/>
+
+                        <xsl:call-template name="write_variants_reference_file">
+                            <xsl:with-param name="path" select="$variants__file_path"/>
+                            <xsl:with-param name="variants_file_path" select="concat( '../', $variants_file_path )"/>
+                            <xsl:with-param name="release_postfix" select="$release_postfix"/>
+                        </xsl:call-template>
+                    </xsl:for-each>
+                </xsl:for-each>
             </xsl:if>
             </xsl:if>
-              
-            </div>
 
 
-            <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
+            <xsl:for-each select="./test-log">
+                <xsl:message>  Processing test-log</xsl:message>
+                <xsl:variable name="test_log" select="."/>
+
+                <xsl:variable name="log_file_path" select="meta:log_file_path( ., $runner_id )"/>
+                
+                <xsl:call-template name="write_test_result_file">
+                    <xsl:with-param name="path" select="$log_file_path"/>
+                    <xsl:with-param name="test_log" select="$test_log"/>
+                    <xsl:with-param name="runner_id" select="$runner_id"/>
+                </xsl:call-template>
+                
+                <xsl:for-each select="str:tokenize( string( ' |_release' ), '|')">
+                    <xsl:variable name="release_postfix" select="translate(.,' ','')"/>
+                    <xsl:for-each select="str:tokenize( string( 'developer|user' ), '|')">
+                        <xsl:variable name="directory" select="."/>
 
 
-            </body>
+                        <xsl:variable name="reference_file_path" select="concat( $directory, '/', meta:log_file_path( $test_log, $runner_id, $release_postfix ) )"/>
+                        <xsl:call-template name="write_test_results_reference_file">
+                            <xsl:with-param name="path" select="$reference_file_path"/>
+                            <xsl:with-param name="log_file_path" select="$log_file_path"/>
+                        </xsl:call-template>
+                    </xsl:for-each>
         
         
-        </html>
+                </xsl:for-each>
+            </xsl:for-each>
+        </xsl:for-each>
+    </xsl:template>
+
+    <func:function name="meta:restructure_logs">
+        <xsl:param name="test_logs"/>
+        <xsl:variable name="libs" select="set:distinct( $test_logs/@library )"/>
+        <xsl:variable name="fragment">
+            <runner runner_id="{$test_logs[1]/../@runner}">
+                <xsl:for-each select="$libs">
+                    <xsl:variable name="library_name" select="."/>
+                    <xsl:variable name="library_test_logs" select="$test_logs[@library=$library_name]"/>
+                    <library name="{$library_name}">
+                        <xsl:variable name="tests" select="set:distinct( $library_test_logs/@test-name )"/>
+                        <xsl:for-each select="$tests">
+                            <xsl:variable name="test_name" select="."/>
+                            <xsl:variable name="test_test_logs" select="$library_test_logs[@test-name=$test_name]"/>
+                            <test name="{$test_name}"  >
+                                <xsl:variable name="toolsets" select="set:distinct( $test_test_logs/@toolset )"/>
+                                <xsl:for-each select="$toolsets">
+                                    <xsl:variable name="toolset" select="."/>
+                                    <xsl:variable name="toolset_test_logs" select="$test_test_logs[@toolset=@toolset]"/>
+                                    <toolset name="{$toolset}">
+                                        <xsl:copy-of select="$toolset_test_logs"/>
+                                    </toolset>
+                                </xsl:for-each>
+                            </test>
+                        </xsl:for-each>
+                    </library>
+                </xsl:for-each>
+            </runner>
+        </xsl:variable>
+        <func:result select="exsl:node-set( $fragment )"/>
+    </func:function>
+
+    <xsl:template name="write_variants_reference_file">
+        <xsl:param name="path"/>
+        <xsl:param name="variants_file_path"/>
+        <xsl:param name="release_postfix"/>
+
+        <xsl:message>    Writing variants reference file <xsl:value-of select="$path"/></xsl:message>
+        <exsl:document href="{$path}"
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+            <html>
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                    <!--                    <title>Boost regression: <xsl:value-of select="$library_name"/>/<xsl:value-of select="$source"/></title>-->
+                </head>
+                <frameset cols="190px,*" frameborder="0" framespacing="0" border="0">
+                    <frame name="tocframe" src="toc{$release_postfix}.html" scrolling="auto"/>
+                    <frame name="docframe" src="{$variants_file_path}" scrolling="auto"/>
+                </frameset>
+            </html>
         </exsl:document>  
         </exsl:document>  
+        
+    </xsl:template>
 
 
+    <xsl:template name="write_variants_file">
+        <xsl:param name="path"/>
+        <xsl:param name="test_logs"/>
+        <xsl:message>    Writing variants file <xsl:value-of select="$path"/></xsl:message>
+        <exsl:document href="{$path}"
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+            
+            <html>
+                <body>
+                    <table>
+                        <xsl:for-each select="$test_logs">
+                            <tr>
+                                <td>
+                                     <xsl:choose>
+                                         <xsl:when test="meta:log_file_path(.,$runner_id) != ''">
+                                             <a href="../{meta:log_file_path(.,$runner_id)}" target="_top" >
+                                                 <xsl:value-of select="@target-directory"/>
+                                             </a>
+                                         </xsl:when>
+                                         <xsl:otherwise>
+                                             <xsl:value-of select="@target-directory"/>
+                                         </xsl:otherwise>
+                                     </xsl:choose>
+                                 </td>
+                             </tr>
+                         </xsl:for-each>
+                     </table>
+                 </body>
+             </html>
+         </exsl:document>           
+    </xsl:template>
+
+    <xsl:template name="write_test_result_file">
+        <xsl:param name="path"/>
+        <xsl:param name="test_log"/>
+        <xsl:param name="runner_id"/>
+        <xsl:message>    Writing log file document <xsl:value-of select="$path"/></xsl:message>
+
+        <exsl:document href="{$path}" 
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+                        
+            <html>
+                <xsl:variable name="component">
+                    <xsl:choose>
+                        <xsl:when test="$test_log/@test-name != ''">
+                            <div class="log-test-title">
+                                <xsl:value-of select="concat( $runner_id, ' - ', @library, ' - ', @test-name, ' / ', @toolset )"/>
+                            </div>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:value-of select="@target-dir"/>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:variable>
+                
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                    <title>Test output: <xsl:value-of select="$component"/></title>
+                </head>
+                
+                <body>
+                    <div>
+                        <div class="log-test-title">
+                            Test output: <xsl:value-of select="$component"/>
+                    </div>
+                    
+                    <div>
+                        <b>Report Time: </b> <xsl:value-of select="$run_date"/>
+                    </div>
+                    
+                    <xsl:if test="notes/note">
+                        <p>
+                            <div class="notes-title">Notes</div>
+                            <xsl:call-template name="show_notes">
+                                <xsl:with-param name="notes" select="notes/note"/>
+                                <xsl:with-param name="explicit_markup" select="$explicit_markup"/>
+                            </xsl:call-template>
+                        </p>
+                    </xsl:if>
+                    
+                    <xsl:if test="compile">
+                        <p>
+                            <div class="log-compiler-output-title">Compiler output [<xsl:value-of select="compile/@timestamp"/>]:
+                        </div>
+                        <pre>
+                            <xsl:copy-of select="compile/node()"/>
+                        </pre>
+                    </p>
+                </xsl:if>
+                
+                <xsl:if test="link">
+                    <p>
+                        <div class="log-linker-output-title">Linker output [<xsl:value-of select="link/@timestamp"/>]:</div>
+                                    <pre>
+                                        <xsl:copy-of select="link/node()"/>
+                                    </pre>
+                                </p>
+                            </xsl:if>
+                            
+                            <xsl:if test="lib">
+                                <p>
+                                    <div class="log-linker-output-title">Lib output [<xsl:value-of select="lib/@timestamp"/>]:</div>
+                                    <p>
+                                        See <a href="{meta:encode_path( concat( $runner_id, '-',  lib/node() )  ) }.html">
+                                        <xsl:copy-of select="lib/node()"/>
+                                    </a>
+                                </p>
+                            </p>
+                        </xsl:if>
+                        
+                        <xsl:if test="run">
+                            <p>
+                                <div class="log-run-output-title">Run output [<xsl:value-of select="run/@timestamp"/>]:</div>
+                                <pre>
+                                    <xsl:copy-of select="run/node()"/>
+                                </pre>
+                            </p>
+                        </xsl:if>
+                        
+                    </div>
+                    
+                    <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
+                    
+                </body>
+                
+            </html>
+        </exsl:document>         
+    </xsl:template>
+
+
+    <xsl:template name="write_test_results_reference_file">
+        <xsl:param name="$path"/>
+        <xsl:param name="$log_file_path"/>
+        <xsl:message>    Writing log frame document <xsl:value-of select="$path"/></xsl:message>
+        <exsl:document href="{$path}"
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+            
+            <html>
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                </head>
+                <frameset cols="190px,*" frameborder="0" framespacing="0" border="0">
+                    <frame name="tocframe" src="../toc.html" scrolling="auto"/>
+                    <frame name="docframe" src="../../{$log_file_path}" scrolling="auto"/>
+                </frameset>
+            </html>
+        </exsl:document>
     </xsl:template>
     </xsl:template>
 
 
 </xsl:stylesheet>
 </xsl:stylesheet>

+ 4 - 87
tools/regression/xsl_reports/xsl/v2/result_page.xsl

@@ -70,6 +70,7 @@ http://www.boost.org/LICENSE_1_0.txt)
     </xsl:variable>
     </xsl:variable>
 
 
 
 
+
     <xsl:template name="test_type_col">
     <xsl:template name="test_type_col">
         <td class="test-type">
         <td class="test-type">
         <a href="http://www.boost.org/status/compiler_status.html#Understanding" class="legend-link" target="_top">
         <a href="http://www.boost.org/status/compiler_status.html#Understanding" class="legend-link" target="_top">
@@ -443,66 +444,11 @@ http://www.boost.org/LICENSE_1_0.txt)
         <xsl:variable name="cell_link">
         <xsl:variable name="cell_link">
             <xsl:choose>
             <xsl:choose>
                 <xsl:when test="count( $test_log ) &gt; 1">
                 <xsl:when test="count( $test_log ) &gt; 1">
-                    <xsl:variable name="variants_file_path" select="concat( meta:encode_path( concat( $test_log/../@runner, '-', $test_log/@library, '-', $test_log/@toolset, '-', $test_log/@test-name, '-variants' ) ), '.html' )"/>
-                    <xsl:variable name="variants__file_path" select="concat( meta:encode_path( concat( $test_log/../@runner, '-', $test_log/@library, '-', $test_log/@toolset, '-', $test_log/@test-name, '-variants_' ) ), '.html' )"/>
-                    <xsl:message>Writing variants file <xsl:value-of select="$variants_file_path"/></xsl:message>
-                    
-                    <exsl:document href="{$variants_file_path}"
-                        method="html" 
-                        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
-                        encoding="utf-8"
-                        indent="yes">
-                        <html>
-                            <head>
-                                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
-                                <title>Boost regression: <xsl:value-of select="$library"/>/<xsl:value-of select="$source"/></title>
-                            </head>
-                            <frameset cols="190px,*" frameborder="0" framespacing="0" border="0">
-                                <frame name="tocframe" src="toc{$release_postfix}.html" scrolling="auto"/>
-                                <frame name="docframe" src="{$variants__file_path}" scrolling="auto"/>
-                            </frameset>
-                        </html>
-                    </exsl:document>  
-
-                    <exsl:document href="{$variants__file_path}"
-                        method="html" 
-                        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
-                        encoding="utf-8"
-                        indent="yes">
-
-                        <html>
-                            <body>
-                                <table>
-                                    <xsl:for-each select="$test_log">
-                                        <tr>
-                                            <td>
-                                                <!--<debug>
-                                                    <xsl:copy-of select="."/>
-
-                                                    <xsl:value-of select="meta:show_output( $explicit_markup, . )"/>
-                                                    <xsl:value-of select="meta:log_file_path(.)"/>
-                                                </debug>-->
-                                                <xsl:choose>
-                                                    <xsl:when test="meta:log_file_path(.) != ''">
-                                                        <a href="{meta:log_file_path(.)}" target="_top" >
-                                                            <xsl:value-of select="@target-directory"/>
-                                                        </a>
-                                                    </xsl:when>
-                                                    <xsl:otherwise>
-                                                        <xsl:value-of select="@target-directory"/>
-                                                    </xsl:otherwise>
-                                                </xsl:choose>
-                                            </td>
-                                        </tr>
-                                    </xsl:for-each>
-                                </table>
-                            </body>
-                        </html>
-                    </exsl:document>           
-                    <xsl:value-of select="$variants_file_path"/>
+                    <xsl:variable name="variants__file_path" select="concat( meta:encode_path( concat( $test_log/../@runner, '-', $test_log/@library, '-', $test_log/@toolset, '-', $test_log/@test-name, '-variants_', $release_postfix ) ), '.html' )"/>
+                    <xsl:value-of select="$variants__file_path"/>
                 </xsl:when>
                 </xsl:when>
                 <xsl:otherwise>
                 <xsl:otherwise>
-                    <xsl:value-of select="meta:log_file_path($test_log)"/>
+                    <xsl:value-of select="meta:log_file_path( $test_log, $test_log/../@runner, $release_postfix )"/>
                 </xsl:otherwise>
                 </xsl:otherwise>
             </xsl:choose>
             </xsl:choose>
         </xsl:variable>
         </xsl:variable>
@@ -646,37 +592,8 @@ http://www.boost.org/LICENSE_1_0.txt)
             <xsl:variable name="toolset" select="@name" />
             <xsl:variable name="toolset" select="@name" />
             <xsl:variable name="runner" select="../@runner" />
             <xsl:variable name="runner" select="../@runner" />
 
 
-            <!-- Write log file -->
             <xsl:variable name="test_result_for_toolset" select="$test_results[ @toolset = $toolset and ../@runner=$runner ]"/>
             <xsl:variable name="test_result_for_toolset" select="$test_results[ @toolset = $toolset and ../@runner=$runner ]"/>
 
 
-
-            <xsl:for-each select="$test_result_for_toolset">
-                <xsl:variable name="log_file" select="meta:log_file_path(.)"/>
-
-                <xsl:if test="$release != 'yes' and count( $test_result_for_toolset ) > 0 and $log_file != '' ">
-                    <xsl:message>Writing log file document  <xsl:value-of select="$log_file"/></xsl:message>
-                        <exsl:document href="{$log_file}"
-                            method="html" 
-                            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
-                            encoding="utf-8"
-                            indent="yes">
-                            
-                            <html>
-                                <head>
-                                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
-                                    <!--<title>Boost regression unresolved issues: <xsl:value-of select="$source"/></title>-->
-                                </head>
-                                <frameset cols="190px,*" frameborder="0" framespacing="0" border="0">
-                                    <frame name="tocframe" src="../toc.html" scrolling="auto"/>
-                                    <frame name="docframe" src="../../{$log_file}" scrolling="auto"/>
-                                </frameset>
-                            </html>
-                        </exsl:document>
-                    </xsl:if>
-                
-            </xsl:for-each>
-
-
             <!-- Insert cell -->
             <!-- Insert cell -->
             <xsl:choose>
             <xsl:choose>
             <xsl:when test="$mode='user'">
             <xsl:when test="$mode='user'">

粤ICP备19079148号