xsl-list
[Top] [All Lists]

Re: [xsl] Remove internal parsing and exclude one child

2017-05-16 12:38:57
On 16.05.2017 19:29, Charles O'Connor coconnor(_at_)ariessys(_dot_)com wrote:

Using XSLT 1.0/Saxon9he

I have this input

<aff id="aff1"><label>1</label>Jet Propulsion Laboratory (JPL), 4800 Oak Grove Dr Pasadena, CA 
<addr-line><postal-code>91109</postal-code>, <country>USA</country></addr-line></aff>
<aff id="aff2"><label>2</label>SCRIPPS Institution of Oceanography, 9500 Gilman Drive, <institution>Dept 0230</institution>, 
<addr-line><city>La Jolla</city>, <state>CA</state> <postal-code>92093-0230</postal-code></addr-line>, 
<country>USA</country></aff>

And would like to get the same back, without the internal parsing and excluding the 
contents of <label>, e.g.,

<aff id="aff1">Jet Propulsion Laboratory (JPL), 4800 Oak Grove Dr Pasadena, CA 91109, 
USA</aff>
<aff id="aff2">SCRIPPS Institution of Oceanography, 9500 Gilman Drive, Dept 0230, La 
Jolla, CA 92093-0230, USA</aff>

Using this .xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

  <xsl:template match="node()|@*">
      <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
  </xsl:template>
<xsl:template match="//aff">
      <aff id="{@id}">
        <xsl:value-of select="."/>
     </aff>
  </xsl:template>

</xsl:stylesheet>

I get all the text in <aff>, including the text in <label>.

Use

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


Note that Saxon supports XSLT 2.0 so mentioning XSLT 1.0 in the context of Saxon 9 seems an odd requirement but shouldn't matter for that problem.


--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>