Microsoft Word-邮件使​​用XSL合并包含XML的字段

时间:2019-03-06 01:42:46

标签: xml xslt ms-word mailmerge

我正在尝试从数据源中插入基于XML的表。

XML如下

<?xml version="1.0" encoding="utf-8"?>
<PaymentPlanInstalments>
   <Instalment Number="1" Date="2018-12-04" Amount="10"></Instalment>
   <Instalment Number="2" Date="2018-12-05" Amount="20"></Instalment>
   <Instalment Number="3" Date="2018-12-06" Amount="30"></Instalment>
</PaymentPlanInstalments>

我已经成功使用/ INCLUDETEXT获得了概念证明,并且使用下面的xsl格式样式表将上面的XML保存在文件中

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="/">
    <xsl:processing-instruction name="mso-application">
      <xsl:text>progid="Word.Document"</xsl:text>
    </xsl:processing-instruction>
    <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no">
      <w:body>
        <wx:sect>
          <w:tbl>
            <w:tblPr>
              <w:tblW w:w="0" w:type="auto" />
            </w:tblPr>
            <w:tblGrid>
              <w:gridCol w:w="4000" />
              <w:gridCol w:w="4000" />
              <w:gridCol w:w="4000" />
            </w:tblGrid>
            <w:tr>
              <w:trPr>
                <w:tblHeader />
              </w:trPr>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w="4000" w:type="dxa" />
                  <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                </w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>Instalment Number</w:t>
                  </w:r>
                </w:p>
              </w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w="4000" w:type="dxa" />
                  <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                </w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>Instalment Date</w:t>
                  </w:r>
                </w:p>
              </w:tc>
              <w:tc>
                <w:tcPr>
                  <w:tcW w:w="4000" w:type="dxa" />
                  <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                </w:tcPr>
                <w:p>
                  <w:r>
                    <w:t>Instalment Amount</w:t>
                  </w:r>
                </w:p>
              </w:tc>
            </w:tr>
            <xsl:for-each select="//PaymentPlanInstalments/Instalment">
              <w:tr>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="4000" w:type="dxa" />
                    <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                  </w:tcPr>
                  <w:p>
                    <w:r>
                      <w:t>
                        <xsl:value-of select="@Number" />
                      </w:t>
                    </w:r>
                  </w:p>
                </w:tc>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="4000" w:type="dxa" />
                    <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                  </w:tcPr>
                  <w:p>
                    <w:r>
                      <w:t>
                        <xsl:value-of select="@Date" />
                      </w:t>
                    </w:r>
                  </w:p>
                </w:tc>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="4000" w:type="dxa" />
                    <w:shd w:val="clear" w:color="auto" w:fill="auto" />
                  </w:tcPr>
                  <w:p>
                    <w:r>
                      <w:t>
                        <xsl:value-of select="@Amount" />
                      </w:t>
                    </w:r>
                  </w:p>
                </w:tc>
              </w:tr>
            </xsl:for-each>
          </w:tbl>
          <w:p />
          <w:sectPr>
            <w:pgSz w:w="11906" w:h="16838" />
            <w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708" w:gutter="0" />
            <w:cols w:space="708" />
            <w:docGrid w:line-pitch="360" />
          </w:sectPr>
        </wx:sect>
      </w:body>
    </w:wordDocument>
  </xsl:template>
</xsl:stylesheet>

这将产生下表enter image description here

基础包含文本显示如下:

{INCLUDETEXT sample.xml \c XML \t sample2.xsl}

请注意sample.xml和sample2.xsl与word文档存储在同一目录中,并包含上述数据和格式设置规则。

但是,我遇到的问题是,一旦将XML添加到合并字段记录中,就无法再应用XSL转换。

使用Mailmerge功能可以吗?

如果不可能将XSL格式应用于合并字段,那么他们是否有其他解决方案需要将表添加到单个合并字段中?

但是,我遇到的问题是,一旦将XML添加到合并字段记录中,就无法再应用XSL转换。

使用Mailmerge功能可以吗?

0 个答案:

没有答案