[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: That's a wrap!

Subject: Re: That's a wrap!
From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 4 Jan 2018 18:20:54 -0000
Re:  That's a wrap!
On Thu, Jan 04, 2018 at 05:46:53PM -0000, Charles O'Connor coconnor@xxxxxxxxxxxx scripsit:
> How do I exclude them? A bonus would be to know how to preserve the
> punctuation and spaces between the <string-name> (and <collab> and
> <etal>) elements.

Well, you don't really have a good use case for the identity template
here; you'd be trying to distinguish text elements by relative position.
It looks like what you've got is a grouping problem; you want to get rid
of the label element, group up everything before a certain element, and
have everything else stay the same.

If the example displays a consistent pattern -- you want everything in
front of the article-title to wind up in the person-group --

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:variable as="element(ref)" name="example">
        <ref id="r2">
            <label>2.</label>
            <mixed-citation publication-type="journal"><string-name name-style="western"><surname>Selvarajah</surname>
                    <given-names>S</given-names></string-name>, <string-name name-style="western"><surname>Hammond</surname>
                    <given-names>ER</given-names></string-name>, <string-name name-style="western"><surname>Haider</surname>
                    <given-names>AH</given-names></string-name>, <string-name name-style="western"><surname>Abularrage</surname>
                    <given-names>CJ</given-names></string-name>, <string-name name-style="western"><surname>Becker</surname>
                    <given-names>D</given-names></string-name>, <string-name name-style="western"><surname>Dhiman</surname>
                    <given-names>N</given-names></string-name>, <etal>et al.</etal>
                <article-title>The burden of acute traumatic spinal cord injury among adults in the United States: an update.</article-title>
                <source>J Neurotrauma</source>
                <year>2014</year>;<volume>31</volume>(<issue>3</issue>):<fpage>228</fpage>-<lpage>38</lpage>.</mixed-citation>
        </ref>
    </xsl:variable>
    <xsl:template match="/">
        <xsl:apply-templates select="$example"/>
    </xsl:template>
    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="label">
        <!-- drop this element -->
    </xsl:template>
    <xsl:template match="mixed-citation">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <person-group>
                <xsl:sequence select="node()[following-sibling::article-title]"/>
            </person-group>
            <xsl:sequence select="node()[self::article-title or preceding-sibling::article-title]"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>


gives me
<ref id="r2">
    <mixed-citation publication-type="journal"><person-group><string-name name-style="western"><surname>Selvarajah</surname><given-names>S</given-names></string-name>,
                <string-name name-style="western"><surname>Hammond</surname><given-names>ER</given-names></string-name>, <string-name name-style="western"
                    ><surname>Haider</surname><given-names>AH</given-names></string-name>, <string-name name-style="western"
                    ><surname>Abularrage</surname><given-names>CJ</given-names></string-name>, <string-name name-style="western"
                    ><surname>Becker</surname><given-names>D</given-names></string-name>, <string-name name-style="western"
                    ><surname>Dhiman</surname><given-names>N</given-names></string-name>, <etal>et al.</etal></person-group><article-title>The burden of acute traumatic
            spinal cord injury among adults in the United States: an update.</article-title><source>J
            Neurotrauma</source><year>2014</year>;<volume>31</volume>(<issue>3</issue>):<fpage>228</fpage>-<lpage>38</lpage>.</mixed-citation>
</ref>


If you need to do other processing the "xsl:sequence" can be
"xsl:apply-templates".

-- Graydon

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.