這裏是分割的話分成兩行,使得第一行不超過預定長度的XSLT變換2.0:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pMaxLength" select="15"/>
<xsl:template match="ELEMENT">
<xsl:variable name="vWords" select="tokenize(@attribute, '\W+')"/>
<xsl:variable name="vNumWords" select="count($vWords)"/>
<xsl:variable name="vLastWordPos" select=
"for $k in 1 to vNumWords
return
if(string-length(string-join($vWords[position() le $k],
' ')
)
le $pMaxLength
and
string-length(string-join($vWords[position() le $k+1],
' ')
)
gt $pMaxLength
)
then $k
else()
"/>
<xsl:variable name="vLastPos" select=
"($vLastWordPos, $vNumWords)[1]"/>
<span>
<p>
<xsl:value-of select=
"string-join($vWords[position() lt $vLastPos], ' '),
string-join($vWords[position() ge $vLastPos], ' ')
"
separator="
"/>
</p>
</span>
</xsl:template>
</xsl:stylesheet>
當所提供的XML文檔應用:
<ELEMENT attribute="Value of the attribute">Some text</ELEMENT>
的希望,正確的結果是prodiced:
<span>
<p>Value of the
attribute</p>
</span>
請注意:當輸出爲HTML,你可能會想在上面的代碼替換此:
<span>
<p>
<xsl:value-of select=
"string-join($vWords[position() lt $vLastPos], ' ')"/>
<br />
<xsl:value-of select=
"string-join($vWords[position() ge $vLastPos], ' ')"/>
</p>
</span>