Подсчет количества элементов

#
Подсчет количества элементов
Как в шаблоне списка элементов (портфолио) правильно подсчитать количество элементов, у которых не отмечено доп. свойство (типа checkbox)?

вот такая запись всегда возвращает 0 есть ли в ней ошибка?

<xsl:value-of select="count(item[item_propertys/item_property[@xml_name='free']/value=0])"/>
#
Re: Подсчет количества элементов
item[item_propertys/item_property[@xml_name='free']/value=0]
записано как я понимаю неправильно, необходимо указать
count(item/item_propertys/item_property[@xml_name='free']/value=0)
или что-то типа такого, где item/item_propertys/item_property[@xml_name='free']/value - путь до необходимого свойства
#
Re: Подсчет количества элементов
NeX правильно все записал, но исходная запись тоже верная
Думаю, что Вы просто вставили ее в XSL-шаблоне не в то место, где она могла бы быть обработана. Поэтому попробуйте, немного исправив ее, вставить ее в тэмплейт для узла document, т.е. так:
<xsl:template match="/document">
...
<xsl:value-of select="count(blocks/items/item[item_propertys/item_property[@xml_name='free']/value=0])"/>
...
</xsl:template>
#
Re: Подсчет количества элементов
вот такой шаблон)

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />

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

<xsl:template match="/document">

<xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>

<table id="free">
   <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="goups"/>
</table>

</xsl:template>

<xsl:template match="group" mode="goups">
<tr>
   <td>
      <a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="propertys/property[@xml_name='addname']/value"/></a>
   </td>
   <td>
   <div class="count"><xsl:value-of select="count(blocks/items/item[item_propertys/item_property[@xml_name='free']/value=0])" /></div>
   </td>
</tr>
</xsl:template>

</xsl:stylesheet>


а вызывается вот таким способом

<?
$InformationSystem = new InformationSystem();

$external_propertys=array();
$external_propertys['ОтображатьСсылкуНаАрхив']=0;
$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;

$item_count = 100;

$InformationSystemId = 24;

$InformationGroupId = 0;

$InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId, 'Колво',$item_count,0,$external_propertys);  
?>


возвращает 0
но если вызвать подсчет в шаблоне document будет ведь подсчет только общего количества?
Сама инф.система представляет собой несколько групп, в которых идут элементы, которые и нужно считать)
#
Re: Подсчет количества элементов
Что имеется в виду под "подсчет только общего количества"?
Так, как сделано сейчас работать не будет(приведенный мною пример не подходит для шаблона <xsl:template match="group" mode="goups"> ), поэтому выводит 0. Вам нужно подсчитать количество элементов без галочек во всей инфосистеме? Если да, то нужно менять способ подсчета(т.е. делать это не в XSL-шаблоне), т.к. XSL-шаблон обрабатывает только те данные, которые попали в XML, а не абсолютно все инфоэлементы и группы, которые есть в инфосистеме.
#
Re: Подсчет количества элементов
нет, нужно в каждой подгруппе инф. системы посчитать кол-во таких элементов
а если в xsl в шаблоне для групп вызвать шаблон для элементов?
можно ли в нем подсчитать?
#
Re: Подсчет количества элементов
Основная проблема подсчета не связана с возможным способом подсчета этих элементов в XSL-шаблоне. Проблема в том, что если Вы выводите на странице сайта элементы и группы из какой-то определенной группы(в данном случае из корня, т.к. $InformationGroupId = 0), то элементы групп этой самой определенной группы в XML не попадают.  А обработать каким-либо образом в XSL-шаблоне данные, которых нет в XML-коде невозможно. Именно поэтому в данной ситуации нужно искать другой способ подсчета, не связанный с XSL-ом.
Либо Вы опишите поставленную перед Вами задачу более подробно(желательно с конкретными примерами названий групп и структуры инфосистемы), возможно есть другой способ ее решения.
#
Re: Подсчет количества элементов
Задача - у гостиницы есть несколько видов номеров, на главную страницу нужно вывести в отдельный блок тип (1, 2, 3х местный номер), и количество свободных номеров каждого типа.
Для этого создал инф. систему «Номера», и соответственно несколько подгрупп (1, 2, 3х местные), в которых идут непосредственно все номера этого типа с описаниями, для элементов добавил доп. свойство "Занят?" вида checkbox с именем free
и вот все уперлось в подсчет для каждой подгруппы количества элементов у которых этот checkbox не отмечен.
а как решить не через xsl даже не представляю
#
Re: Подсчет количества элементов
Понятно. Вопрос такой: каждому реальному номеру гостиницы соответствует инфоэлемент? Т.е. если в гостинице 10 одноместных номеров, то в группе "1-местные номера" будет 10 инфоэлементов? И каждый из них отмечается на занятость/свободность в текущий момент времени?
#
Re: Подсчет количества элементов
да да, в каждой группе идут инфоэлементы с именами (Номер 312, 313 и тп), для каждого отмечается занятость
Авторизация