2017-04-21 18 views
0

docxドキュメントにあるテーブルを変換したいのですが、同じ方法でテーブル内に要素を配置する方法は分かりません。WordでのDOCXテーブル変換

私はこのように要素を注文すると、行とcoluを作成する方法を知りたい enter image description here

<xsl:template match="/"> 
    <html> 
     <head> 
      <title/> 
     </head> 
     <body> 
      <table width="400" cellpadding="1" border="1"> 


       <tbody> 
       <tr> 
        <td> <xsl:apply-templates select="w:document/w:body/w:tbl"/></td> 
       </tr> 

      </tbody> 
      </table> 
     </body> 
    </html> 
</xsl:template> 

所望の結果は次のとおりです。

<w:tbl> 
     <w:tblPr> 
      <w:tblStyle w:val="TableGrid"/> 
      <w:tblW w:w="0" w:type="auto"/> 
      <w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/> 
     </w:tblPr> 
     <w:tblGrid> 
      <w:gridCol w:w="950"/> 
      <w:gridCol w:w="1631"/> 
      <w:gridCol w:w="963"/> 
      <w:gridCol w:w="736"/> 
      <w:gridCol w:w="950"/> 
      <w:gridCol w:w="924"/> 
      <w:gridCol w:w="883"/> 
      <w:gridCol w:w="1685"/> 
     </w:tblGrid> 
     <w:tr w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidTr="006623B3"> 
      <w:tc> 
       <w:tcPr> 
        <w:tcW w:w="0" w:type="auto"/> 
       </w:tcPr> 
       <w:p w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidRDefault="00090366" w:rsidP="0031172A"> 
        <w:pPr> 
         <w:spacing w:line="360" w:lineRule="auto"/> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
        </w:pPr> 
       </w:p> 
      </w:tc> 
      <w:tc> 
       <w:tcPr> 
        <w:tcW w:w="0" w:type="auto"/> 
       </w:tcPr> 
       <w:p w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidRDefault="00090366" w:rsidP="0031172A"> 
        <w:pPr> 
         <w:spacing w:line="360" w:lineRule="auto"/> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
        </w:pPr> 
       </w:p> 
      </w:tc> 
      <w:tc> 
       <w:tcPr> 
        <w:tcW w:w="0" w:type="auto"/> 
        <w:gridSpan w:val="6"/> 
       </w:tcPr> 
       <w:p w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidRDefault="00090366" w:rsidP="00433BB0"> 
        <w:pPr> 
         <w:spacing w:line="360" w:lineRule="auto"/> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
        </w:pPr> 
        <w:r w:rsidRPr="001509B0"> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:b/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
         <w:t>ABC</w:t> 
        </w:r> 
       </w:p> 
      </w:tc> 
     </w:tr> 
     <w:tr w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidTr="006623B3"> 
      <w:tc> 
       <w:tcPr> 
        <w:tcW w:w="0" w:type="auto"/> 
        <w:gridSpan w:val="2"/> 
       </w:tcPr> 
       <w:p w:rsidR="00090366" w:rsidRPr="001509B0" w:rsidRDefault="00FC507E" w:rsidP="0031172A"> 
        <w:pPr> 
         <w:spacing w:line="360" w:lineRule="auto"/> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
        </w:pPr> 
        <w:proofErr w:type="spellStart"/> 
        <w:r> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
         <w:t>Burak</w:t> 
        </w:r> 
        <w:proofErr w:type="spellEnd"/> 
        <w:r> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
         <w:t xml:space="preserve"> </w:t> 
        </w:r> 
        <w:proofErr w:type="spellStart"/> 
        <w:r> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
         <w:t>Kilic</w:t> 
         </w:r> 
        <w:proofErr w:type="spellEnd"/> 
        <w:r w:rsidR="00090366" w:rsidRPr="001509B0"> 
         <w:rPr> 
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/> 
          <w:sz w:val="24"/> 
          <w:szCs w:val="24"/> 
         </w:rPr> 
         <w:t xml:space="preserve"> </w:t> 
        </w:r> 
       </w:p> 
      </w:tc> 
      </w:tr> 
      </w:tbl> 

これが私の基本的なXSLTですこれは同じようにする必要はありませんが、私はちょうどアイデアが必要ですが、XSLT 2.0でそれを行う方法が必要です

答えて

1

現在、w:tbl要素を選択しています。 <table>タグ。

入力サンプルを見ると、w:tr要素は表の行に対応し、w:tcは表のセルに対応するため、テンプレートを選択して一致させる必要があります。

は、コードがcolspan属性をどのように処理するかスターター

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:w="w"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title/> 
      </head> 
      <body> 
       <xsl:apply-templates select="//w:tbl"/> 

      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="w:tbl"> 
     <table width="400" cellpadding="1" border="1"> 
      <tbody> 
       <xsl:apply-templates select="w:tr"/> 
      </tbody> 
     </table> 
    </xsl:template> 

    <xsl:template match="w:tr"> 
     <tr> 
      <xsl:apply-templates select="w:tc"/> 
     </tr> 
    </xsl:template> 

    <xsl:template match="w:tc"> 
     <td> 
      <xsl:if test="w:tcPr/w:gridSpan"> 
       <xsl:attribute name="colspan" select="w:tcPr/w:gridSpan/@w:val" /> 
      </xsl:if> 
      <xsl:value-of select=".//w:t" separator="" /> 
     </td> 
    </xsl:template> 
</xsl:stylesheet> 

注意として、このXSLTを試してみてください。 rowspan属性を作成するための同様の条件を追加する必要があります(現在のXMLサンプルは省略されており、行にはスパンは含まれていませんが、出力にはいくつかの意味があります)。

+0

ありがとうXMLからgridSpanの値を読み取る方法を知っておく必要がありました。完全に動作します。 – Sojimanatsu

関連する問題