2013-04-25 1 views
0

это мой файл XSLT: -если последний Li затем установить событие нажмите на него

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/> 

    <xsl:template match="*" mode="item"> 
    <li onclick="final()"> 
     <xsl:value-of select="@value" /> 
     <xsl:apply-templates select="current()[*]" /> 
    </li> 
    </xsl:template> 

    <xsl:template match="*/*/*"> 
    <ul> 
     <xsl:apply-templates select="*[1] | node()[current()/ancestor::*[3]]" 
          mode="item" /> 
    </ul> 
    </xsl:template> 
</xsl:stylesheet> 

это мой файл XML: -

<?xml-stylesheet type="text/xsl" href="a.xsl"?> 
<root> 
    <child_1 entity_id = "1" value="Game" parent_id="0"> 
    <child_2 entity_id="2" value="Activities" parent_id="1"> 
     <child_3 entity_id="3" value="Physical1" parent_id="2"> 
     <child_6 entity_id="6" value="Cricket" parent_id="3"> 
      <child_7 entity_id="7" value="One Day" parent_id="6"/> 
     </child_6> 
     </child_3> 
     <child_4 entity_id="4" value="Test1" parent_id="1"> 
     <child_8 entity_id="8" value="Test At Abc" parent_id="4"/> 
     </child_4> 
     <child_5 entity_id="5" value="Test2" parent_id="1"> 
     <child_9 entity_id="9" value="Test At Xyz" parent_id="5"/> 
     </child_5> 
    </child_2> 
    <child_10 entity_id="10" value="Region" parent_id="1"> 
     <child_11 entity_id="11" value="ABC" parent_id="10"> 
     <child_12 entity_id="12" value="XYZ" parent_id="11"> 
      <child_13 entity_id="13" value="ABC123" parent_id="12"/> 
     </child_12> 
     </child_11> 
    </child_10> 
</child_1> 
</root> 

я пытаюсь создать уль Ли из XML файл.
здесь я установлен каждый li щелчок мероприятие используя onclick функция.
но сейчас я хочу всего лишь li click event не каждый li.
что-то вроде: -

  • Деятельность
    • Физическая
      • Cricket
        • Один день

теперь я хочу, чтобы в последний Li

<li onclick ="final()">OneDay</li> 
+0

Вы должны проверить положение() литиево элемента, чтобы получить последнюю() Ли и поставить атрибут –

+0

@NavinRawat Я также прекрасно '', но где я положил li для проверки боковой позиции (li)? –

+0

поделитесь своим вводом XML с нами –

ответ

1

Я изменил свой XSLT с требуемым один:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/> 

    <xsl:template match="*" mode="item"> 
    <xsl:choose> 
     <xsl:when test="self::node()/child::*"> 
     <li> 
      <xsl:value-of select="@value"/> 
      <xsl:apply-templates select="current()[*]"/> 
     </li> 
     </xsl:when> 
     <xsl:otherwise> 
     <li onclick="final()"> 
      <xsl:value-of select="@value"/> 
      <xsl:apply-templates select="current()[*]"/> 
     </li> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 

    <xsl:template match="*/*/*"> 
    <ul> 
     <xsl:apply-templates select="*[1] | node()[current()/ancestor::*[3]]" mode="item"/> 
    </ul> 
    </xsl:template> 
</xsl:stylesheet> 

Чтобы получить выход:

<ul> 
    <li>Physical1 
     <ul> 

     <li>Cricket 
      <ul> 

       <li onclick="final()">One Day</li> 

      </ul> 
     </li> 

     </ul> 
    </li> 
</ul> 

<ul> 
    <li>ABC 
     <ul> 

     <li>XYZ 
      <ul> 

       <li onclick="final()">ABC123</li> 

      </ul> 
     </li> 

     </ul> 
    </li> 
</ul>