2017-04-21 81 views
0

我想轉換一個表格,它位於word docx文檔中,但我不知道如何以相同方式將元素放在表格中。我共享XML代碼的一部分:通過HTML Word DOCX表格轉換

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

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

期望的結果是:enter image description here

我想知道如何訂購這樣的元素,創建行和colu mns like this.it不必以相同的方式,但我只需要想法如何使用XSLT 2.0做到這一點

回答

1

您目前正在選擇w:tbl元素,所以您需要一個模板來匹配那個,在那裏輸出包含<table>標籤。

從查看您的輸入示例中,w:tr元素對應於表格行,並且w:tc對應於表格單元格,因此您需要選擇並將它們與模板匹配。

試試這個XSLT作爲首發

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

注意代碼如何處理colspan屬性。您將需要添加一個類似的條件來創建rowspan屬性(您當前的XML樣本被刪節並且不包含任何行跨度,儘管您的輸出表明存在一些行)。

+0

謝謝,我需要知道如何從XML讀取gridSpan的值,它完美地工作。 – Sojimanatsu