使用XSLT如何在混合内容中的元素前后添加文本周围的元素?

时间:2019-05-02 18:56:01

标签: xslt

这是我的XML文档的结构:

<body><p>Some text <em>before</em> image<img src="" width="" height=""/>some text <b>after</b> image</p></body>

处理后,它应如下所示:

<body><p>Some text <em>before</em> image</p><img src="" width="" height=""/><p>some text <b>after</b> image</p></body>

如何在img元素之前和之后的文本中添加p元素?

1 个答案:

答案 0 :(得分:0)

对于XSLT 2.0:

<xsl:template match="p[img]">
  <xsl:for-each-group select="node()" group-adjacent="boolean(self::img)">
    <xsl:choose>
      <xsl:when test="self::img">
        <xsl:copy-of select="."/>
      </xsl:when>
      <xsl:otherwise>
        <p><xsl:copy-of select="current-group()"/></p>
      </
    </
  </
</