如何将xslt模板应用于父级

时间:2014-07-16 20:10:49

标签: xml xslt

我在将html添加到所选节点的父级时遇到了一些麻烦。我有一个xml文档:

<component>
    <section>
        <text>
            <content>
              some text 1
            </content>
            <content>
              some text 2
            </content>
        </text> 
    </section>
    <section>
        <text>
            <otherElements></otherElements>
        </text> 
    </section>
    .....
</component>

有很多部分,有些部分在文本元素下有内容元素,有些则没有。我只使用模板来应用于具有内容元素的模板并具有输出,其中每个文本元素都有一个表,每个内容元素有一行:

   <table>
      <tbody>
         <tr><td>some text 1</td>
         <tr><td>some text 2</td>
      </tbody>
   </table>

当我用

选择内容元素时
<xsl:template match="section/text/content">

我可以添加行,但我不知道如何将table和tbody标签添加到父节点。如果我从

开始
<xsl:template match="section/text">

它还添加了其他元素的文本元素,我也不想要。

2 个答案:

答案 0 :(得分:3)

使用match="section/text [content]"

答案 1 :(得分:1)

这样的事情应该做(未经测试,只是为了说明这个想法):

<xsl:template match="/">
    <xsl:apply-templates select="//component/section[text/content]"/>
</xsl:template>

<xsl:template match="section[text/content]">
    <table><tbody>
        <xsl:apply-templates select="text/content"/>
    </tbody></table>
</xsl:template>

<xsl:template match="content">
    <tr><td><xsl:value-of select="text()"/></td></tr>
</xsl:template>