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

Re: Question about isolating records

Subject: Re: Question about isolating records
From: "Mark Wilson pubs@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 5 Sep 2015 21:35:26 -0000
Re:  Question about isolating records
Ken,
I clearly am missing something.
My stylesheet (using the two records at the bottom of this email) creates an empty @pdf-number.


<xsl:key name="pdf-key" match="Shelfmark" use="doc('test-xml.xml')/List/Item"/>
<xsl:template match="@* | node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>


<xsl:template match="Tag">
<xsl:choose>
<xsl:when test=". eq '852'">
<Tag>
<xsl:attribute name="crawford-number" select="@crawford-number"/>
<xsl:attribute name="pdf-number" select="key('pdf-key', PDF, @crawford-number)"/>
<xsl:value-of select="."/>
</Tag>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


On 9/5/2015 8:51 AM, Mark Wilson pubs@xxxxxxxxxxxx wrote:
Hi Ken,
Thanks. I'll read up on <xsl:key> and try to implement this.
Appreciate your response.
Regards,
Mark

On 9/5/2015 8:17 AM, G. Ken Holman g.ken.holman@xxxxxxxxx wrote:
Just to get you started:

 - declare a key table of "Item" elements keyed by the "Shelfmark" chlid
 - use the identity template to copy FILE 1
 - match on the "Tag" element, copy all existing attributes
 - use the "crawford-number" value as the lookup value in the
   key table of File 2 (using the third argument of the key() function)

Rather than supply the written solution, that
should be enough for you to figure things out in syntax.

I hope this helps.

. . . . . Ken

At 2015-09-05 11:10 +0000, Mark Wilson pubs@xxxxxxxxxxxx wrote:
I have two XML files, File 1 and File 2. They contain the XML shown below.

<Tag>852</Tag> in File 1 has a @crawford-number.
If in File 2 there is an <Item> with a
<Shelfmark> equal to the value of
@crawford-number, I want to add an @pdf-number
attribute to the <Tag>852</Tag> in File 1
containing the value of <PDF> in File 2 like so:
<Tag crawford-number="Crawford 2411." @pdf-number="016678286">852</Tag>

File 1 always contains a <Tag
@crawford>852</Tag> and File 2 always contains a
<Shelfmark>, but there may or may not be a match.

I have not a clue as to how to get started. Happy to answer any questions.
Mark


FILE 1:
<List>
    <Record>
        <Field>
            <Tag>245</Tag>
            <Data>General-Anzeiger fC<r
Philatelie.$bInternationales Insertions- Organ.</Data>
        </Field>
        <Field>
            <Tag crawford-number="Crawford 2411.">852</Tag>
            <Data>No.1-800. 10 Apr. 1883-15
Jan. 1913$aBritish Library$b5$cDPB$jCrawford
                2411.$nxxk</Data>
        </Field>
    </Record>
</List>

File 2:
<List>
     <Item>
        <PDF>016678286</PDF>
        <Shelfmark>Crawford 2411.</Shelfmark>
        <Title>General-Anzeiger fC<r Philatelie.</Title>
    </Item>
</List>



--
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/video.htm |
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ |
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx |
Google+ profile: http://plus.google.com/+GKenHolman-Crane/about |
Legal business disclaimers: http://www.CraneSoftwrights.com/legal |


--- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus

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.