使用XSLT将子节点放在父节点之外。
输入:
<?xml version="1.0" encoding="UTF-8"?>
<p>para content
<ol>
<li>li content</li>
<li>li content</li>
<li>li content</li>
</ol>
Para content continues
</para>
输出
<p>para content Para content continues</p>
<ol>
<li>li content</li>
<li>li content</li>
<li>li content</li>
</ol>
我尝试使用以下代码:
<xsl:template match="p">
<p><xsl:value-of select="node()"/></p>
<xsl:choose>
<xsl:when test="child::ol">
<ul>
<xsl:apply-templates select="ol"/>
</ul>
</xsl:when>
</xsl:choose>
</xsl:template>
但输出如下:
<p>para content</p>
<p>para content
</p><ul>
li content
li content
li content
</ul>
Para内容继续缺少文字
答案 0 :(得分:2)
写一个模板
<xsl:template match="p">
<xsl:copy>
<xsl:apply-templates select="text()"/>
</xsl:copy>
<xsl:apply-templates select="*"/>
</xsl:template>
当然会使用身份转换
启动样式表<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* , node()"/>
</xsl:copy>
</xsl:template>