2014-12-09 9 views
0

Мне нужно фильтровать, какие данные возвращаются в моем преобразовании. Прочтите мой пример кода, и вы сможете увидеть, что я пытаюсь сделать здесь. Я ценю помощь. Благодарю.Фильтрация XML с помощью XSLT

<xsl:variable select="Records/Record[@level = '12345']/Field[@g = 'A67890']" name="Var1"/> 
      <xsl:variable select="Records/Record[@level = '12345']/Field[@g = 'B67890]" name="Var2"/> 
      <xsl:variable select="Records/Record[@level = '12345']/Field[@g= 'C67890']" name="Var3"/> 
      <xsl:variable select="Records/Record/Record[@level = 'ABC']/Field[@g = 'D123']" name="Var4"/> 
      <xsl:variable select="Records/Record/Record[@level = 'ABC']/Field[@g = 'C123']" name="Var5"/> 
      <xsl:if test="(contains($Var1= 'And') and ($Var2 = $Var4) and ($Var3 = $Var5) or contains($Var3= 'Or')"> 


    ----------**Code that is ran after if test** 

    </xsl:if> 
+1

Пожалуйста, покажите ваш входной XML и объяснить на простом английском языке, какие условия вы хотите проверить. Я боюсь 'contains ($ Var1 = 'And')' не имеет смысла синтаксис XPath. –

+0

Извините, я не имею права публиковать свой входной XML. Мне нужно проверить, есть ли Var1 = And и если Var2 = Var4 и Var3 = Var5, или Var1 = Or. Это помогает? – dontchucknorris

+0

'contains ($ Var1, 'And')' будет правильным синтаксисом для contains. По крайней мере, без малейших данных сложно сказать, что вы делаете. Можете ли вы опубликовать некоторые анонимные данные? – Bensonius

ответ

0

Если все, что вы ищете правильный if синтаксис, то:

<xsl:if test="(contains($Var1, 'And') 
       and ($Var2 = $Var4) 
       and ($Var3 = $Var5) 
       or contains($Var3, 'Or')"> 


----------**Code that is ran after if test** 

</xsl:if> 
+0

Это не работало для меня. Я попытаюсь получить разрешение на отправку исходного файла, потому что у меня может возникнуть большая проблема. – dontchucknorris

+0

Мог ли я просто использовать неправильный подход полностью? Предположим, что if решит, должно ли быть выполнено преобразование или нет. – dontchucknorris

+0

Трудно сказать, что вы делаете. 'Contains' проверяют, содержит ли содержимое' $ Var1' строковый литерал 'And' и '$ Var3' 'or'. Это ваше намерение? Вы можете сделать все это без переменных, просто используя '' и сопоставление шаблонов, но это будет другой вопрос. – Bensonius

Смежные вопросы