XSL子串在两个级别上

时间:2014-03-06 07:17:30

标签: string xslt xsl-fo

我希望文本的子字符串显示0-500个字符,然后显示图像,然后再次显示上面文本的剩余部分。 我使用下面的代码获得0-500个字符,直到第一个句号:

  <xsl:value-of select="substring(metadata/item/body, 1, 500 + string-length(substring-before(substring(metadata/item/body, 501),'.')))" disable-output-escaping="yes"/>.

然后我正在显示图像。之后我使用此代码显示文本的剩余部分:

  <xsl:value-of select="substring(metadata/item/body, 500)" disable-output-escaping="yes"/>

我现在得到的输出:

  partnership with the private sector, especially the pharmaceutical sector.
  Image*****
  cal sector. He added that the future vision for the health....till end.

预期产出:

  partnership with the private sector, especially the pharmaceutical sector.
  Image*****
  He added that the future vision for the health....till end.

2 个答案:

答案 0 :(得分:1)

在图像之前的部分代码中,您正在寻找合适的中断位置(可能不在角色500处。然后在第二段代码中,而不是重用相同的方法来查找位置开始你只是从角色500开始。如果您从前映像部分获取​​解决方案并将其用于后期图像部分,您将获得您正在寻找的输出。

答案 1 :(得分:0)

怎么样:

<xsl:variable name="stop" select="500 + string-length(substring-before(substring(input, 500),'.'))" />
<xsl:value-of select="substring(input, 1, $stop)"/>
<!-- image here -->
<xsl:value-of select="substring(input, $stop + 2 )"/>

注意:+ 2基于停止后有空格或换行符的假设。