我想转换一个docx文档中的表,但我不知道如何以相同的方式将元素放在表中。我共享XML代码的一部分:
<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>
我想知道如何以这种方式对元素进行排序并创建像这样的行和列。它不必以相同的方式,但我只需要想法如何使用XSLT 2.0
答案 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示例已被删节,并且不包含任何行跨度,尽管您的输出表明存在一些)。