将子元素放在xslt中的parent之外

时间:2014-06-02 09:26:10

标签: xslt xslt-2.0

使用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内容继续缺少文字

1 个答案:

答案 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>