Разрыв строки в XSLT для значения через запятую - PullRequest
1 голос
/ 25 февраля 2011

Я новичок в XSLT и пробую следующее:

У меня есть следующее:

<TR> <TD> Name: </TD> <TD><xsl:value-of select="ZNAME"/> </TD> </TR>

, которое возвращает

ADAM,BRIAN,CHARLIE,DAVID

Как я могу сделатьэто возвращение:

ADAM
BRIAN
CHARLIE
DAVID

Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Если вам нужно решение, которое не выводит конечный элемент <br/>, попробуйте следующее:

<TR> <TD> Name: </TD> <TD><xsl:apply-templates select="ZNAME"/> </TD> </TR>

<xsl:template match="ZNAME" name="convertcommas">
  <xsl:param name="text" select="."/>
  <xsl:value-of select="substring-before(concat($text,','),',')" />
  <xsl:if test="contains($text,',')">
    <br />
    <xsl:call-template name="convertcommas">
      <xsl:with-param name="text" select="substring-after($text,',')" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

concat($text,',') гарантирует, что substring-before видит хотя бы одну запятую, тем самым выводя строку самостоятельно, если изначально не было запятых.

0 голосов
/ 26 февраля 2011

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="ZNAME" name="tokenize">
  <xsl:param name="pText" select="concat(., ',')"/>

  <xsl:if test="string-length($pText)>0">
   <xsl:value-of select="substring-before($pText, ',')"/>
   <br />
   <xsl:call-template name="tokenize">
    <xsl:with-param name="pText"
     select="substring-after($pText, ',')"/>
   </xsl:call-template>
  </xsl:if>
 </xsl:template>
</xsl:stylesheet>

при применении к этому документу XML:

<ZNAME>ADAM,BRIAN,CHARLIE,DAVID</ZNAME>

создает искомое значение,правильный результат:

ADAM<br/>BRIAN<br/>CHARLIE<br/>DAVID<br/>

which when viewed in a browser is displayed like:

ADAMБРАЙАНЧАРЛИDAVID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...