2013-07-17 2 views
0

Могу ли я вызвать функцию xsl внутри функции? Я просто хочу сравнить предыдущее значение и текущее значение. например:Могу ли я вызвать функцию xslt внутри другой функции

<xsl:value-of select="//row[(position()-1)]/MONTH_ID" /> 

но код ниже в порядке:

<xsl:value-of select="number(position())-1" /> 
+0

этот код в порядке:

+0

Are вы на самом деле пытаются выяснить значение элемент ** MONTH_ID ** из предыдущего элемента ** строки **? Вероятно, это поможет, если вы продемонстрируете образец XML и результат, которого вы пытаетесь достичь. Благодаря! –

ответ

1

Да, вы можете функции гнезда XPath. Ниже вы можете найти пример:

substring(child::randlist/item[position()=1], 1, 10) 

Позиция функции называется внутренней подстрокой.

Можете ли вы уточнить запрос на сравнение?

5

Ответ на ваш вопрос: да, но я не думаю, что вы задаете правильный вопрос. Вы не сказали, что вы пытаетесь сделать, но ваш пример кода ничего полезного не делает.

//row[(position()-1)]/MONTH_ID 

Когда число N используется в предикате, то это означает [position()=N], так что ваш предикат означает [position() = position() - 1], который всегда будет ложным.

Я думаю, вы забываете, что результат position() чувствителен к контексту, а контекст внутри предиката не совпадает с контекстом снаружи. Ответ связать переменную:

<xsl:variable name="p" select="position()"/> 
<xsl:value-of select="//row[$p - 1]/MONTH_ID"/> 
Смежные вопросы