добавление возврата каретки в XSLT с использованием wordml - PullRequest
0 голосов
/ 24 мая 2018

Я использую XSLT (1.0) для создания документа Word с использованием WordML.У меня есть разные таблицы, и в одном из столбцов мне нужно добавить значения, разделенные переводом каретки.

То есть: вместо Lot1Lot2Lot3 мне нужно:

Lot1
Lot2
Lot3

Я искалвсе связанные темы, но я не мог найти решение, которое могло бы решить мою проблему.Я пытался использовать <w:br/> или <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>

1 Ответ

0 голосов
/ 04 июня 2018

Вместо использования шаблона я вызвал for-each прямо в таблице стилей и использовал <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> 
...