Changeset 17 for 1dwg


Ignore:
Timestamp:
Mar 19, 2008 2:56:39 AM (14 years ago)
Author:
prjemian
Message:

more metadata read by IgorPro? reader

Location:
1dwg
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • 1dwg/trunk/IgorPro/cansasXML.ipf

    r12 r17  
    11#pragma rtGlobals=1             // Use modern global access method. 
    2 #pragma version=1.02 
     2#pragma version=1.04 
    33 
    44// file:        cansasXML.ipf 
    55// author:      Pete R. Jemian <jemian@anl.gov> 
    6 // date:        2008-03-16 
     6// date:        2008-03-19 
    77// purpose:  implement an IgorPro file reader to read the canSAS 1-D reduced SAS data in XML files 
    88//                      adheres to the cansas1d/1.0 standard 
    99// URL: http://www.smallangles.net/wgwiki/index.php/cansas1d_documentation 
     10// 
     11// requires:    IgorPro (http://www.wavemetrics.com/) 
     12//                              XMLutils - XOP (http://www.igorexchange.com/project/XMLutils) 
    1013 
    1114FUNCTION CS_XmlReader(fileName) 
     
    7881        CS_registerNameSpaces(fileID)                           // to assist XPath construction 
    7982 
    80         // PRJ_quick(fileID) 
    81  
    8283        // identify supported versions of canSAS XML standard 
    8384        STRING version 
     
    119120        VARIABLE fileID 
    120121        WAVE/T W_ElementList 
    121         SVAR nsStr, errorMsg 
    122         STRING/G Title, FolderList = "" 
     122        SVAR nsStr, errorMsg, xmlFile 
     123        STRING/G Title 
    123124        STRING XPathStr, Title_folder, SASdata_folder 
    124         STRING SASentryPath, SASdataPath 
     125        STRING SASentryPath, SASdataPath, RunNum 
    125126        VARIABLE i, j, index, SASdata_index, returnCode = 0 
    126127 
     
    150151                ENDIF 
    151152                NewDataFolder/O  $Title_folder 
    152                 FolderList = AddListItem(Title_folder, FolderList, ";", Inf) 
     153                STRING/G FolderList = "" 
     154                FolderList = AddListItem(":"+Title_folder+":", FolderList, ";", Inf) 
    153155                // 
    154156                // CS_correctedXpathStr 
     
    163165                        SASdataPath = CS_correctedXpathStr(SASdataList[0]) 
    164166                        SASdata_folder = ":" + Title_folder + ":" 
     167                        RunNum = "/Run" 
     168                        CS_appendMetaData( "Run",                               SASentryPath+CS_XPath_NS(RunNum),                               "") 
     169                        CS_appendMetaData( "Run_name",                  SASentryPath+CS_XPath_NS(RunNum + "/@name"),    "") 
     170                        CS_appendMetaData( "SASdata_name",      SASdataPath+CS_XPath_NS("/@name"),                              "") 
    165171                        PRINT "\t\t dataFolder:", SASdata_folder 
     172                        CS_1i_fillMetadataTable(fileID) 
    166173                        IF (CS_1i_extractSasData(fileID, SASdataPath, SASdata_folder)) 
    167174                                // non-zero return code means an error, message is in errorMsg 
     
    175182                                BREAK 
    176183                        ENDIF 
    177                         CS_appendMetaData(  "Run", "", CS_XmlStrFmXpath(fileID, SASdataPath+"/",  "../Run["+num2str(j+1)+"]")) 
    178                         CS_appendMetaData(  "Run_name", "", CS_XmlStrFmXpath(fileID, SASdataPath+"/",  "../Run["+num2str(j+1)+"]/@name")) 
    179                         CS_appendMetaData(  "SASdata_name", "", CS_XmlStrFmXpath(fileID, SASdataPath,  "/@name")) 
    180184                ELSE 
    181185                        // multiple SASdata elements, place data waves in subfolders 
     
    187191                                SASdata_folder = CleanupName(StringByKey("name", W_ElementList[SASdata_index][2]), 0) 
    188192                                PRINT "\t\t dataFolder:", SASdata_folder 
    189                                 CS_appendMetaData(  "Run"+num2str(j), "", CS_XmlStrFmXpath(fileID, SASdataPath+"/",  "../Run["+num2str(j+1)+"]")) 
    190                                 CS_appendMetaData(  "Run"+num2str(j)+"_name", "", CS_XmlStrFmXpath(fileID, SASdataPath+"/",  "../Run["+num2str(j+1)+"]/@name")) 
    191                                 CS_appendMetaData(  "SASdata"+num2str(j)+"_name", "", CS_XmlStrFmXpath(fileID, SASdataPath,  "/@name")) 
     193                                RunNum = "/Run["+num2str(j+1)+"]" 
     194                                CS_appendMetaData( "Run"+num2str(j),                            SASdataPath+"/.."+CS_XPath_NS(RunNum),                          "") 
     195                                CS_appendMetaData( "Run"+num2str(j)+"_name",            SASdataPath+"/.."+CS_XPath_NS(RunNum + "/@name"),       "") 
     196                                CS_appendMetaData( "SASdata"+num2str(j)+"_name",        SASdataPath+CS_XPath_NS("/@name"),                                      "") 
    192197                                SetDataFolder $Title_folder 
    193198                                IF ( CheckName(SASdata_folder, 11) != 0 ) 
     
    197202                                SetDataFolder :: 
    198203                                SASdata_folder =  ":" + Title_folder + ":" + SASdata_folder + ":" 
     204                                FolderList = AddListItem(SASdata_folder, FolderList, ";", Inf) 
    199205                                //--- 
     206                                CS_1i_fillMetadataTable(fileID) 
    200207                                IF (CS_1i_extractSasData(fileID, SASdataPath, SASdata_folder)) 
    201208                                        // non-zero return code means an error, message is in errorMsg 
     
    211218                        ENDFOR  // many SASdata 
    212219                ENDIF                   // 1 or many SASdata 
     220                MAKE/O/T/N=(3,2) admin 
     221                admin[0][0] = "xmlFile" 
     222                admin[0][1] = xmlFile 
     223                admin[1][0] = "FolderList" 
     224                admin[1][1] = FolderList 
     225                admin[2][0] = "numSASdata" 
     226                admin[2][1] = num2str(numpnts(SASdataList)) 
     227                Title_folder = ":" + Title_folder + ":" 
     228                MoveWave admin, $Title_folder 
     229                MoveString FolderList, $Title_folder 
    213230        ENDFOR          // each SASentry 
    214231 
     
    225242        WAVE/T metadata 
    226243        STRING suffix = "" 
    227         STRING value 
     244        STRING value, detailsPath, detectorPath, notePath 
    228245        // collect some metadata 
    229246        // first, fill a table with keywords, and XPath locations, 3rd column will be values 
     
    256273                        suffix = num2str(i) 
    257274                ENDIF 
    258                 CS_appendMetaData("sample_details"+suffix+"_name",      detailsList[i]+CS_XPath_NS("/@name"), "") 
    259                 CS_appendMetaData("sample_details"+suffix,                      detailsList[i], "") 
     275                detailsPath = CS_correctedXpathStr(detailsList[i]) 
     276                CS_appendMetaData("sample_details"+suffix+"_name",      detailsPath+CS_XPath_NS("/@name"), "") 
     277                CS_appendMetaData("sample_details"+suffix,                      detailsPath, "") 
    260278        ENDFOR 
    261279 
     
    263281        // <SASinstrument> 
    264282        CS_appendMetaData("Instrument_name", sasEntryPath+CS_XPath_NS("/SASinstrument/name"), "") 
     283        CS_appendMetaData("Instrument_attr_name", sasEntryPath+CS_XPath_NS("/SASinstrument/@name"), "") 
    265284 
    266285        // <SASinstrument><SASsource> 
    267286        CS_appendMetaData("source_name", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/@name"), "") 
    268287        CS_appendMetaData("radiation", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/radiation"), "") 
     288        CS_appendMetaData("beam_size_name", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/@name"), "") 
     289        CS_appendMetaData("beam_size_x", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/x"), "") 
     290        CS_appendMetaData("beam_size_x_unit", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/x/@unit"), "") 
     291        CS_appendMetaData("beam_size_y", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/y"), "") 
     292        CS_appendMetaData("beam_size_y_unit", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/y/@unit"), "") 
     293        CS_appendMetaData("beam_size_z", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/z"), "") 
     294        CS_appendMetaData("beam_size_z_unit", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_size/z/@unit"), "") 
    269295        CS_appendMetaData("beam_shape", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/beam_shape"), "") 
    270         // ignore <beam_size> for now 
    271296        CS_appendMetaData("wavelength", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/wavelength"), "") 
    272297        CS_appendMetaData("wavelength_unit", sasEntryPath+CS_XPath_NS("/SASinstrument/SASsource/wavelength/@unit"), "") 
     
    279304 
    280305        // ignore <SASinstrument><SAScollimation> for now 
     306        CS_simpleXmlListXpath(fileID, sasEntryPath, "/SASinstrument//SAScollimation")           //output: W_listXPath 
     307        DUPLICATE/O/T   W_listXPath, SAScollimationList 
     308        STRING collimationPath 
     309        suffix = "" 
     310        FOR (i = 0; i < numpnts(SAScollimationList); i += 1) 
     311                IF (numpnts(SAScollimationList) > 1) 
     312                        suffix = num2str(i) 
     313                ENDIF 
     314                collimationPath = CS_correctedXpathStr(SAScollimationList[i]) 
     315                CS_appendMetaData("collimation_name"+suffix,    collimationPath+CS_XPath_NS("/@name"), "") 
     316                CS_appendMetaData("collimation_distance"+suffix,        collimationPath+CS_XPath_NS("/distance"), "") 
     317                CS_appendMetaData("collimation_distance_unit"+suffix,   collimationPath+CS_XPath_NS("/distance/@unit"), "") 
     318                CS_appendMetaData("collimation_aperture_name"+suffix,   collimationPath+CS_XPath_NS("/aperture/@name"), "") 
     319                CS_appendMetaData("collimation_aperture_type"+suffix,   collimationPath+CS_XPath_NS("/aperture/type"), "") 
     320                CS_appendMetaData("collimation_aperture_size_name"+suffix,      collimationPath+CS_XPath_NS("/aperture/size/@name"), "") 
     321                CS_appendMetaData("collimation_aperture_size_x"+suffix,         collimationPath+CS_XPath_NS("/aperture/size/x"), "") 
     322                CS_appendMetaData("collimation_aperture_size_x_unit"+suffix,    collimationPath+CS_XPath_NS("/aperture/size/x/@unit"), "") 
     323                CS_appendMetaData("collimation_aperture_size_y"+suffix,         collimationPath+CS_XPath_NS("/aperture/size/y"), "") 
     324                CS_appendMetaData("collimation_aperture_size_y_unit"+suffix,    collimationPath+CS_XPath_NS("/aperture/size/y/@unit"), "") 
     325                CS_appendMetaData("collimation_aperture_size_z"+suffix,         collimationPath+CS_XPath_NS("/aperture/size/z"), "") 
     326                CS_appendMetaData("collimation_aperture_size_z_unit"+suffix,    collimationPath+CS_XPath_NS("/aperture/size/z/@unit"), "") 
     327                CS_appendMetaData("collimation_aperture_distance"+suffix,       collimationPath+CS_XPath_NS("/aperture/distance"), "") 
     328                CS_appendMetaData("collimation_aperture_distance_unit"+suffix,  collimationPath+CS_XPath_NS("/aperture/distance/@unit"), "") 
     329        ENDFOR 
    281330 
    282331        // <SASinstrument><SASdetector> might appear multiple times 
     
    288337                        suffix = num2str(i) 
    289338                ENDIF 
    290                 CS_appendMetaData("detector_name"+suffix,       SASdetectorList[i]+CS_XPath_NS("/name"), "") 
    291                 CS_appendMetaData("SDD"+suffix,                         SASdetectorList[i]+CS_XPath_NS("/SDD"), "") 
    292                 CS_appendMetaData("SDD"+suffix+"_unit",                 SASdetectorList[i]+CS_XPath_NS("/SDD/@unit"), "") 
    293                 // ignore <offset> for now 
    294                 // ignore <orientation> for now 
    295                 // ignore <beam_center> for now 
    296                 // ignore <pixel_size> for now 
    297                 CS_appendMetaData("slit_length"+suffix,                 SASdetectorList[i]+CS_XPath_NS("/slit_length"), "") 
    298                 CS_appendMetaData("slitLength"+suffix+"_unit",  SASdetectorList[i]+CS_XPath_NS("/slit_length/@unit"), "") 
     339                detectorPath = CS_correctedXpathStr(SASdetectorList[i]) 
     340                CS_appendMetaData("detector_name"+suffix,       detectorPath+CS_XPath_NS("/name"), "") 
     341                CS_appendMetaData("SDD"+suffix,                         detectorPath+CS_XPath_NS("/SDD"), "") 
     342                CS_appendMetaData("SDD"+suffix+"_unit",                 detectorPath+CS_XPath_NS("/SDD/@unit"), "") 
     343                CS_appendMetaData("detector_offset_name"+suffix,        detectorPath+CS_XPath_NS("/offset/@name"), "") 
     344                CS_appendMetaData("detector_offset_x"+suffix,           detectorPath+CS_XPath_NS("/offset/x"), "") 
     345                CS_appendMetaData("detector_offset_x_unit"+suffix,      detectorPath+CS_XPath_NS("/offset/x/@unit"), "") 
     346                CS_appendMetaData("detector_offset_y"+suffix,           detectorPath+CS_XPath_NS("/offset/y"), "") 
     347                CS_appendMetaData("detector_offset_y_unit"+suffix,      detectorPath+CS_XPath_NS("/offset/y/@unit"), "") 
     348                CS_appendMetaData("detector_offset_z"+suffix,           detectorPath+CS_XPath_NS("/offset/z"), "") 
     349                CS_appendMetaData("detector_offset_z_unit"+suffix,      detectorPath+CS_XPath_NS("/offset/z/@unit"), "") 
     350 
     351                CS_appendMetaData("detector_orientation_name"+suffix,           detectorPath+CS_XPath_NS("/orientation/@name"), "") 
     352                CS_appendMetaData("detector_orientation_roll"+suffix,           detectorPath+CS_XPath_NS("/orientation/roll"), "") 
     353                CS_appendMetaData("detector_orientation_roll_unit"+suffix,      detectorPath+CS_XPath_NS("/orientation/roll/@unit"), "") 
     354                CS_appendMetaData("detector_orientation_pitch"+suffix,          detectorPath+CS_XPath_NS("/orientation/pitch"), "") 
     355                CS_appendMetaData("detector_orientation_pitch_unit"+suffix,     detectorPath+CS_XPath_NS("/orientation/pitch/@unit"), "") 
     356                CS_appendMetaData("detector_orientation_yaw"+suffix,            detectorPath+CS_XPath_NS("/orientation/yaw"), "") 
     357                CS_appendMetaData("detector_orientation_yaw_unit"+suffix,       detectorPath+CS_XPath_NS("/orientation/yaw/@unit"), "") 
     358 
     359                CS_appendMetaData("detector_beam_center_name"+suffix,   detectorPath+CS_XPath_NS("/beam_center/@name"), "") 
     360                CS_appendMetaData("detector_beam_center_x"+suffix,              detectorPath+CS_XPath_NS("/beam_center/x"), "") 
     361                CS_appendMetaData("detector_beam_center_x_unit"+suffix,         detectorPath+CS_XPath_NS("/beam_center/x/@unit"), "") 
     362                CS_appendMetaData("detector_beam_center_y"+suffix,              detectorPath+CS_XPath_NS("/beam_center/y"), "") 
     363                CS_appendMetaData("detector_beam_center_y_unit"+suffix,         detectorPath+CS_XPath_NS("/beam_center/y/@unit"), "") 
     364                CS_appendMetaData("detector_beam_center_z"+suffix,              detectorPath+CS_XPath_NS("/beam_center/z"), "") 
     365                CS_appendMetaData("detector_beam_center_z_unit"+suffix,         detectorPath+CS_XPath_NS("/beam_center/z/@unit"), "") 
     366 
     367                CS_appendMetaData("detector_pixel_size_name"+suffix,    detectorPath+CS_XPath_NS("/pixel_size/@name"), "") 
     368                CS_appendMetaData("detector_pixel_size_x"+suffix,               detectorPath+CS_XPath_NS("/pixel_size/x"), "") 
     369                CS_appendMetaData("detector_pixel_size_x_unit"+suffix,  detectorPath+CS_XPath_NS("/pixel_size/x/@unit"), "") 
     370                CS_appendMetaData("detector_pixel_size_y"+suffix,               detectorPath+CS_XPath_NS("/pixel_size/y"), "") 
     371                CS_appendMetaData("detector_pixel_size_y_unit"+suffix,  detectorPath+CS_XPath_NS("/pixel_size/y/@unit"), "") 
     372                CS_appendMetaData("detector_pixel_size_z"+suffix,               detectorPath+CS_XPath_NS("/pixel_size/z"), "") 
     373                CS_appendMetaData("detector_pixel_size_z_unit"+suffix,  detectorPath+CS_XPath_NS("/pixel_size/z/@unit"), "") 
     374 
     375                CS_appendMetaData("slit_length"+suffix,                 detectorPath+CS_XPath_NS("/slit_length"), "") 
     376                CS_appendMetaData("slitLength"+suffix+"_unit",  detectorPath+CS_XPath_NS("/slit_length/@unit"), "") 
    299377        ENDFOR 
    300378 
     
    309387                        suffix = num2str(i) 
    310388                ENDIF 
    311                 CS_appendMetaData("SASnote"+suffix+"_name",     SASnoteList[i]+CS_XPath_NS("/@name"), "") 
    312                 CS_appendMetaData("SASnote"+suffix,                             SASnoteList[i], "") 
    313         ENDFOR 
    314  
     389                notePath = CS_correctedXpathStr(SASnoteList[i]) 
     390                CS_appendMetaData("SASnote"+suffix+"_name",     notePath+CS_XPath_NS("/@name"), "") 
     391                CS_appendMetaData("SASnote"+suffix,                             notePath, "") 
     392        ENDFOR 
     393        //CS_1i_fillMetadataTable(fileID) 
     394END 
     395 
     396// ================================================================== 
     397 
     398FUNCTION/S CS_1i_fillMetadataTable(fileID) 
     399        VARIABLE fileID 
     400        WAVE/T metadata 
     401        VARIABLE i 
     402        STRING value 
    315403        // +++++++++++++++++++++++++                    // try to fill the value column from the XML data 
    316404        FOR (i = 0; i < DimSize(metadata, 0); i += 1) 
     
    771859        fList = AddListItem("test.xml",                                 fList, ";", Inf)                // cs_collagen.xml with no namespace 
    772860        fList = AddListItem("test2.xml",                                fList, ";", Inf)                // version 2.0 file (no standard yet) 
     861        fList = AddListItem("ISIS_SANS_Example.xml",    fList, ";", Inf)                // from S. King, 2008-03-17 
     862        fList = AddListItem("W1W2.xml",                                 fList, ";", Inf)                // from S. King, 2008-03-17 
    773863        fList = AddListItem("ill_sasxml_example.xml",   fList, ";", Inf)                // from canSAS 2007 meeting, reformatted 
    774864        fList = AddListItem("isis_sasxml_example.xml",  fList, ";", Inf)                // from canSAS 2007 meeting, reformatted 
     
    778868        fList = AddListItem("cs_collagen_full.xml",             fList, ";", Inf)                // more Q range than previous 
    779869        fList = AddListItem("cs_af1410.xml",                    fList, ";", Inf)                // multiple SASentry and SASdata elements 
    780         fList = AddListItem("1998spheres.xml",                  fList, ";", Inf)                // 2 SASentry, few thousand data points each 
     870        //fList = AddListItem("1998spheres.xml",                        fList, ";", Inf)                // 2 SASentry, few thousand data points each 
    781871        fList = AddListItem("does-not-exist-file.xml",          fList, ";", Inf)                // non-existent file 
    782872        // try to load each data set in the table 
     
    791881        ENDFOR 
    792882END 
    793  
    794 // ================================================================== 
    795  
    796 FUNCTION PRJ_quick(fileID) 
    797         VARIABLE fileID 
    798         WAVE/T W_ElementList, W_listXPath 
    799         SVAR nsStr 
    800  
    801         XMLlistXpath(fileID, "/cs:SASroot/cs:SASentry/cs:Title", nsStr)         // output: W_listXPath 
    802         print W_listXPath[0] 
    803         XMLlistXpath(fileID, "//cs:Idata[4]", nsStr)            // output: W_listXPath 
    804         print W_listXPath[0] 
    805         XMLlistXpath(fileID, "//cs:Idata*", nsStr)              // output: W_listXPath 
    806         print W_listXPath[0] 
    807         XMLlistXpath(fileID, "//cs:Idata", nsStr)               // output: W_listXPath 
    808         print W_listXPath[0] 
    809         XMLlistXpath(fileID, "/cs:SASroot/cs:SASentry/cs:SASdata/cs:Idata[4]", nsStr)           // output: W_listXPath 
    810         print W_listXPath[0] 
    811         XMLlistXpath(fileID, "/*/@*", "")               // output: W_listXPath 
    812         print W_listXPath[0] 
    813         PRINT TrimWS(XmlStrFmXpath(fileID, "/*/@version", "", "")) 
    814         PRINT TrimWS(XmlStrFmXpath(fileID, "/*/@xmlns", "", "")) 
    815         PRINT StringByKey("schemaLocation", W_ElementList[0][2]) 
    816  
    817         //CS_simpleXmlListXpath(fileID, "", "/SASroot//SASentry") 
    818         //WAVE/T        W_listXPath 
    819         //DUPLICATE/O/T   W_listXPath, SASentryList 
    820  
    821         //<SASroot version="1.0" 
    822         //      xmlns="http://www.smallangles.net/cansas1d" 
    823         //      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    824         //      xsi:schemaLocation="http://www.smallangles.net/cansas1d/ http://www.smallangles.net/cansas1d/1.0/cansas1d.xsd" 
    825         //      > 
    826  
    827  
    828 END 
  • 1dwg/trunk/IgorPro/cs_af1410.xml

    r7 r17  
    11351135  <SASentry name="AF1410:20"> 
    11361136    <Title>AF1410-20 (AF1410 steel aged 20 h)</Title> 
    1137     <Run name="AF1410-a20">nuclear sector</Run> 
     1137    <!--<Run name="AF1410-a20">nuclear sector</Run>--> 
    11381138    <Run name="AF1410-b20">nuclear+magnetic sector</Run> 
    11391139    <!-- missing  SASdata name="AF1410-a20" / --> 
  • 1dwg/trunk/example.xsl

    r15 r17  
    1010 
    1111        <xsl:template match="/"> 
     12<!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" --> 
    1213                <html> 
    1314                        <head> 
     
    3334                                                                <th bgcolor="lavender">SASentry-<xsl:value-of select="position()" /></th> 
    3435                                                                <td> 
    35                                                                         <A HREF="#SASentry-{generate-id(.)}"> 
     36                                                                        <a href="#SASentry-{generate-id(.)}"> 
    3637                                                                                <xsl:if test="@name!=''"> 
    3738                                                                                        (<xsl:value-of select="@name" />) 
    3839                                                                                </xsl:if> 
    3940                                                                                <xsl:value-of select="cs:Title" /> 
    40                                                                         </A> 
     41                                                                        </a> 
    4142                                                                        <xsl:if test="count(cs:SASdata)>1"> 
    4243                                                                                <!-- if more than one SASdata, make a local table of contents --> 
    4344                                                                                <xsl:for-each select="cs:SASdata"> 
    4445                                                                                        <xsl:text> | </xsl:text> 
    45                                                                                         <A HREF="#SASdata-{generate-id(.)}"> 
     46                                                                                        <a href="#SASdata-{generate-id(.)}"> 
    4647                                                                                                <xsl:choose> 
     48                                                                                                        <xsl:when test="cs:name!=''"> 
     49                                                                                                                <xsl:value-of select="cs:name" /> 
     50                                                                                                        </xsl:when> 
    4751                                                                                                        <xsl:when test="@name!=''"> 
    4852                                                                                                                <xsl:value-of select="@name" /> 
     
    5256                                                                                                        </xsl:otherwise> 
    5357                                                                                                </xsl:choose> 
    54                                                                                         </A> 
     58                                                                                        </a> 
    5559                                                                                </xsl:for-each> 
    5660                                                                        </xsl:if> 
     
    7074                        <hr /> 
    7175                        <br /> 
    72                         <A NAME="#SASentry-{generate-id(.)}" /> 
     76                        <a id="#SASentry-{generate-id(.)}"  name="#SASentry-{generate-id(.)}" /> 
    7377                        <h1> 
    7478                                        SASentry<xsl:value-of select="position()" />: 
     
    7983                        </h1> 
    8084                        <xsl:if test="count(cs:SASdata)>1"> 
    81                                 <TABLE BORDER="2"> 
    82                                         <CAPTION>SASdata contents</CAPTION> 
     85                                <table border="2"> 
     86                                        <caption>SASdata contents</caption> 
    8387                                        <xsl:for-each select="cs:SASdata"> 
    84                                                 <TR> 
    85                                                         <TH>SASdata-<xsl:value-of select="position()" /></TH> 
    86                                                         <TD> 
    87                                                                 <A HREF="#SASdata-{generate-id(.)}"> 
     88                                                <tr> 
     89                                                        <th>SASdata-<xsl:value-of select="position()" /></th> 
     90                                                        <td> 
     91                                                                <a href="#SASdata-{generate-id(.)}"> 
    8892                                                                        <xsl:choose> 
    8993                                                                        <xsl:when test="@name!=''"> 
     
    9498                                                                                </xsl:otherwise> 
    9599                                                                        </xsl:choose> 
    96                                                                 </A> 
    97                                                         </TD> 
    98                                                 </TR> 
     100                                                                </a> 
     101                                                        </td> 
     102                                                </tr> 
    99103                                        </xsl:for-each> 
    100                                 </TABLE> 
     104                                </table> 
    101105                        </xsl:if> 
    102106                        <br /> 
    103                         <TABLE BORDER="2"> 
    104                                 <TR> 
    105                                         <TH>SAS data</TH> 
    106                                         <TH>Selected Metadata</TH> 
    107                                 </TR> 
    108                                 <TR> 
    109                                         <TD valign="top"><xsl:apply-templates  select="cs:SASdata" /></TD> 
    110                                         <TD valign="top"> 
    111                                                 <TABLE BORDER="2"> 
    112                                                         <TR bgcolor="lavender"> 
    113                                                                 <TH>name</TH> 
    114                                                                 <TH>value</TH> 
    115                                                                 <TH>unit</TH> 
    116                                                         </TR> 
    117                                                         <TR> 
    118                                                                 <TD>Title</TD> 
    119                                                                 <TD><xsl:value-of select="cs:Title" /></TD> 
    120                                                                 <TD /> 
    121                                                         </TR> 
    122                                                         <TR> 
    123                                                                 <TD>Run</TD> 
    124                                                                 <TD><xsl:value-of select="cs:Run" /></TD> 
    125                                                                 <TD /> 
    126                                                         </TR> 
    127                                                         <TR><xsl:apply-templates  select="run" /></TR> 
     107                        <table border="2"> 
     108                                <tr> 
     109                                        <th>SAS data</th> 
     110                                        <th>Selected Metadata</th> 
     111                                </tr> 
     112                                <tr> 
     113                                        <td valign="top"><xsl:apply-templates  select="cs:SASdata" /></td> 
     114                                        <td valign="top"> 
     115                                                <table border="2"> 
     116                                                        <tr bgcolor="lavender"> 
     117                                                                <th>name</th> 
     118                                                                <th>value</th> 
     119                                                                <th>unit</th> 
     120                                                        </tr> 
     121                                                        <tr> 
     122                                                                <td>Title</td> 
     123                                                                <td><xsl:value-of select="cs:Title" /></td> 
     124                                                                <td /> 
     125                                                        </tr> 
     126                                                        <tr> 
     127                                                                <td>Run</td> 
     128                                                                <td><xsl:value-of select="cs:Run" /></td> 
     129                                                                <td /> 
     130                                                        </tr> 
     131                                                        <tr><xsl:apply-templates  select="run" /></tr> 
    128132                                                        <xsl:apply-templates  select="cs:SASsample" /> 
    129133                                                        <xsl:apply-templates  select="cs:SASinstrument" /> 
    130134                                                        <xsl:apply-templates  select="cs:SASprocess" /> 
    131135                                                        <xsl:apply-templates  select="cs:SASnote" /> 
    132                                                 </TABLE> 
    133                                         </TD> 
    134                                 </TR> 
    135                         </TABLE> 
     136                                                </table> 
     137                                        </td> 
     138                                </tr> 
     139                        </table> 
    136140                </xsl:for-each> 
    137141        </xsl:template> 
    138142 
    139143        <xsl:template match="cs:SASdata"> 
    140                 <A NAME="#SASdata-{generate-id(.)}" /> 
     144                <a id="#SASdata-{generate-id(.)}"  name="#SASdata-{generate-id(.)}" /> 
    141145                <table border="2"> 
    142146                        <caption> 
     
    167171 
    168172        <xsl:template match="cs:SASsample"> 
    169                 <TR> 
    170                         <TD>SASsample</TD> 
    171                         <TD><xsl:value-of select="@name" /></TD> 
    172                         <TD /> 
    173                 </TR> 
     173                <tr> 
     174                        <td>SASsample</td> 
     175                        <td><xsl:value-of select="@name" /></td> 
     176                        <td /> 
     177                </tr> 
    174178                <xsl:for-each select="*"> 
    175179                        <xsl:choose> 
     
    181185                                </xsl:when> 
    182186                                <xsl:otherwise> 
    183                                         <TR> 
    184                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    185                                                 <TD><xsl:value-of select="." /></TD> 
    186                                                 <TD><xsl:value-of select="@unit" /></TD> 
    187                                         </TR> 
     187                                        <tr> 
     188                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     189                                                <td><xsl:value-of select="." /></td> 
     190                                                <td><xsl:value-of select="@unit" /></td> 
     191                                        </tr> 
    188192                                </xsl:otherwise> 
    189193                        </xsl:choose> 
     
    192196 
    193197        <xsl:template match="cs:SASinstrument"> 
    194                 <TR> 
    195                         <TD>SASinstrument</TD> 
    196                         <TD><xsl:value-of select="cs:name" /></TD> 
    197                         <TD><xsl:value-of select="@name" /></TD> 
    198                 </TR> 
     198                <tr> 
     199                        <td>SASinstrument</td> 
     200                        <td><xsl:value-of select="cs:name" /></td> 
     201                        <td><xsl:value-of select="@name" /></td> 
     202                </tr> 
    199203                <xsl:for-each select="*"> 
    200204                        <xsl:choose> 
     
    204208                                <xsl:when test="name()='name'" /> 
    205209                                <xsl:otherwise> 
    206                                         <TR> 
    207                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    208                                                 <TD><xsl:value-of select="." /></TD> 
    209                                                 <TD><xsl:value-of select="@unit" /></TD> 
    210                                         </TR> 
     210                                        <tr> 
     211                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     212                                                <td><xsl:value-of select="." /></td> 
     213                                                <td><xsl:value-of select="@unit" /></td> 
     214                                        </tr> 
    211215                                </xsl:otherwise> 
    212216                        </xsl:choose> 
     
    215219 
    216220        <xsl:template match="cs:SASsource"> 
    217                 <TR> 
    218                         <TD><xsl:value-of select="name()" /></TD> 
    219                         <TD><xsl:value-of select="@name" /></TD> 
    220                         <TD /> 
    221                 </TR> 
     221                <tr> 
     222                        <td><xsl:value-of select="name()" /></td> 
     223                        <td><xsl:value-of select="@name" /></td> 
     224                        <td /> 
     225                </tr> 
    222226                <xsl:for-each select="*"> 
    223227                        <xsl:choose> 
    224228                                <xsl:when test="name()='beam_size'"><xsl:apply-templates select="." /></xsl:when> 
    225229                                <xsl:otherwise> 
    226                                         <TR> 
    227                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    228                                                 <TD><xsl:value-of select="." /></TD> 
    229                                                 <TD><xsl:value-of select="@unit" /></TD> 
    230                                         </TR> 
     230                                        <tr> 
     231                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     232                                                <td><xsl:value-of select="." /></td> 
     233                                                <td><xsl:value-of select="@unit" /></td> 
     234                                        </tr> 
    231235                                </xsl:otherwise> 
    232236                        </xsl:choose> 
     
    235239 
    236240        <xsl:template match="cs:beam_size"> 
    237                 <TR> 
    238                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    239                         <TD><xsl:value-of select="@name" /></TD> 
    240                         <TD /> 
    241                 </TR> 
    242                 <xsl:for-each select="*"> 
    243                         <TR> 
    244                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    245                                 <TD><xsl:value-of select="." /></TD> 
    246                                 <TD><xsl:value-of select="@unit" /></TD> 
    247                         </TR> 
     241                <tr> 
     242                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     243                        <td><xsl:value-of select="@name" /></td> 
     244                        <td /> 
     245                </tr> 
     246                <xsl:for-each select="*"> 
     247                        <tr> 
     248                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     249                                <td><xsl:value-of select="." /></td> 
     250                                <td><xsl:value-of select="@unit" /></td> 
     251                        </tr> 
    248252                </xsl:for-each> 
    249253        </xsl:template> 
     
    254258                                <xsl:when test="name()='aperture'"><xsl:apply-templates select="." /></xsl:when> 
    255259                                <xsl:otherwise> 
    256                                         <TR> 
    257                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    258                                                 <TD><xsl:value-of select="." /></TD> 
    259                                                 <TD><xsl:value-of select="@unit" /></TD> 
    260                                         </TR> 
     260                                        <tr> 
     261                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     262                                                <td><xsl:value-of select="." /></td> 
     263                                                <td><xsl:value-of select="@unit" /></td> 
     264                                        </tr> 
    261265                                </xsl:otherwise> 
    262266                        </xsl:choose> 
     
    265269 
    266270        <xsl:template match="cs:aperture"> 
    267                 <TR> 
    268                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    269                         <TD><xsl:value-of select="@name" /></TD> 
    270                         <TD><xsl:value-of select="@type" /></TD> 
    271                 </TR> 
     271                <tr> 
     272                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     273                        <td><xsl:value-of select="@name" /></td> 
     274                        <td><xsl:value-of select="@type" /></td> 
     275                </tr> 
    272276                <xsl:for-each select="*"> 
    273277                        <xsl:choose> 
    274278                                <xsl:when test="name()='size'"><xsl:apply-templates select="." /></xsl:when> 
    275279                                <xsl:otherwise> 
    276                                         <TR> 
    277                                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    278                                                 <TD><xsl:value-of select="." /></TD> 
    279                                                 <TD><xsl:value-of select="@unit" /></TD> 
    280                                         </TR> 
     280                                        <tr> 
     281                                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     282                                                <td><xsl:value-of select="." /></td> 
     283                                                <td><xsl:value-of select="@unit" /></td> 
     284                                        </tr> 
    281285                                </xsl:otherwise> 
    282286                        </xsl:choose> 
     
    285289 
    286290        <xsl:template match="cs:size"> 
    287                 <TR> 
    288                         <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    289                         <TD><xsl:value-of select="@name" /></TD> 
    290                         <TD /> 
    291                 </TR> 
    292                 <xsl:for-each select="*"> 
    293                         <TR> 
    294                                 <TD><xsl:value-of select="name(../../..)" />_<xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    295                                 <TD><xsl:value-of select="." /></TD> 
    296                                 <TD><xsl:value-of select="@unit" /></TD> 
    297                         </TR> 
     291                <tr> 
     292                        <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     293                        <td><xsl:value-of select="@name" /></td> 
     294                        <td /> 
     295                </tr> 
     296                <xsl:for-each select="*"> 
     297                        <tr> 
     298                                <td><xsl:value-of select="name(../../..)" />_<xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     299                                <td><xsl:value-of select="." /></td> 
     300                                <td><xsl:value-of select="@unit" /></td> 
     301                        </tr> 
    298302                </xsl:for-each> 
    299303        </xsl:template> 
    300304 
    301305        <xsl:template match="cs:SASdetector"> 
    302                 <TR> 
    303                         <TD><xsl:value-of select="name()" /></TD> 
    304                         <TD><xsl:value-of select="cs:name" /></TD> 
    305                         <TD><xsl:value-of select="@name" /></TD> 
    306                 </TR> 
     306                <tr> 
     307                        <td><xsl:value-of select="name()" /></td> 
     308                        <td><xsl:value-of select="cs:name" /></td> 
     309                        <td><xsl:value-of select="@name" /></td> 
     310                </tr> 
    307311                <xsl:for-each select="*"> 
    308312                        <xsl:choose> 
     
    313317                                <xsl:when test="name()='pixel_size'"><xsl:apply-templates select="." /></xsl:when> 
    314318                                <xsl:otherwise> 
    315                                         <TR> 
    316                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    317                                                 <TD><xsl:value-of select="." /></TD> 
    318                                                 <TD><xsl:value-of select="@unit" /></TD> 
    319                                         </TR> 
     319                                        <tr> 
     320                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     321                                                <td><xsl:value-of select="." /></td> 
     322                                                <td><xsl:value-of select="@unit" /></td> 
     323                                        </tr> 
    320324                                </xsl:otherwise> 
    321325                        </xsl:choose> 
     
    324328 
    325329        <xsl:template match="cs:orientation"> 
    326                 <TR> 
    327                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    328                         <TD><xsl:value-of select="@name" /></TD> 
    329                         <TD /> 
    330                 </TR> 
    331                 <xsl:for-each select="*"> 
    332                         <TR> 
    333                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    334                                 <TD><xsl:value-of select="." /></TD> 
    335                                 <TD><xsl:value-of select="@unit" /></TD> 
    336                         </TR> 
     330                <tr> 
     331                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     332                        <td><xsl:value-of select="@name" /></td> 
     333                        <td /> 
     334                </tr> 
     335                <xsl:for-each select="*"> 
     336                        <tr> 
     337                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     338                                <td><xsl:value-of select="." /></td> 
     339                                <td><xsl:value-of select="@unit" /></td> 
     340                        </tr> 
    337341                </xsl:for-each> 
    338342        </xsl:template> 
    339343 
    340344        <xsl:template match="cs:position"> 
    341                 <TR> 
    342                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    343                         <TD><xsl:value-of select="@name" /></TD> 
    344                         <TD /> 
    345                 </TR> 
    346                 <xsl:for-each select="*"> 
    347                         <TR> 
    348                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    349                                 <TD><xsl:value-of select="." /></TD> 
    350                                 <TD><xsl:value-of select="@unit" /></TD> 
    351                         </TR> 
     345                <tr> 
     346                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     347                        <td><xsl:value-of select="@name" /></td> 
     348                        <td /> 
     349                </tr> 
     350                <xsl:for-each select="*"> 
     351                        <tr> 
     352                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     353                                <td><xsl:value-of select="." /></td> 
     354                                <td><xsl:value-of select="@unit" /></td> 
     355                        </tr> 
    352356                </xsl:for-each> 
    353357        </xsl:template> 
    354358 
    355359        <xsl:template match="cs:offset"> 
    356                 <TR> 
    357                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    358                         <TD><xsl:value-of select="@name" /></TD> 
    359                         <TD /> 
    360                 </TR> 
    361                 <xsl:for-each select="*"> 
    362                         <TR> 
    363                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    364                                 <TD><xsl:value-of select="." /></TD> 
    365                                 <TD><xsl:value-of select="@unit" /></TD> 
    366                         </TR> 
     360                <tr> 
     361                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     362                        <td><xsl:value-of select="@name" /></td> 
     363                        <td /> 
     364                </tr> 
     365                <xsl:for-each select="*"> 
     366                        <tr> 
     367                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     368                                <td><xsl:value-of select="." /></td> 
     369                                <td><xsl:value-of select="@unit" /></td> 
     370                        </tr> 
    367371                </xsl:for-each> 
    368372        </xsl:template> 
    369373 
    370374        <xsl:template match="cs:beam_center"> 
    371                 <TR> 
    372                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    373                         <TD><xsl:value-of select="@name" /></TD> 
    374                         <TD /> 
    375                 </TR> 
    376                 <xsl:for-each select="*"> 
    377                         <TR> 
    378                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    379                                 <TD><xsl:value-of select="." /></TD> 
    380                                 <TD><xsl:value-of select="@unit" /></TD> 
    381                         </TR> 
     375                <tr> 
     376                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     377                        <td><xsl:value-of select="@name" /></td> 
     378                        <td /> 
     379                </tr> 
     380                <xsl:for-each select="*"> 
     381                        <tr> 
     382                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     383                                <td><xsl:value-of select="." /></td> 
     384                                <td><xsl:value-of select="@unit" /></td> 
     385                        </tr> 
    382386                </xsl:for-each> 
    383387        </xsl:template> 
    384388 
    385389        <xsl:template match="cs:pixel_size"> 
    386                 <TR> 
    387                         <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    388                         <TD><xsl:value-of select="@name" /></TD> 
    389                         <TD /> 
    390                 </TR> 
    391                 <xsl:for-each select="*"> 
    392                         <TR> 
    393                                 <TD><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    394                                 <TD><xsl:value-of select="." /></TD> 
    395                                 <TD><xsl:value-of select="@unit" /></TD> 
    396                         </TR> 
     390                <tr> 
     391                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     392                        <td><xsl:value-of select="@name" /></td> 
     393                        <td /> 
     394                </tr> 
     395                <xsl:for-each select="*"> 
     396                        <tr> 
     397                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     398                                <td><xsl:value-of select="." /></td> 
     399                                <td><xsl:value-of select="@unit" /></td> 
     400                        </tr> 
    397401                </xsl:for-each> 
    398402        </xsl:template> 
    399403 
    400404        <xsl:template match="cs:term"> 
    401                 <TR> 
    402                         <TD><xsl:value-of select="@name" /></TD> 
    403                         <TD><xsl:value-of select="." /></TD> 
    404                         <TD><xsl:value-of select="@unit" /></TD> 
    405                 </TR> 
     405                <tr> 
     406                        <td><xsl:value-of select="@name" /></td> 
     407                        <td><xsl:value-of select="." /></td> 
     408                        <td><xsl:value-of select="@unit" /></td> 
     409                </tr> 
    406410        </xsl:template> 
    407411 
    408412        <xsl:template match="cs:SASprocessnote"> 
    409                 <TR> 
    410                         <TD><xsl:value-of select="name()" /></TD> 
    411                         <TD><xsl:value-of select="." /></TD> 
    412                         <TD><xsl:value-of select="@name" /></TD> 
    413                 </TR> 
     413                <tr> 
     414                        <td><xsl:value-of select="name()" /></td> 
     415                        <td><xsl:value-of select="." /></td> 
     416                        <td><xsl:value-of select="@name" /></td> 
     417                </tr> 
    414418        </xsl:template> 
    415419 
    416420        <xsl:template match="cs:SASprocess"> 
    417                 <TR> 
    418                         <TD><xsl:value-of select="name()" /></TD> 
    419                         <TD><xsl:value-of select="cs:name" /></TD> 
    420                         <TD><xsl:value-of select="@name" /></TD> 
    421                 </TR> 
     421                <tr> 
     422                        <td><xsl:value-of select="name()" /></td> 
     423                        <td><xsl:value-of select="cs:name" /></td> 
     424                        <td><xsl:value-of select="@name" /></td> 
     425                </tr> 
    422426                <xsl:for-each select="*"> 
    423427                        <xsl:choose> 
     
    426430                                <xsl:when test="name()='SASprocessnote'"><xsl:apply-templates select="." /></xsl:when> 
    427431                                <xsl:otherwise> 
    428                                         <TR> 
    429                                                 <TD><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></TD> 
    430                                                 <TD><xsl:value-of select="." /></TD> 
    431                                                 <TD /> 
    432                                         </TR> 
     432                                        <tr> 
     433                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td> 
     434                                                <td><xsl:value-of select="." /></td> 
     435                                                <td /> 
     436                                        </tr> 
    433437                                </xsl:otherwise> 
    434438                        </xsl:choose> 
     
    438442        <xsl:template match="cs:SASnote"> 
    439443                <xsl:if test="@name!=''"> 
    440                         <TR> 
    441                                 <TD><xsl:value-of select="name()" /></TD> 
    442                                 <TD><xsl:value-of select="." /></TD> 
    443                                 <TD><xsl:value-of select="@name" /></TD> 
    444                         </TR> 
     444                        <tr> 
     445                                <td><xsl:value-of select="name()" /></td> 
     446                                <td><xsl:value-of select="." /></td> 
     447                                <td><xsl:value-of select="@name" /></td> 
     448                        </tr> 
    445449                </xsl:if> 
    446450        </xsl:template> 
Note: See TracChangeset for help on using the changeset viewer.