获取元素的所有子节点

时间:2014-03-10 20:20:38

标签: xslt xslt-2.0

我有一个xml文件,我将转换应用于特定元素,然后尝试获取忽略相同节点的所有子节点的text()

<xml>
    <xrefline>
              <query>eligible individual</query>
              in respect of a qualified dependant at any time means a person who at that time   
              <quote>
              <para> 
               <n>(a)</n> 
              <parap>resides with the qualified dependant,</parap>
             </para> 
              </quote>
       </xrefline>
     </xml>

我的xslt模板看起来像这样,我想提取所有文本()并保留查询元素

<xsl:template match="query" >
<xsl:apply-templates select="../text()|../node()[self::query]|../node()[not(self::query)]/text()" ></xsl:apply-templates>
</xsl:template>

我的愿望输出应该是这样的

     <xml>
         <xrefline>
              <query>eligible individual</query>
              in respect of a qualified dependant at any time means a person who at that time (a) resides with the qualified dependant,
         </xrefline>
     </xml>

我必须在template match="query"附近工作,然后回去获得渴望的结果。使用我的上面的xslt,我得到的文本是元素引用的一边,但不是引用元素的子子文本......任何帮助或提示都会非常有用。

1 个答案:

答案 0 :(得分:3)

我会写两个模板:

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* , node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="xrefline//*[not(self::query)]">
  <xsl:apply-templates/>
</xsl:template>

请参阅http://xsltransform.net/948Fn5h