ограничить количество символов в строке - XSLT - PullRequest
3 голосов
/ 26 августа 2011

Я использую сторонний элемент управления asp.net для извлечения и отображения последнего содержимого из базы данных. Элемент управления извлекает заголовок последнего опубликованного контента с использованием файла xsl. Моя проблема в том, что заголовок (часть контента) слишком длинный. На месте, которое я использовал для отображения, нет места примерно для 100 символов. Мне нужно обрезать (не пробелы) концевую часть и, возможно, ограничить ее несколькими словами или некоторыми символами. Использует файл xsl -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <table border="0" cellspacing="0" cellpadding="0" width="100%">
            <xsl:for-each select="Collection/Content">
                <tr>
                    <td>
                        <a>
                            <xsl:attribute name="href">
                                <xsl:choose>
                                    <xsl:when test="Type ='Assets' or Type = 8 ">
                                        javascript:void window.open('showcontent.aspx?id=<xsl:value-of select="ID"/>')
                                    </xsl:when>
                                    <xsl:otherwise>
                                        <xsl:value-of select="QuickLink"/>
                                    </xsl:otherwise>
                                </xsl:choose>
                            </xsl:attribute>
                            <xsl:value-of select="Title"/>
                        </a>
                    </td>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>

В этой части, <xsl:value-of select="Title"/>, у вас есть заголовок, и мне нужно его сократить ..

Как я могу это сделать? Могу ли я сделать это в самом файле xsl без использования JQuery? Большое спасибо,

Ответы [ 3 ]

7 голосов
/ 26 августа 2011
<xsl:choose>
  <xsl:when test="string-length(Title) > 100">
    <xsl:value-of select="substring(Title, 1, 97)" />...
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="Title" />
  </xsl:otherwise>
</xsl:choose>
4 голосов
/ 26 августа 2011

Вы можете использовать функцию substring(text, startingIndex, length) XSLT:

<xsl:value-of select="substring(Title, 1, 100)"/>

Обратите внимание, что индекс подстроки начинается с 1, а не с обычного 0.

Больше на http://zvon.org/xxl/XSLTreference/Output/xpathFunctionIndex.html

Также обратите внимание, что .NET не реализует XSLT 2.0, только XSLT 1.0 (отсюда и приведенная выше ссылка: список функций XSLT 1.0).

1 голос
/ 15 июля 2013

Ограничить 20 символов

Если вашему коду это нравится

<xsl:value-of select="EmpBio" disable-output-escaping="yes"/>

Просто замените его на новый, написанный ниже

<xsl:value-of select="substring(BioData, 1, 20)" disable-output-escaping="yes"/>

Обратите внимание, что кавычки удаленыот имени элемента BioData

...