Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 09:56   #1
Jenya
Грызун Гранита
Пользователь
 
Аватар для Jenya
 
Регистрация: 25.01.2008
Сообщений: 33
По умолчанию XML+XSL Работа с условиями

Всем доброго времени суток.
Ничего не могу по сабжу найти в гугле. И метод логического тыка не помогает.

В общем есть шаблон для XML вида XSL
Есть XML примерного такого вида:
Код:
<MAIN>
  <Input>
   ..тэги..
  </Input>
  <Result>
    <Tax>
      ..тэги..
    </Tax>
    <MNR>
      ..тэги..
    </MNR>
  </Result>
 </MAIN>
В шаблоне на случай отсутсвия скажем данных по MNR использую такую конструкцию:
Код:
<xsl:if test="MAIN/Result/MNR!=0" >
..цикл и т.д. ..
</xsl:if>
Работает, при отсутствии <MNR> таблица с данными на страничку не выводится. Если есть, выводиться.

Теперь следующая задача. В теги <Tax> есть два тега данных. BeginDate и EndDate, они могут быть, а могут не быть, причем если дата пуста тэг просто отсутствует. Пытаюсь делать сравнение как и с MNR но оно в данном случае не работает вообще никак. Каким ещё образом я могу узнать, имеется ли у меня в блоке Tax скажем EndDate или такого поля нет.

Буду рад за хороший совет. Надеюсь вопрос разместил в правильном месте.
Jenya вне форума Ответить с цитированием
Старый 06.10.2009, 10:56   #2
Jenya
Грызун Гранита
Пользователь
 
Аватар для Jenya
 
Регистрация: 25.01.2008
Сообщений: 33
По умолчанию

Все просто оказалось. Объявляем переменную и затем делаем сравнение, длины строки:
Код:
<xsl:variable name="ED" select="EndDate" />
<xsl:if test="string-length($ED)=0" >
...
Jenya вне форума Ответить с цитированием
Старый 06.10.2009, 12:22   #3
Jenya
Грызун Гранита
Пользователь
 
Аватар для Jenya
 
Регистрация: 25.01.2008
Сообщений: 33
По умолчанию

В общем-то я заморочился изначально, можно без переменных это делать. Просто проверить длинну строки и все.
Код:
<xsl:if test="string-length(EndDate)=0" >
EndDate это поле которое может быть и может не быть в группе полей.
Jenya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Xml в Delphi bestlover Компоненты Delphi 60 12.01.2013 00:14
не могу разобраться с условиями if Rebel123 Общие вопросы Delphi 5 15.08.2009 20:20
Создание ссылки в XSL документе hyperworker HTML и CSS 1 29.05.2008 18:33