0

我正在使用 XSLT (1.0) 使用 WordML 生成 Word 文档。我有不同的表,并且在其中一列中我需要添加由回车分隔的值。

即:而不是Lot1Lot2Lot3,我需要:

Lot1
Lot2
Lot3

我已经搜索了所有相关主题,但找不到任何可以解决我的问题的解决方案。我尝试在其中使用<w:br/>or<xsl:text></xsl:text>或 dec 代码 / <xsl:text>但没有工作,因为我仍然在同一行中看到结果。

XML:

<Root>
 <elemName>Test</elemName>
 <elemDescription>Description</elemDescription>
 <Items>
  <Item1Flag>Y</Item1Flag>
  <Item1Value>123213123</Item1Flag>
 </Items> 
 <Items>
  <Item1Flag>Y</Item1Flag>
  <Item1Value>12223123</Item1Flag>
 </Items>
 <Items>
  <Item1Flag>Y</Item1Flag>
  <Item1Value>1232423</Item1Flag>
 </Items>
</Root>

样式表:

...
<w:t><xsl:call-template name="concatItems">
<xsl:with-param name="elements" select="Items[Item1Flag='Y']/Item1Value"/>
</xsl:call-template>
</w:t>
...

<!-- Template -->
<xsl:template name="concatItems">
  <xsl:param name="elements"/>
  <xsl:variable name="result">
    <xsl:for-each select="$elements">
      <xsl:value-of select="."/>
      <xsl:if test="position()!=last()"><w:br/></xsl:if>
    </xsl:for-each>
  </xsl:variable>
  <xsl:value-of select="$result"/>  
</xsl:template>
4

1 回答 1

0

Instead of using a template, I have called the for-each directly in the style sheet and use <w:br/>.

<w:t><xsl:for-each select="Items[Item1Flag='Y']/Item1Value"><xsl:value-of select="."/><xsl:if test="position()!=last()"><w:br/></xsl:if></xsl:for-each></w:t> 
于 2018-06-04T14:46:29.680 回答