如何根据案例区分模板

时间:2014-05-07 12:50:12

标签: xslt

嗨,我在XML中有以下两种情况。

情况1:

<para num="01"><page num="05"/>abcdefghij ancfrgthig</para>

情况2:

<para num="01">abcdefgrghy sdfdfhrtfd<page num="05"/></para>

情形3:

<para num="01"><span class="bold">abcdefgrghy sdfdfhrtfd</span><page num="05"/></para>

CASE4:

<para num="01"><span class="bold">abcdefgrghy</span><page num="05"/> sdfdfhrtfd</para>

Case5:

<para num="01"><span class="bold">abcdefgrghy</span> sdfdfhrtfd<page num="05"/> </para>

Case5:

<para num="01"><span class="bold">abcdefgrghy sdfdfhrtfd</span><page num="05"/> </para>

我需要区分这两种情况,因为我想为每种情况制作不同的模板。

我直接使用<xsl:apply-templates/>,但是如果我有上述第一种情况,首先需要通过para模板调用页面模板。

由于

1 个答案:

答案 0 :(得分:0)

感谢您的宝贵意见,我已经解决了我的问题,以下是解决方案。

<xsl:choose>

  <xsl:when test="child::node()[1][self::*]">
    <xsl:apply-templates select="child::page[1]"/>
    <div class="para">
      <xsl:call-template name="phrase"/>    
      <xsl:apply-templates select="child::node()[not(self::page)]"/>
    </div>
  </xsl:when>  

  <xsl:otherwise>
    <div class="para">
      <xsl:call-template name="phrase"/>
      <xsl:apply-templates/>
    </div>
  </xsl:otherwise>

</xsl:choose>

再次感谢!