|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
извиняюсь за ламерский вопрос, но деваться некуда... есть такое xslt выражение <xsl:when test="count($currnode/following-sibling::Row[@MyGroup1=$grpFieldValue]) > 0)" ... и т.д. оно работает, но мне необходимо вместо жесткого указания имени поля вставить значение параметра xslt-темплэйта что бы использовать разные поля. что-то типа <xsl:when test="count($currnode/following-sibling::Row[@$GroupFieldName=$grpFieldValue]) > 0)" вариант <xsl:when test="count($currnode/following-sibling::Row[@*[name() = $GroupFieldName]=$grpFieldValue]) > 0)" не проходит, а знаний, что не так не хватает помогите плиз... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 14:39 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
dmnazarov, оно? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 14:56 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
хм... недочитал. почему не проходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 14:57 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
выдает толька первый элемент из возможных ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:00 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
Извиняюсь за неполный ответ, вот сам шаблон, он считает сумму по группам в xml-таблице если использовать переменную, то сумма равна значению поля в первом элементе если использовать имя поля то всё как надо <xsl:template name="sumByGroup1"> <xsl:param name="currnode"/> <xsl:param name="grpfieldname"/> <xsl:param name="grpfieldvalue"/> <xsl:param name="resfieldname"/> <xsl:param name="res"/> <xsl:variable name="curvalue" select="translate($currnode/@*[name() = $resfieldname],',','.')"/> <xsl:variable name="curnumber"> <xsl:choose> <xsl:when test="$curvalue!=''"> <xsl:value-of select="$curvalue"/> </xsl:when> <xsl:otherwise> 0 </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <!--<xsl:when test="count($currnode/following-sibling::Row[@Group=$fieldvalue])>0"> --> <!-- <xsl:when test="count($currnode/following-sibling::Row[@Group=$grpfieldvalue])>0"> --> <xsl:when test="count($currnode/following-sibling::Row[@*[name() = $grpfieldname] = $grpfieldvalue])>0"> <xsl:call-template name="sumByGroup1"> <xsl:with-param name="currnode" select="$currnode/following-sibling::Row[1]"/> <xsl:with-param name="grpfieldname" select="$grpfieldname"/> <xsl:with-param name="grpfieldvalue" select="$grpfieldvalue"/> <xsl:with-param name="resfieldname" select="$resfieldname"/> <xsl:with-param name="res" select="$res + number($curnumber)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="format-number($res+number($curnumber), "#я##0,00'а.';-#я##0,00'а.'", "lcid1049")"/> </xsl:otherwise> </xsl:choose> </xsl:template> --------- Вызов делатеся так --------- <td class="ms-gb"> <b >Сумма = <xsl:call-template name="sumByGroup1"> <xsl:with-param name="currnode" select="$nodeset"/> <xsl:with-param name="grpfieldname" select="Group"/> <xsl:with-param name="grpfieldvalue" select="$fieldvalue"/> <xsl:with-param name="resfieldname" select="'Income'"/> <xsl:with-param name="res" select="0"/> </xsl:call-template> </b> </td> ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:16 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
dmnazarov, XML тоже выкладывай ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:44 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
может так надо писать: Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:53 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
Сами данные берутся из MSSQL-я через MS Sharepoint списки. В принципе можно было бы подготовить тестовые, но выдрать полезный XSLT код из aspx формы я уже не осилю. Уж такая там портянка. этот вариант авторcount($currnode/following-sibling::Row/@*[name() = $grpfieldname] = $grpfieldvalue)>0 не скомпилировался, т.к. возвращается не множество.... и не может быть параметром COUNT этот авторcount($currnode/following-sibling::Row[@*[name() = $grpfieldname and . = $grpfieldvalue])>0 аналогичен первому предложенному варианту автор<xsl:when test="count($currnode/following-sibling::Row[@*[name()=$GroupFieldName]=$grpFieldValue]) > 0)"> ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 16:40 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
dmnazarov, xml Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
xsl Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
text Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 16:43 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
Проблема скорее всего в вызове шаблона - обрати внимание - я вызываю из корня один элемент. Сначала вызывал множество - выходил только первый элемент. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 16:46 |
|
Как в XPath заменить жесткое название поля на название из переменной
|
|||
---|---|---|---|
#18+
refreg, ну вот, не дал помучить человека. там изначально было понятно, что проблема не в этом xPath. хорошо, что у тебя есть время генерить XML. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 17:10 |
|
|
start [/forum/topic.php?fid=14&tid=1333114]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 170ms |
0 / 0 |