2015-04-16 1 views
1

У меня есть следующий XML-файл:Вывод содержимого узла до и после того, как дочерний элемент

<parent> Hello 
    <child>10</child> 
    <child>20</child> 
    <child>30</child 
    Italic 
    <child>400</child> 
    <child>500</child> 
    Bold 
</parent> 

решение сейчас:

<xsl:template match="parent"> 
    <fo:block> 
      <xsl:value-of select="text()"/> 
      <xsl:apply-templates select="child"/>   
     </fo:block>  
</xsl:template> 

<xsl:template match="child"> 
     <fo:inline> 
      <fo:inline color="Red"><xsl:value-of select="child"/></fo:inline> 
     </fo:inline> 
</xsl:template> 

Как я могу вывести содержание всего родительского элемента и сопоставьте ребят в любом другом формате. Я получаю контент только до первого элемента Element (Hello).

ожидается выход: Привет 10 20 30 400 500 Italic (Жирным шрифтом выделены номера в красный цвет)

Выход до сих пор: Привет

Я использую XSLT 2.0. Спасибо за помощь

+0

Не могли бы вы опубликовать ваш ожидаемый результат. –

+0

... и вывод, который вы получаете. – Richard

+0

Ok один момент plz – Franz

ответ

0

Пока вы используете apply-templates для обработки дочерних узлов, остальное встанет на свои места, так что изменить

<xsl:template match="parent"> 
    <fo:block> 
      <xsl:value-of select="text()"/> 
      <xsl:apply-templates select="child"/>   
     </fo:block>  
</xsl:template> 

<xsl:template match="child"> 
     <fo:inline> 
      <fo:inline color="Red"><xsl:value-of select="child"/></fo:inline> 
     </fo:inline> 
</xsl:template> 

в

<xsl:template match="parent"> 
    <fo:block> 
      <xsl:apply-templates/>   
     </fo:block>  
</xsl:template> 

<xsl:template match="child"> 
     <fo:inline> 
      <fo:inline color="Red"> 
       <xsl:apply-templates/> 
      </fo:inline> 
     </fo:inline> 
</xsl:template> 
+0

спасибо, что это работает;) – Franz