2015-12-17 3 views
0

У меня есть файл XSLTXSLT: Получить индекс родителей

<xsl: for-each select = "Parent1/Parent2"> 
    <xsl: value-of select = "Child_1"> 
    <xsl: value-of select = "Child_2"> 
</xsl: for-each> 

Вот в этом случае, как дочерний элемент Child_1 и Child_2 будет добавлен в конечный файл XML.

мне нужно напечатать Child_2 только тогда, когда индекс Parent2 является, скажем, 4

Как я могу добиться того, что

Вот входной XML

<Parent1> 
<Parent2> 
    <Child_1>Child 1.1</Child_1> 
    <Child_2>Child 1.2</Child_2> 
</Parent2> 
<Parent2> 
    <Child_1>Child 2.1</Child_1> 
    <Child_2>Child 2.2</Child_2> 
</Parent2> 
<Parent2> 
    <Child_1>Child 3.1</Child_1> 
    <Child_2>Child 3.2</Child_2> 
</Parent2> 
<Parent2> 
    <Child_1>Child 4.1</Child_1> 
    <Child_2>Child 4.2</Child_2> 
</Parent2> 
<Parent2> 
    <Child_1>Child 5.1</Child_1> 
    <Child_2>Child 5.2</Child_2> 
</Parent2> 
<Parent2> 
    <Child_1>Child 6.1</Child_1> 
    <Child_2>Child 6.2</Child2> 
</Parent2> 
</Parent1> 

As an output I want 
Child_1 1.1 
Child_1 2.1 
Child_1 3.1 
Child_1 4.1 
Child_2 4.2 
Child_1 5.1 
Child_1 6.1 
+0

Возможно, вы захотите сделать '' но вы можете показать образец ввода XML, чтобы убедиться. Благодарю. –

+0

В этом случае Parent2 индекса 4 будет выбран ТОЛЬКО, а не других –

+1

. Ваш вопрос не совсем ясен, особенно. «* индекс *». «Индекс родительского2 *» в какой группе? - Также укажите, какая версия XSLT (функция 'index-of()' доступна только в XSLT 2.0). –

ответ

2

Возможно, это может работать для вас :

<xsl:for-each select="Parent1/Parent2"> 
    <xsl:variable name="i" select="position()" /> 
    <xsl:value-of select="Child_1"/> 
    <xsl:value-of select="Child_2[$i=4]"/> 
</xsl:for-each> 

Предполагается, что вы хотите вывести значение Child_2 только в том случае, если позиция Parent2 в наборе узлов (всего), выбранном выражением Parent1/Parent2, равна 4.

+0

Спасибо за ответ майкл. Я это проверю. Я сделал редактирование в вопросе ... Если вы хотите посмотреть на xml-файлы –

+0

@OldMonk Мои проблемы заключаются в том, что (а) может быть более одного узла Parent1 и (b) узел Parent1 может иметь другие дочерние узлы помимо «Parent2». Любой из них может привести к тому, что эта проблема не будет четко определена. –

+0

@OldMonk Если на ваш вопрос ответили, пожалуйста, закройте его, приняв ответ. –

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