XSLT: XML: заменить функцию / функциональность - PullRequest
0 голосов
/ 06 мая 2011

Я хотел бы получить следующий HTML

words<block>words</block>

Из этого узла в XML-документе

<text>words bli!wordsbli!</text>

бли! представляет тег, который будет встречаться в случайных местах в узле документа XML. Можно ли заменить бли! с использованием функции xslt?

1 Ответ

1 голос
/ 06 мая 2011

В XSLT 1.0 нет ничего, что могло бы выполнять базовую замену строк.

В этом посте описан хороший метод реализации этой функциональности.

 <xsl:template name="string-replace-all">
    <xsl:param name="text" />
    <xsl:param name="replace" />
    <xsl:param name="by" />
    <xsl:choose>
      <xsl:when test="contains($text, $replace)">
        <xsl:value-of select="substring-before($text,$replace)" />
        <xsl:value-of select="$by" />
        <xsl:call-template name="string-replace-all">
          <xsl:with-param name="text"
          select="substring-after($text,$replace)" />
          <xsl:with-param name="replace" select="$replace" />
          <xsl:with-param name="by" select="$by" />
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$text" />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

Вот как это называется:

  <xsl:variable name="myVar">
    <xsl:call-template name="string-replace-all">
      <xsl:with-param name="text" select="'This is a sample text : {ReplaceMe} and {ReplaceMe}'" />
      <xsl:with-param name="replace" select="'{ReplaceMe}'" />
      <xsl:with-param name="by" select="'String.Replace() in XSLT'" />
    </xsl:call-template>
  </xsl:variable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...