XML と XSLT の新参者として、要件を満たすコードを生成しました。ただし、XSL:template を使用して XSLT を簡素化したいと考えています。テンプレートを使用して以下のコードを実行する方法についてアドバイスをお願いします。
<xsl:variable name="d1">
<xsl:value-of select="ss:Cell[15]/ss:index"/>
<xsl:choose>
<xsl:when test="$d1=16"><XDT_WW2><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW2></xsl:when>
<xsl:when test="$d1=17"><XDT_WW3><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW3></xsl:when>
<xsl:when test="$d1=18"><XDT_WW4><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW4></xsl:when>
<xsl:when test="$d1=19"><XDT_WW5><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW5></xsl:when>
<xsl:when test="$d1=20"><XDT_WW6><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW6></xsl:when>
<xsl:when test="$d1=21"><XDT_WW7><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW7></xsl:when>
<xsl:when test="$d1=22"><XDT_WW8><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW8></xsl:when>
<xsl:when test="$d1=23"><XDT_WW9><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW9></xsl:when>
<xsl:when test="$d1=24"><XDT_WW10><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW10></xsl:when>
<xsl:when test="$d1=25"><XDT_WW11><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW11></xsl:when>
<xsl:when test="$d1=26"><XDT_WW12><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW12></xsl:when>
<xsl:when test="$d1=27"><XDT_WW13><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW13></xsl:when>
<xsl:when test="$d1=28"><XDT_WW14><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW14></xsl:when>
<xsl:when test="$d1=29"><XDT_WW15><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW15></xsl:when>
<xsl:when test="$d1=30"><XDT_WW16><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW16></xsl:when>
<xsl:when test="$d1=31"><XDT_WW17><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW17></xsl:when>
<xsl:when test="$d1=32"><XDT_WW18><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW18></xsl:when>
<xsl:when test="$d1=33"><XDT_WW19><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW19></xsl:when>
<xsl:when test="$d1=34"><XDT_WW20><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW20></xsl:when>
<xsl:when test="$d1=35"><XDT_WW21><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW21></xsl:when>
<xsl:when test="$d1=36"><XDT_WW22><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW22></xsl:when>
<xsl:when test="$d1=37"><XDT_WW23><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW23></xsl:when>
<xsl:when test="$d1=38"><XDT_WW24><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW24></xsl:when>
<xsl:when test="$d1=39"><XDT_WW25><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW25></xsl:when>
<xsl:when test="$d1=40"><XDT_WW26><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW26></xsl:when>
<xsl:when test="$d1=41"><XDT_WW27><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW27></xsl:when>
<xsl:when test="$d1=42"><XDT_WW28><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW28></xsl:when>
<xsl:when test="$d1=43"><XDT_WW29><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW29></xsl:when>
<xsl:when test="$d1=44"><XDT_WW30><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW30></xsl:when>
<xsl:when test="$d1=45"><XDT_WW31><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW31></xsl:when>
<xsl:when test="$d1=46"><XDT_WW32><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW32></xsl:when>
<xsl:when test="$d1=47"><XDT_WW33><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW33></xsl:when>
<xsl:otherwise><XDT_WW1><xsl:value-of select="ss:Cell[15]/ss:Data"/></XDT_WW1></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="d2">
<xsl:value-of select="ss:Cell[16]/ss:index"/>
<xsl:choose>
<xsl:when test="$d2=17"><XDT_WW3><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW3></xsl:when>
<xsl:when test="$d2=18"><XDT_WW4><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW4></xsl:when>
<xsl:when test="$d2=19"><XDT_WW5><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW5></xsl:when>
<xsl:when test="$d2=20"><XDT_WW6><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW6></xsl:when>
<xsl:when test="$d2=21"><XDT_WW7><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW7></xsl:when>
<xsl:when test="$d2=22"><XDT_WW8><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW8></xsl:when>
<xsl:when test="$d2=23"><XDT_WW9><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW9></xsl:when>
<xsl:when test="$d2=24"><XDT_WW10><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW10></xsl:when>
<xsl:when test="$d2=25"><XDT_WW11><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW11></xsl:when>
<xsl:when test="$d2=26"><XDT_WW12><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW12></xsl:when>
<xsl:when test="$d2=27"><XDT_WW13><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW13></xsl:when>
<xsl:when test="$d2=28"><XDT_WW14><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW14></xsl:when>
<xsl:when test="$d2=29"><XDT_WW15><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW15></xsl:when>
<xsl:when test="$d2=30"><XDT_WW16><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW16></xsl:when>
<xsl:when test="$d2=31"><XDT_WW17><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW17></xsl:when>
<xsl:when test="$d2=32"><XDT_WW18><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW18></xsl:when>
<xsl:when test="$d2=33"><XDT_WW19><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW19></xsl:when>
<xsl:when test="$d2=34"><XDT_WW20><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW20></xsl:when>
<xsl:when test="$d2=35"><XDT_WW21><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW21></xsl:when>
<xsl:when test="$d2=36"><XDT_WW22><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW22></xsl:when>
<xsl:when test="$d2=37"><XDT_WW23><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW23></xsl:when>
<xsl:when test="$d2=38"><XDT_WW24><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW24></xsl:when>
<xsl:when test="$d2=39"><XDT_WW25><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW25></xsl:when>
<xsl:when test="$d2=40"><XDT_WW26><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW26></xsl:when>
<xsl:when test="$d2=41"><XDT_WW27><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW27></xsl:when>
<xsl:when test="$d2=42"><XDT_WW28><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW28></xsl:when>
<xsl:when test="$d2=43"><XDT_WW29><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW29></xsl:when>
<xsl:when test="$d2=44"><XDT_WW30><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW30></xsl:when>
<xsl:when test="$d2=45"><XDT_WW31><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW31></xsl:when>
<xsl:when test="$d2=46"><XDT_WW32><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW32></xsl:when>
<xsl:when test="$d2=47"><XDT_WW33><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW33></xsl:when>
<xsl:otherwise><XDT_WW2><xsl:value-of select="ss:Cell[16]/ss:Data"/></XDT_WW2></xsl:otherwise>
</xsl:choose>
</xsl:variable>
...
<xsl:variable name="e">
<xsl:value-of select="ss:Cell[28]/ss:index"/>
<xsl:choose>
<xsl:when test="$e=29"><XDT_WW15><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW15></xsl:when>
<xsl:when test="$e=30"><XDT_WW16><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW16></xsl:when>
<xsl:when test="$e=31"><XDT_WW17><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW17></xsl:when>
<xsl:when test="$e=32"><XDT_WW18><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW18></xsl:when>
<xsl:when test="$e=33"><XDT_WW19><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW19></xsl:when>
<xsl:when test="$e=34"><XDT_WW20><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW20></xsl:when>
<xsl:when test="$e=35"><XDT_WW21><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW21></xsl:when>
<xsl:when test="$e=36"><XDT_WW22><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW22></xsl:when>
<xsl:when test="$e=37"><XDT_WW23><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW23></xsl:when>
<xsl:when test="$e=38"><XDT_WW24><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW24></xsl:when>
<xsl:when test="$e=39"><XDT_WW25><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW25></xsl:when>
<xsl:when test="$e=40"><XDT_WW26><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW26></xsl:when>
<xsl:when test="$e=41"><XDT_WW27><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW27></xsl:when>
<xsl:when test="$e=42"><XDT_WW28><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW28></xsl:when>
<xsl:when test="$e=43"><XDT_WW29><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW29></xsl:when>
<xsl:when test="$e=44"><XDT_WW30><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW30></xsl:when>
<xsl:when test="$e=45"><XDT_WW31><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW31></xsl:when>
<xsl:when test="$e=46"><XDT_WW32><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW32></xsl:when>
<xsl:when test="$e=47"><XDT_WW33><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW33></xsl:when>
<xsl:otherwise><XDT_WW14><xsl:value-of select="ss:Cell[28]/ss:Data"/></XDT_WW14></xsl:otherwise>
</xsl:choose>
</xsl:variable>
コード ロジックは、合計 20 個以上の変数に対して何度も繰り返されます。どんな助けでも大歓迎です。
XML ファイルの抜粋を次に示します。
<?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <LastAuthor>APS_OWNER</LastAuthor> <Created>2013-03-05T07:03:29</Created> <Version>11.6408</Version> </DocumentProperties> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>8445</WindowHeight> <WindowWidth>11115</WindowWidth> <WindowTopX>720</WindowTopX> <WindowTopY>375</WindowTopY> <RefModeR1C1/> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows> </ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal"> <Alignment ss:Vertical="Bottom"/> <Borders/> <Font/> <Interior/> <NumberFormat/> <Protection/> </Style>
<Style ss:ID="ColumnHeader"> <Alignment ss:Vertical="Bottom" ss:Horizontal="Center"/> <Font ss:FontName="Times New Roman" x:Family="Roman" ss:Size="10" ss:Bold="1" ss:Underline="Single"/> <Interior/> <NumberFormat/> </Style>
<Style ss:ID="ColumnHeaderDate"> <Alignment ss:Vertical="Bottom" ss:Horizontal="Center"/> <Font ss:Size="10" ss:Bold="1" ss:Underline="Single"/> <Interior/> <NumberFormat ss:Format="[ENG][$-409]dd\-mmm\-yy;@"/> </Style>
<Style ss:ID="NumberStyleBlueCell"> <Alignment ss:Horizontal="Right"/> <Font/> <Interior ss:Color="Cyan" ss:Pattern="Solid"/> <NumberFormat ss:Format="###,###,###.00"/> </Style>
<Style ss:ID="TextStyleBlueCell"> <Alignment/> <Font/> <Interior ss:Color="Cyan" ss:Pattern="Solid"/> <NumberFormat/> </Style>
<Style ss:ID="NumberStyle"> <Alignment ss:Horizontal="Right"/> <Font/> <Interior/> <NumberFormat ss:Format="#,##0"/> </Style>
<Style ss:ID="NumberStyle2"> <Alignment ss:Horizontal="Right"/> <Font/> <Interior/> <NumberFormat ss:Format="####"/> </Style>
<Style ss:ID="DateStyle"> <Alignment/> <Font/> <Interior/> <NumberFormat ss:Format="[ENG][$-409]dd\-mmm\-yy;@"/> </Style>
<Style ss:ID="ColumnSum"> <Alignment ss:Horizontal="Right"/> <Font ss:Color="Blue"/> <Interior/>
<NumberFormat ss:Format="###,###,###.00"/> </Style>
<Style ss:ID="RowSum"> <Alignment ss:Horizontal="Right"/> <Font ss:Color="Red"/> <Interior/>
<NumberFormat ss:Format="###,###,###.00"/> </Style>
</Styles>
<Worksheet ss:Name="NO_Details_Across">
<Table ss:ExpandedColumnCount="47" ss:ExpandedRowCount="9978" x:FullColumns="1" x:FullRows="1">
<Row>
<Cell><Data ss:Type="String">NO</Data></Cell>
<Cell ss:StyleID="DateStyle"><Data ss:Type="DateTime">2013-03-05T07:03:28</Data></Cell>
<Cell><Data ss:Type="String">NO</Data></Cell>
<Cell><Data ss:Type="String">CNG</Data></Cell>
<Cell><Data ss:Type="String">CNG</Data></Cell>
<Cell><Data ss:Type="String">SAD</Data></Cell>
<Cell><Data ss:Type="String">S039</Data></Cell>
<Cell><Data ss:Type="String">CP4-XS</Data></Cell>
<Cell><Data ss:Type="String">3SK263-5-TG-E</Data></Cell>
<Cell><Data ss:Type="String">3SK263-E-5-ASY</Data></Cell>
<Cell><Data ss:Type="String">3SK263-E-5-WDQ</Data></Cell>
<Cell><Data ss:Type="String">NO PNX</Data></Cell>
<Cell ss:StyleID="NumberStyle"><Data ss:Type="Number">0</Data></Cell>
<Cell ss:StyleID="NumberStyle"><Data ss:Type="Number">468149</Data></Cell>
<Cell ss:Index="16" ss:StyleID="NumberStyle"><Data ss:Type="Number">23280</Data></Cell>
<Cell ss:Index="17" ss:StyleID="NumberStyle"><Data ss:Type="Number">23280</Data></Cell>
<Cell ss:Index="18" ss:StyleID="NumberStyle"><Data ss:Type="Number">23280</Data></Cell>
<Cell ss:Index="19" ss:StyleID="NumberStyle"><Data ss:Type="Number">46560</Data></Cell>
<Cell ss:Index="20" ss:StyleID="NumberStyle"><Data ss:Type="Number">46560</Data></Cell>
<Cell ss:Index="25" ss:StyleID="NumberStyle"><Data ss:Type="Number">69840</Data></Cell>
<Cell ss:Index="26" ss:StyleID="NumberStyle"><Data ss:Type="Number">93120</Data></Cell>
<Cell ss:Index="27" ss:StyleID="NumberStyle"><Data ss:Type="Number">69840</Data></Cell>
<Cell ss:Index="28" ss:StyleID="NumberStyle"><Data ss:Type="Number">93120</Data></Cell>
<Cell ss:Index="29" ss:StyleID="NumberStyle"><Data ss:Type="Number">116400</Data> </Cell>
<Cell ss:Index="30" ss:StyleID="NumberStyle"><Data ss:Type="Number">116400</Data></Cell>
<Cell ss:Index="31" ss:StyleID="NumberStyle"><Data ss:Type="Number">116400</Data> </Cell>
<Cell ss:Index="32" ss:StyleID="NumberStyle"><Data ss:Type="Number">116399</Data></Cell>
<Cell ss:Index="33" ss:StyleID="NumberStyle"><Data ss:Type="Number">139679</Data></Cell>
<Cell ss:Index="34" ss:StyleID="NumberStyle"><Data ss:Type="Number">116399</Data></Cell>
<Cell ss:Index="35" ss:StyleID="NumberStyle"><Data ss:Type="Number">139680</Data></Cell>
<Cell ss:Index="37" ss:StyleID="NumberStyle"><Data ss:Type="Number">93120</Data></Cell>
<Cell ss:Index="38" ss:StyleID="NumberStyle"><Data ss:Type="Number">116400</Data></Cell>
<Cell ss:Index="39" ss:StyleID="NumberStyle"><Data ss:Type="Number">93120</Data></Cell>
<Cell ss:Index="40" ss:StyleID="NumberStyle"><Data ss:Type="Number">93120</Data></Cell>
<Cell ss:Index="41" ss:StyleID="NumberStyle"><Data ss:Type="Number">116400</Data></Cell>
<Cell ss:Index="44" ss:StyleID="NumberStyle"><Data ss:Type="Number">69840</Data></Cell>
<Cell ss:Index="45" ss:StyleID="NumberStyle"><Data ss:Type="Number">419040</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>