我试图用内<p>
元素分成几个<br/>
来变换<alinea>subtext</alinea>
元素。例如 :
<p>subtext<br/>some more text<br/> some more subtext</p>
从前面的<p>
我希望能简单地更换所有<br/>
到</alinea><alinea>
因为对于<p>
模板打开<alinea>
元素了。
<xsl:template match="p">
<para><alinea><xsl:apply-templates/></alinea></para>
</xsl:template>
<xsl:template match="br">
</alinea><xsl:apply-templates/><alinea>
</xsl:template>
但它不验证。
预期结果 :
<para>
<alinea>
subtext
</alinea>
<alinea>
some more text
</alinea>
<alinea>
some more subtext
</alinea>
</para>
这是很容易在XSLT 2.0做:
<xsl:template match="p">
<para>
<xsl:for-each-group select="node()" group-starting-with="br">
<alinea>
<xsl:copy-of select="current-group()[not(self::br)]" />
</alinea>
</xsl:for-each-group>
</para>
</xsl:template>
但是:四联zxsw POI
概率你可以使用这样的事情:
https://xsltfiddle.liberty-development.net/6r5Gh2Q
我发现了一个(脏?)的方式与<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="p">
<para>
<xsl:apply-templates/>
</para>
</xsl:template>
<xsl:template match="text()">
<aline>
<xsl:value-of select="."/>
</aline>
</xsl:template>
<xsl:template match="br"/>
<xsl:template match="div">
<blockquote>
<xsl:value-of select="."/>
</blockquote>
</xsl:template>
</xsl:stylesheet>
更换<br>
:
</alinea><alinea>
什么更漂亮?