输出子元素之前和之后的节点内容

时间:2015-04-16 12:39:03

标签: xml xslt xslt-2.0 xsl-fo

我有以下xml文件:

<parent> Hello
    <child>10</child>
    <child>20</child>
    <child>30</child
    Italic
    <child>400</child>
    <child>500</child>
    Bold
</parent>

现在解决方案:

<xsl:template match="parent">
     <fo:block>
          <xsl:value-of select="text()"/>
           <xsl:apply-templates select="child"/>         
      </fo:block>     
</xsl:template>

<xsl:template match="child">
        <fo:inline>
            <fo:inline color="Red"><xsl:value-of select="child"/></fo:inline>
        </fo:inline>
</xsl:template>

如何输出整个父元素的内容并匹配任何其他格式的子元素。我只在第一个子元素(Hello)之前获得内容。

预期产量: 你好10 20 30 Italic 400 500 Bold(红色数字)

输出到现在为止: 你好

我使用xslt 2.0。谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

只要您使用apply-templates处理子节点,其余部分就会到位,所以更改

<xsl:template match="parent">
     <fo:block>
          <xsl:value-of select="text()"/>
           <xsl:apply-templates select="child"/>         
      </fo:block>     
</xsl:template>

<xsl:template match="child">
        <fo:inline>
            <fo:inline color="Red"><xsl:value-of select="child"/></fo:inline>
        </fo:inline>
</xsl:template>

<xsl:template match="parent">
     <fo:block>
           <xsl:apply-templates/>         
      </fo:block>     
</xsl:template>

<xsl:template match="child">
        <fo:inline>
            <fo:inline color="Red">
               <xsl:apply-templates/>
            </fo:inline>
        </fo:inline>
</xsl:template>