xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

помогите сделать выборку


Автор Сообщение
tybalt
Гость




[13953] Вт Авг 04, 2009 12:22
помогите сделать выборку

Код:


<tree>
  <item id="33750" parent_id="339" nam="Расчетная численность кассовых работников необходимая для осуществления кассовых оперций" />
  <item id="353" parent_id="339" nam="Особенности региона"  />
  <item id="388" parent_id="339" nam="Приходно-расходные операции"  />
  <item id="435" parent_id="339" nam="Эмиссионно-кассовые операции"  />
  <item id="354" parent_id="353" nam="Площадь обслуживаемой территории" />
  <item id="355" parent_id="353" nam="Население" />
  <item id="389" parent_id="388" nam="Приходные операции" />
  <item id="412" parent_id="388" nam="Расходные операции" />
  <item id="436" parent_id="435" nam="Резервные фонды" />
</tree>


нужно выбрать элементы, у которых parent_id=339, и которые не имеют дочерних элементов в дереве.
я сделал так, но мне так не нравится... все таки хочется обойтись без отдельного if count...

Код:


      <xsl:for-each select="//xml/tree/item[@parent_id=339]">
        <xsl:variable name="tmp" select="@indid" />
        <xsl:if test="count(//xml/tree/item[@parent_id=$tmp])=0">-->
...
        </xsl:if>
      </xsl:for-each>


Подскажите плиз как это лучше сделать
Fireball
Наставник

Зарегистрирован: 26.02.2008
Сообщения: 282

[13955] Ср Авг 05, 2009 16:23

Код:

<xsl:template match="tree">
<xsl:copy>
<xsl:apply-templates select="item[@parent_id = '339' and count(node()) &gt; 0]" />
</xsl:copy>
</xsl:template>


Примерно так, не уверен, что правильно внутри count написал, возможно так следует как-то через child.