Учитывая источник XML:как разделить и завернуть смешанное содержимое
<margetekst>
Article 36<em>bis</em>
Article 40
</margetekst>
<margetekst>
test 1
</margetekst>
<margetekst>
test 2a
test 2b
</margetekst>
<margetekst>
test <em>3a</em>
test 3b
</margetekst>
<margetekst>
test <em>4</em>a and some more text
test <em>4</em>b
</margetekst>
мне нужна следующий результат:
<margetekst>
<div>Article 36<em>bis</em></div>
<div>Article 40</div>
</margetekst>
<margetekst>
<div>test 1</div>
</margetekst>
<margetekst>
<div>test 2a</div>
<div>test 2b</div>
</margetekst>
<margetekst>
<div>test <em>3a</em></div>
<div>test 3b</div>
</margetekst>
<margetekst>
<div>test <em>4</em>a and some more text</div>
<div>test <em>4</em>b</div>
</margetekst>
я нашел на этом сайте, решение разделить текст на переносах, и это отлично работает, когда содержимое <margetekst>
является просто строкой, но не в смешанном контенте (результат: <div>Article 36</div><em>bis</em><div>...</div>
). Это код, который я использую в настоящее время:
<xsl:template match="margetekst/text()" mode="paragraafstijlen">
<xsl:call-template name="div_insert">
<xsl:with-param name="pText" select="."/>
</xsl:call-template>
</xsl:template>
<xsl:template match="text()" name="div_insert">
<xsl:param name="pText" select="."/>
<xsl:choose>
<xsl:when test="not(contains($pText, '
'))">
<div><xsl:copy-of select="$pText"/></div>
</xsl:when>
<xsl:otherwise>
<div><xsl:value-of select="substring-before($pText, '
')"/></div>
<xsl:call-template name="div_insert">
<xsl:with-param name="pText" select="substring-after($pText, '
')"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Может ли кто-нибудь помочь мне?
Можете ли вы использовать процессор XSLT 2.0, например Saxon 9? –
Да, я в настоящее время использую saxon9he – ChrisV