2016-01-06 4 views
0

Я надеюсь, что кто-то может помочь мне с этим ...Удаление & # 160 с XSLT

Я использую SharePoint 2013 и пытается вынести CQWP, чтобы показать последние сообщения в блоге. Проблема заключается в том, что при отображении «содержимого» из сообщения я получаю «& # 160», а кавычки показаны как «&». Мне удалось снять метку HTML, но я не могу избавиться от них.

Мой код выглядит следующим образом - любая помощь будет очень признательна, спасибо.

Сформировать Сводка и удаление HTML

<!-- Generate Summary --> 
    <xsl:template name="GenerateSummary"> 
    <xsl:param name="Content"/> 
    <xsl:param name="Length"/> 
    <xsl:param name="Suffix"/> 
    <xsl:variable name="cleanContent"> 
     <xsl:call-template name="RemoveHtml"> 
     <xsl:with-param name="String" select="$Content"/> 
     </xsl:call-template> 
    </xsl:variable> 
    <xsl:call-template name="SubstringBeforeLast"> 
     <xsl:with-param name="String" 
     select="substring($cleanContent, 1, $Length)"/> 
     <xsl:with-param name="Char" select="' '"/> 
    </xsl:call-template> 
    <xsl:if test="string-length($cleanContent) &gt; $Length"> 
     <xsl:value-of select="$Suffix" 
     disable-output-escaping="yes"/> 
    </xsl:if> 
    </xsl:template> 

    <!-- RemoveHTML --> 
    <xsl:template name="RemoveHtml"> 
     <xsl:param name="String"/> 
     <xsl:choose> 
     <xsl:when test="contains($String, '&lt;')"> 
      <xsl:value-of select="substring-before($String, '&lt;')"/> 
      <xsl:call-template name="RemoveHtml"> 
      <xsl:with-param name="String" 
       select="substring-after($String, '&gt;')"/> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="$String"/> 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 
    <xsl:template name="SubstringBeforeLast"> 
     <xsl:param name="String" /> 
     <xsl:param name="Char" /> 
     <xsl:param name="subsequent"/> 
     <xsl:choose> 
     <xsl:when test="contains($String, $Char)"> 
      <xsl:if test="$subsequent = 1"> 
      <xsl:value-of select="$Char"/> 
      </xsl:if> 
      <xsl:value-of select="substring-before($String, $Char)"/> 
      <xsl:call-template name="SubstringBeforeLast"> 
      <xsl:with-param name="String" 
       select="substring-after($String, $Char)" /> 
      <xsl:with-param name="Char" select="$Char" /> 
      <xsl:with-param name="subsequent" select="1"/> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:if test="$subsequent != 1"> 
      <xsl:value-of select="$String"/> 
      </xsl:if> 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 

Назвав его здесь

<div class="fcItemContent">     
    <xsl:call-template name="GenerateSummary"> 
     <xsl:with-param name="Content" select="@content" /> 
     <xsl:with-param name="Length" select="200" /> 
     <xsl:with-param name="Suffix" select="'...'"/> 
    </xsl:call-template> 
</div> 
+0

Можно ли показать входной XML? В частности, каково буквальное значение атрибута 'content', которое вы передаете в шаблон« GenerateSummary »? –

+0

Привет, Это проходит через текст, который вводится в поле тела при написании сообщения в блоге. Но добавляет форматирование HTML - при сохранении/сохранении я заполняю первую страницу этими данными, затем удаляя разметку HTML, но все же получаю указанные символы. HTML довольно простой с div и p-тегами –

ответ

1

Использование функции XSLT

нормализуют-пространство()

**<xsl:value-of select="normalize-space()"/>** 

Белое пространство нормализуется путем удаления переднего и заднего пробелов и замены последовательностей пробелов пробелом. Если аргумент опущен, строковое значение контекстного узла нормируется и возвращается.

называют Ссылка:

Remove Space using XSLT

+0

Спасибо за советы, но, к сожалению, это не сработало. Я все еще получаю следующий результат в отображаемом тексте: «Hello World,   testing» и цитаты отображаются как & quotCity & quot; –

Смежные вопросы