-2

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>
4

1 に答える 1