mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Preconfigured import of Subsurface CSV log file
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									e471335af6
								
							
						
					
					
						commit
						1e04aec7fd
					
				
					 5 changed files with 367 additions and 1 deletions
				
			
		|  | @ -2558,6 +2558,7 @@ static struct xslt_files { | ||||||
| 	  { "Divinglog", "DivingLog.xslt", NULL }, | 	  { "Divinglog", "DivingLog.xslt", NULL }, | ||||||
| 	  { "csv", "csv2xml.xslt", NULL }, | 	  { "csv", "csv2xml.xslt", NULL }, | ||||||
| 	  { "sensuscsv", "sensuscsv.xslt", NULL }, | 	  { "sensuscsv", "sensuscsv.xslt", NULL }, | ||||||
|  | 	  { "SubsurfaceCSV", "subsurfacecsv.xslt", NULL }, | ||||||
| 	  { "manualcsv", "manualcsv2xml.xslt", NULL }, | 	  { "manualcsv", "manualcsv2xml.xslt", NULL }, | ||||||
| 	  { NULL, } | 	  { NULL, } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -12,6 +12,7 @@ const DiveLogImportDialog::CSVAppConfig DiveLogImportDialog::CSVApps[CSVAPPS] = | ||||||
| 	{ "XP5", 1, 2, 10, -1, -1, -1, -1, -1, -1, "Tab" }, | 	{ "XP5", 1, 2, 10, -1, -1, -1, -1, -1, -1, "Tab" }, | ||||||
| 	{ "SensusCSV", 10, 11, -1, -1, -1, -1, -1, -1, -1, "," }, | 	{ "SensusCSV", 10, 11, -1, -1, -1, -1, -1, -1, -1, "," }, | ||||||
| 	{ "Seabear CSV", 1, 2, 6, -1, -1, 3, 4, 5, 7, ";" }, | 	{ "Seabear CSV", 1, 2, 6, -1, -1, 3, 4, 5, 7, ";" }, | ||||||
|  | 	{ "SubsurfaceCSV", -1, -1, -1, -1, -1, -1, -1, -1, -1, "," }, | ||||||
| 	{ NULL, } | 	{ NULL, } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -25,6 +26,7 @@ DiveLogImportDialog::DiveLogImportDialog(QStringList *fn, QWidget *parent) : QDi | ||||||
| 
 | 
 | ||||||
| 	/* Add indexes of XSLTs requiring special handling to the list */ | 	/* Add indexes of XSLTs requiring special handling to the list */ | ||||||
| 	specialCSV << 3; | 	specialCSV << 3; | ||||||
|  | 	specialCSV << 5; | ||||||
| 
 | 
 | ||||||
| 	for (int i = 0; !CSVApps[i].name.isNull(); ++i) | 	for (int i = 0; !CSVApps[i].name.isNull(); ++i) | ||||||
| 		ui->knownImports->addItem(CSVApps[i].name); | 		ui->knownImports->addItem(CSVApps[i].name); | ||||||
|  | @ -160,8 +162,10 @@ void DiveLogImportDialog::on_knownImports_currentIndexChanged(int index) | ||||||
| { | { | ||||||
| 	if (specialCSV.contains(index)) { | 	if (specialCSV.contains(index)) { | ||||||
| 		ui->groupBox_3->setEnabled(false); | 		ui->groupBox_3->setEnabled(false); | ||||||
|  | 		ui->CSVUnits->setEnabled(false); | ||||||
| 	} else { | 	} else { | ||||||
| 		ui->groupBox_3->setEnabled(true); | 		ui->groupBox_3->setEnabled(true); | ||||||
|  | 		ui->CSVUnits->setEnabled(true); | ||||||
| 	} | 	} | ||||||
| 	if (index == 0) | 	if (index == 0) | ||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ private: | ||||||
| 		QString separator; | 		QString separator; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| #define CSVAPPS 6 | #define CSVAPPS 7 | ||||||
| 	static const CSVAppConfig CSVApps[CSVAPPS]; | 	static const CSVAppConfig CSVApps[CSVAPPS]; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -45,6 +45,7 @@ | ||||||
|         <file>xslt/xml2manualcsv.xslt</file> |         <file>xslt/xml2manualcsv.xslt</file> | ||||||
|         <file>xslt/uddf.xslt</file> |         <file>xslt/uddf.xslt</file> | ||||||
|         <file>xslt/sensuscsv.xslt</file> |         <file>xslt/sensuscsv.xslt</file> | ||||||
|  |         <file>xslt/subsurfacecsv.xslt</file> | ||||||
|         <file>xslt/manualcsv2xml.xslt</file> |         <file>xslt/manualcsv2xml.xslt</file> | ||||||
|         <file>xslt/shearwater.xslt</file> |         <file>xslt/shearwater.xslt</file> | ||||||
|         <file alias="icon_lung">icons/gas.png</file> |         <file alias="icon_lung">icons/gas.png</file> | ||||||
|  |  | ||||||
							
								
								
									
										360
									
								
								xslt/subsurfacecsv.xslt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										360
									
								
								xslt/subsurfacecsv.xslt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,360 @@ | ||||||
|  | <?xml version="1.0"?> | ||||||
|  | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||||||
|  |   <xsl:include href="commonTemplates.xsl"/> | ||||||
|  |   <xsl:strip-space elements="*"/> | ||||||
|  |   <xsl:param name="separatorIndex" select="separatorIndex"/> | ||||||
|  |   <xsl:param name="units" select="units"/> | ||||||
|  |   <xsl:output method="xml" encoding="utf-8" indent="yes"/> | ||||||
|  | 
 | ||||||
|  |   <xsl:variable name="lf"><xsl:text> | ||||||
|  | </xsl:text></xsl:variable> | ||||||
|  |   <xsl:variable name="fs"> | ||||||
|  |     <xsl:choose> | ||||||
|  |       <xsl:when test="$separatorIndex = 0"><xsl:text>	</xsl:text></xsl:when> | ||||||
|  |       <xsl:when test="$separatorIndex = 2"><xsl:text>;</xsl:text></xsl:when> | ||||||
|  |       <xsl:otherwise><xsl:text>,</xsl:text></xsl:otherwise> | ||||||
|  |     </xsl:choose> | ||||||
|  |   </xsl:variable> | ||||||
|  | 
 | ||||||
|  |   <xsl:template match="/"> | ||||||
|  |     <divelog program="subsurface-import" version="2"> | ||||||
|  |       <dives> | ||||||
|  |         <xsl:call-template name="printLine"> | ||||||
|  |           <xsl:with-param name="line" select="substring-before(substring-after(//SubsurfaceCSV, $lf), $lf)"/> | ||||||
|  |           <xsl:with-param name="remaining" select="substring-after(substring-after(//SubsurfaceCSV, $lf), $lf)"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </dives> | ||||||
|  |     </divelog> | ||||||
|  |   </xsl:template> | ||||||
|  | 
 | ||||||
|  |   <xsl:template name="printLine"> | ||||||
|  |     <xsl:param name="line"/> | ||||||
|  |     <xsl:param name="remaining"/> | ||||||
|  | 
 | ||||||
|  |     <xsl:call-template name="printFields"> | ||||||
|  |       <xsl:with-param name="line" select="$line"/> | ||||||
|  |     </xsl:call-template> | ||||||
|  | 
 | ||||||
|  |     <xsl:if test="$remaining != ''"> | ||||||
|  |       <xsl:call-template name="printLine"> | ||||||
|  |         <xsl:with-param name="line" select="substring-before($remaining, $lf)"/> | ||||||
|  |         <xsl:with-param name="remaining" select="substring-after($remaining, $lf)"/> | ||||||
|  |       </xsl:call-template> | ||||||
|  |     </xsl:if> | ||||||
|  |   </xsl:template> | ||||||
|  | 
 | ||||||
|  |   <xsl:template name="printFields"> | ||||||
|  |     <xsl:param name="line"/> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <dive> | ||||||
|  |       <xsl:attribute name="date"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="1"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:attribute> | ||||||
|  | 
 | ||||||
|  |       <xsl:attribute name="time"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="2"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:attribute> | ||||||
|  | 
 | ||||||
|  |       <xsl:attribute name="number"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="0"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:attribute> | ||||||
|  | 
 | ||||||
|  |       <xsl:attribute name="duration"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="3"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:attribute> | ||||||
|  | 
 | ||||||
|  |       <xsl:attribute name="tags"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="22"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:attribute> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="rating"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="18"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$rating != ''"> | ||||||
|  |         <xsl:attribute name="rating"> | ||||||
|  |           <xsl:value-of select="$rating"/> | ||||||
|  |         </xsl:attribute> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="visibility"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="19"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$visibility != ''"> | ||||||
|  |         <xsl:attribute name="visibility"> | ||||||
|  |           <xsl:value-of select="$visibility"/> | ||||||
|  |         </xsl:attribute> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <divecomputerid deviceid="ffffffff" model="csv" /> | ||||||
|  | 
 | ||||||
|  |       <depth> | ||||||
|  |         <xsl:variable name="max"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="4"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="mean"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="5"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:if test="$max != ''"> | ||||||
|  |           <xsl:attribute name="max"> | ||||||
|  |             <xsl:value-of select="$max"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$mean != ''"> | ||||||
|  |           <xsl:attribute name="mean"> | ||||||
|  |             <xsl:value-of select="$mean"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |       </depth> | ||||||
|  | 
 | ||||||
|  |       <divetemperature> | ||||||
|  |         <xsl:variable name="air"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="6"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="water"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="7"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:if test="$air != ''"> | ||||||
|  |           <xsl:attribute name="air"> | ||||||
|  |             <xsl:value-of select="$air"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$water != ''"> | ||||||
|  |           <xsl:attribute name="water"> | ||||||
|  |             <xsl:value-of select="$water"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |       </divetemperature> | ||||||
|  | 
 | ||||||
|  |       <cylinder> | ||||||
|  |         <xsl:variable name="size"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="8"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="start"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="9"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="end"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="10"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="o2"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="11"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="he"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="12"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:if test="$size != ''"> | ||||||
|  |           <xsl:attribute name="size"> | ||||||
|  |             <xsl:value-of select="$size"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$start != ''"> | ||||||
|  |           <xsl:attribute name="start"> | ||||||
|  |             <xsl:value-of select="$start"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$end != ''"> | ||||||
|  |           <xsl:attribute name="end"> | ||||||
|  |             <xsl:value-of select="$end"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$o2 != ''"> | ||||||
|  |           <xsl:attribute name="o2"> | ||||||
|  |             <xsl:value-of select="$o2"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$he != ''"> | ||||||
|  |           <xsl:attribute name="he"> | ||||||
|  |             <xsl:value-of select="$he"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |       </cylinder> | ||||||
|  | 
 | ||||||
|  |       <location> | ||||||
|  |         <xsl:variable name="gps"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="14"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:variable name="location"> | ||||||
|  |           <xsl:call-template name="getFieldByIndex"> | ||||||
|  |             <xsl:with-param name="index" select="13"/> | ||||||
|  |             <xsl:with-param name="line" select="$line"/> | ||||||
|  |           </xsl:call-template> | ||||||
|  |         </xsl:variable> | ||||||
|  |         <xsl:if test="$gps != ''"> | ||||||
|  |           <xsl:attribute name="gps"> | ||||||
|  |             <xsl:value-of select="$gps"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </xsl:if> | ||||||
|  |         <xsl:if test="$location != ''"> | ||||||
|  |           <xsl:value-of select="$location"/> | ||||||
|  |         </xsl:if> | ||||||
|  |       </location> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="dm"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="15"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$dm != ''"> | ||||||
|  |         <divemaster> | ||||||
|  |           <xsl:value-of select="$dm"/> | ||||||
|  |         </divemaster> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="buddy"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="16"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$buddy != ''"> | ||||||
|  |         <buddy> | ||||||
|  |           <xsl:value-of select="$buddy"/> | ||||||
|  |         </buddy> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="suit"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="17"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$suit != ''"> | ||||||
|  |         <suit> | ||||||
|  |           <xsl:value-of select="$suit"/> | ||||||
|  |         </suit> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="notes"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="20"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$notes != ''"> | ||||||
|  |         <notes> | ||||||
|  |           <xsl:value-of select="$notes"/> | ||||||
|  |         </notes> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |       <xsl:variable name="weight"> | ||||||
|  |         <xsl:call-template name="getFieldByIndex"> | ||||||
|  |           <xsl:with-param name="index" select="21"/> | ||||||
|  |           <xsl:with-param name="line" select="$line"/> | ||||||
|  |         </xsl:call-template> | ||||||
|  |       </xsl:variable> | ||||||
|  |       <xsl:if test="$weight != ''"> | ||||||
|  |         <weightsystem description="unknown"> | ||||||
|  |           <xsl:attribute name="weight"> | ||||||
|  |             <xsl:value-of select="$weight"/> | ||||||
|  |           </xsl:attribute> | ||||||
|  |         </weightsystem> | ||||||
|  |       </xsl:if> | ||||||
|  | 
 | ||||||
|  |     </dive> | ||||||
|  |   </xsl:template> | ||||||
|  | 
 | ||||||
|  |   <xsl:template name="getFieldByIndex"> | ||||||
|  |     <xsl:param name="index"/> | ||||||
|  |     <xsl:param name="line"/> | ||||||
|  |     <xsl:choose> | ||||||
|  |       <xsl:when test="$index > 0"> | ||||||
|  |         <xsl:choose> | ||||||
|  |           <xsl:when test="substring($line, 1, 1) = '"'"> | ||||||
|  |             <xsl:call-template name="getFieldByIndex"> | ||||||
|  |               <xsl:with-param name="index" select="$index -1"/> | ||||||
|  |               <xsl:with-param name="line" select="substring-after($line, $fs)"/> | ||||||
|  |             </xsl:call-template> | ||||||
|  |           </xsl:when> | ||||||
|  |           <xsl:otherwise> | ||||||
|  |             <xsl:call-template name="getFieldByIndex"> | ||||||
|  |               <xsl:with-param name="index" select="$index -1"/> | ||||||
|  |               <xsl:with-param name="line" select="substring-after($line, $fs)"/> | ||||||
|  |             </xsl:call-template> | ||||||
|  |           </xsl:otherwise> | ||||||
|  |         </xsl:choose> | ||||||
|  |       </xsl:when> | ||||||
|  |       <xsl:otherwise> | ||||||
|  |         <xsl:choose> | ||||||
|  |           <xsl:when test="substring($line, 1, 1) = '"'"> | ||||||
|  |             <xsl:choose> | ||||||
|  |               <xsl:when test="substring-before($line,'"$fs') != ''"> | ||||||
|  |                 <xsl:value-of select="substring-before($line,'"$fs')"/> | ||||||
|  |               </xsl:when> | ||||||
|  |               <xsl:otherwise> | ||||||
|  |                 <xsl:if test="substring-after($line, '"$fs') = ''"> | ||||||
|  |                   <xsl:value-of select="substring-before(substring-after($line, '"'), '"')"/> | ||||||
|  |                 </xsl:if> | ||||||
|  |               </xsl:otherwise> | ||||||
|  |             </xsl:choose> | ||||||
|  |           </xsl:when> | ||||||
|  | 
 | ||||||
|  |           <xsl:otherwise> | ||||||
|  |             <xsl:choose> | ||||||
|  |               <xsl:when test="substring-before($line,$fs) != ''"> | ||||||
|  |                 <xsl:value-of select="substring-before($line,$fs)"/> | ||||||
|  |               </xsl:when> | ||||||
|  |               <xsl:otherwise> | ||||||
|  |                 <xsl:if test="substring-after($line, $fs) = ''"> | ||||||
|  |                   <xsl:value-of select="$line"/> | ||||||
|  |                 </xsl:if> | ||||||
|  |               </xsl:otherwise> | ||||||
|  |             </xsl:choose> | ||||||
|  |           </xsl:otherwise> | ||||||
|  |         </xsl:choose> | ||||||
|  |       </xsl:otherwise> | ||||||
|  |     </xsl:choose> | ||||||
|  | 
 | ||||||
|  |   </xsl:template> | ||||||
|  | </xsl:stylesheet> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue