2016-11-02 8 views
-3

Я хочу, чтобы цикл через XML и создавать записи, если несколько элементов повторяются, как показано ниже. Я хотел бы добавить 4 новую запись для ребенка в таблице для каждого мастера, как 123, 123 и т.д. б мой вывод должен быть, как показано нижецикл через xslt, когда мы havemultiple элементы

a|123 
b|123 
c|123 
d|123 

<item> 
<master>123</master> 
<child1>a</child1> 
<child2>b</child2> 
<child3>c</child3> 
<child4>d</child4> 
</item> 

Я попытался ниже код

  <xsl:for-each select="//item">     
      <Row Action="ADD"> 
       <xsl:value-of select="current()/child1" />|<xsl:value-of select="current()/master" /> 
      </Row> 
      </xsl:if> 
      </xsl:for-each> 
+0

Что вы подразумеваете под «повторением»? Нет повторяющихся элементов, поскольку каждый дочерний элемент 'item' имеет уникальное имя. Кроме того, пожалуйста, добавьте требуемый результат в вопрос для иллюстративных целей. И, наконец, у вас нет 10 элементов ... –

+1

Просьба предоставить код, чтобы продемонстрировать свои усилия по его устранению. – zeppelin

+0

У меня есть свой вопрос – user3067170

ответ

0

Если контекст item, вы должны иметь возможность перебирать каждого ребенка, а не master.

Пример ...

XML Input

<item> 
    <master>123</master> 
    <child1>a</child1> 
    <child2>b</child2> 
    <child3>c</child3> 
    <child4>d</child4> 
</item> 

XSLT 1,0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="item"> 
    <xsl:for-each select="*[not(self::master)]"> 
     <xsl:value-of select="concat(.,'|',../master,'&#xA;')"/> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

Выход

a|123 
b|123 
c|123 
d|123 
Смежные вопросы