2013-09-24 6 views
0

У меня есть следующий вопрос:XSLT выбрать, чтобы применить фильтр

Это я хочу использовать в выборе:

<xsl:variable name="Rows" select="/dsQueryResponse/Table/Rows/Row" /> 

Я попытался:

<xsl:variable name="Rows"> 
    <xsl:choose> 
     <xsl:when test="$paramId"> 
      <xsl:copy-of select="/dsQueryResponse/Rows/Row" /> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:copy-of select="/dsQueryResponse/Rows/Row[@ID=$paramId]" /> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 

Но это не работало, никого есть идея?

Чтобы уточнить, на основе paramId, если он пуст, я должен получить все строки, но если paramId не пуст, я бы хотел применить ID фильтра = paramId, как я могу это сделать?

+0

вы можете уточнить свой вопрос – Ashok

+0

я обновил пост с большим количеством explaration: в основном на основе paramId я бы применить или не применяйте фильтр к набору строк. – Alnedru

+0

Можете ли вы показать свой входной XML? –

ответ

2

Это все зависит от того, как объявить и инициализировать параметр или переменная, которую вы имеете, и вы не показываете эту часть своего кода.

Если у вас есть

<xsl:param name="paramId" select="/.."/> 

Я бы тогда просто сделать

<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[not($paramId) or @ID = $paramId]"/> 
+0

спасибо, это сработало очень хорошо! – Alnedru

0

Предположив у вас есть paramId объявлен

<xsl:param name="paramId" select="''" /> 

Я хотел бы использовать его в test атрибут XSL: когда таким образом

<xsl:when test="$paramId = ''"> 
Смежные вопросы