应用模板选择substring-after with child node()

时间:2016-01-18 15:41:20

标签: xslt

这是我的输入文件

<toc-title>(1) Thsi is  <content-style>Short title</content-style>
  </toc-title>

我想输出如下:

<toctitle>
   <label>(1)</label>
   <toctext>Thsi is  <content-style>Short title</content-style></toctext>
</toctitle>

1 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
    <xsl:template match="toc-title">
        <xsl:copy>
            <label>
                <xsl:value-of select="substring-before(.,' ')"/>
            </label>
            <toctext>
                <xsl:for-each select="node()">
                    <xsl:choose>
                        <xsl:when test="position()=1">
                            <xsl:value-of select="substring-after(.,' ')"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:copy>
                                <xsl:value-of select="."/>
                            </xsl:copy>
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:for-each>
            </toctext>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

假设第一个子节点始终是文本,这将遍历<toc-title>的所有子节点。