2016-03-31 3 views
-2

Мой XML является:Как напечатать текст родительского узла и первых двух детей

<content> 
    <p>The <organization>Committee on Civil Liberties</organization> calls on the <organization>Committee on Foreign Affairs</organization>, as the committee responsible: 
    <mod> 
     <quotedStructure> 
     <recital id="_900411"> 
       <num>A.</num> 
       <p>Whereas the progressive development ...</p> 
      </recital> 
      <recital id="_900412"> 
       <num>B.</num> 
       <p>Whereas Article ...</p> 
      </recital> 
      <recital id="_900413"> 
       <num>C.</num> 
       <p>Whereas, while Member States ...</p> 
      </recital> 
     </quotedStructure> 
    </mod> 
</p> 

Мой ожидается выход:

Комитет по гражданским свободам призывает Комитет по иностранным делам в качестве ответственного комитета:

A. В то время как прогрессивное развитие ....

B. В то время как статья ...

C. В то время как, в то время как государства-члены ...

Мой XSLT является:

<xsl:template match="content/p"> 
<xsl:value-of select="text()"/> 
<xsl:apply-templates/> 
</xsl:template> 
<xsl:template match="content//recital"> 
    <xsl:apply-templates/> 
</xsl:template> 
<xsl:template match="content//recital/num"> 
    <xsl:value-of select="."/> 
</xsl:template> 
<xsl:template match="content//recital/p"> 
    <xsl:value-of select="." /> 
</xsl:template> 

Мой токовый выход:

Звонки в связи с ответственностью комитета:

А. В то время как прогрессивное развитие ...

B. В то время как статьи ...

C. Принимая во внимание, в то время как государства-члены ...

Примечание: Я отсутствует текст внутри <organization> дочерние узлы родителя <p> узел. Пожалуйста, дайте мне знать XPath и XSLT, чтобы получить ожидаемый результат.

+0

Пожалуйста, покажите по крайней мере, а пихты попробовать. И добавьте желаемый результат - не как изображение. –

+1

Можете ли вы показать полный XSLT, который демонстрирует проблему, потому что дочерние узлы 'организация' будут фактически подобраны по шаблонам по умолчанию XSLT по мере их появления. (Например, см. Http://xsltransform.net/gWvjQgg). Благодаря! –

+0

Ваш XML не очень хорошо сформирован. Пожалуйста, исправьте это, если вы ожидаете ответа. – zx485

ответ

0

Используя это (фиксированный) XML-файл

<content> 
    <p>The <organization>Committee on Civil Liberties</organization> calls on the <organization>Committee on Foreign Affairs</organization>, as the committee responsible: 
     <mod > 
      <quotedStructure> 
       <recital id="_900411"> 
        <num>A.</num> 
        <p>Whereas the progressive development ...</p> 
       </recital> 
       <recital id="_900412"> 
        <num>B.</num> 
        <p>Whereas Article ...</p> 
       </recital> 
       <recital id="_900413"> 
        <num>C.</num> 
        <p>Whereas, while Member States ...</p> 
       </recital> 
      </quotedStructure> 
     </mod> 
    </p> 
</content> 

и этот файл XSLT

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

    <xsl:template match="content"> 
    <xsl:apply-templates select="*"/> 
    </xsl:template> 

    <xsl:template match="p/text()"> 
    <xsl:for-each select="."> 
     <xsl:value-of select="." /> 
    </xsl:for-each> 
    </xsl:template> 

    <xsl:template match="mod/quotedStructure"> 
    <xsl:for-each select="recital"> 
     <xsl:text>&#10;</xsl:text> 
     <xsl:value-of select="concat(num/text(),' ')" /> 
     <xsl:value-of select="p/text()" /> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

результат выглядит следующим образом:

The Committee on Civil Liberties calls on the Committee on Foreign Affairs, as the committee responsible: 


A. Whereas the progressive development ... 
B. Whereas Article ... 
C. Whereas, while Member States ... 
Смежные вопросы