powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как написать нужный xpath?
4 сообщений из 4, страница 1 из 1
как написать нужный xpath?
    #34959432
Omenelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет,

есть xml

<dictionary name="objectTypes">
<item value="papers" allow-netting="false"/>
<item value="physicals" allow-netting="true"/>
</dictionary>
<credit-limit-row>
<type name="papers"></type>
<type name="physicals"></type>
</credit-limit-row>

Нужно для всех элементов type из ветки <credit-limit-row> узнать, у всех ли соответствующих элементов item из ветки <dictionary> стоит атрибут allow-netting="false". Соответствие между ними такое: type/@name = item/@value.
Если это так, то вывести <xsl:attribute name="disabled"/>(причем только 1 раз!), иначе ничего не печатать.

Помогите плиз, а то что-то я запутался. Основная проблема у меня, чтобы disabled выводился только 1 раз.
...
Рейтинг: 0 / 0
как написать нужный xpath?
    #34959459
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
один раз для каждого type или один раз вааще?
...
Рейтинг: 0 / 0
как написать нужный xpath?
    #34961359
Omenelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
один раз вообще
...
Рейтинг: 0 / 0
как написать нужный xpath?
    #34962705
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="Windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="Windows-1251"/>

<xsl:template match="/">
<root>
  <xsl:if test="count(//credit-limit-row/type) = count(//credit-limit-row/type/@name[//dictionary/item[@allow-netting = 'false']/@value = .])">
    <xsl:attribute name="disabled">true</xsl:attribute>
  </xsl:if>
  Total: <xsl:value-of select="count(//credit-limit-row/type)"/>
  Not allowed netting: <xsl:value-of select="count(//credit-limit-row/type/@name[//dictionary/item[@allow-netting = 'false']/@value = .])"/>
</root>
</xsl:template>

</xsl:stylesheet>
Что для
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="Windows-1251"?>
<root>
<dictionary name="objectTypes">
<item value="papers" allow-netting="false"/>
<item value="physicals" allow-netting="false"/>
</dictionary>
<credit-limit-row>
<type name="papers"></type>
<type name="physicals"></type>
</credit-limit-row>
</root>
дает
Код: plaintext
1.
2.
<?xml version="1.0" encoding="Windows-1251"?><root disabled="true">
  Total:  2 
  Not allowed netting:  2 </root>
А для
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="Windows-1251"?>
<root>
<dictionary name="objectTypes">
<item value="papers" allow-netting="false"/>
<item value="physicals" allow-netting="true"/>
</dictionary>
<credit-limit-row>
<type name="papers"></type>
<type name="physicals"></type>
</credit-limit-row>
</root>
дает
Код: plaintext
1.
2.
<?xml version="1.0" encoding="Windows-1251"?><root>
  Total:  2 
  Not allowed netting:  1 </root>
Вроде правильно ;-)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как написать нужный xpath?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]