Subject: Re: [xsl] Troublshooting XSLT replace() From: Nathan Tallman <ntallman@xxxxxxxxx> Date: Tue, 3 Dec 2013 11:52:01 -0500 |
David, I've changed the root node in the master template to match on unitdate and unittitle, so that I could match on unitdate/text() and unittitle/text() in my mode templates, but it's stripping the element's and just outputting text. I tried matching on unitdate/text() and unittitle/text() (in the master template) but that didn't work either, presumable because I was selecting a node of text, so no node selection would work. Could you make a suggestion to change my master template match and mode template match? Thanks, Nathan On Tue, Dec 3, 2013 at 11:12 AM, David Carlisle <davidc@xxxxxxxxx> wrote: > On 03/12/2013 15:52, Nathan Tallman wrote: >> >> I'm glad my last query produced some mirth. I've got another today. >> >> The "Undate" and "Circa" modes do not work in the following stylesheet >> and I can't figure out why. Can someone please point out my errors? >> >> Many thanks, >> Nathan >> >> <xsl:stylesheet version="2.0" >> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> >> <xsl:output method="xml" >> doctype-public="+//ISBN 1-931666-00-8//DTD ead.dtd (Encoded >> Archival Description (EAD) Version 2002)//EN" >> doctype-system="ead.dtd" indent="yes"/> >> <xsl:variable name="vAllowedSymbols" >> >> select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 >> -.'"/> >> <xsl:template match="* | processing-instruction() | comment()"> >> <xsl:copy> >> <xsl:copy-of select="@*"/> >> <xsl:apply-templates/> >> </xsl:copy> >> </xsl:template> >> <xsl:template match="*/text()"> >> <xsl:variable name="phase1"> >> <xsl:apply-templates select="." mode="Punctuation"/> >> </xsl:variable> > > > > so $phase1 is a root node with a single text child, being the result of the > regexp replace? > > You might have done > <xsl:variable name="phase1" select="replace(., '(^.*)\p{P}$', '$1')"/> > which would have been clearer if that is the only template, but then $phase1 > would be a string/ > > > so this > > <xsl:apply-templates select="$phase1" mode="Undate"/> > applies templates to a / node but the only template you have in that mode is > unitdate/text() which never matches as, as noted above > you have no element nodes, just / with child a text node. > > > > >> <xsl:variable name="phase2"> >> <xsl:apply-templates select="$phase1" mode="Undate"/> >> </xsl:variable> >> <xsl:variable name="phase3"> >> <xsl:apply-templates select="$phase2" mode="Circa"/> >> </xsl:variable> >> <xsl:apply-templates select="$phase3" mode="Extent"/> >> </xsl:template> >> <xsl:template >> match="unittitle/text()[matches(., '^.*\p{P}$')] | >> unittitle/title/text()[matches(., '^.*\p{P}$')] | >> unitdate/text()[matches(., '^.*\p{P}$')]" >> mode="Punctuation"> >> <xsl:sequence select="replace(., '(^.*)\p{P}$', '$1')"/> >> </xsl:template> >> <xsl:template match="unitdate/text()" mode="Undate"> >> <xsl:sequence select="replace(., 'Undated','undated')"/> >> </xsl:template> >> <xsl:template match="unitdate/text()" mode="Circa"> >> <xsl:sequence select="replace(., 'Circa','circa')"/> >> </xsl:template> >> <xsl:template match="physdesc/extent/text()" mode="Extent"> >> <xsl:value-of select="translate(.,translate(., >> $vAllowedSymbols, ''),'')"/> >> </xsl:template> >> <xsl:template match="unittitle[not(string(.))]"> </xsl:template> >> </xsl:stylesheet> >> > David > > > > ________________________________________________________________________ > The Numerical Algorithms Group Ltd is a company registered in England > and Wales with company number 1249803. The registered office is: > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. > > This e-mail has been scanned for all viruses by Star. The service is > powered by MessageLabs. > ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Troublshooting XSLT repla, David Carlisle | Thread | Re: [xsl] Troublshooting XSLT repla, David Carlisle |
Re: [xsl] Troublshooting XSLT repla, David Carlisle | Date | Re: [xsl] Troublshooting XSLT repla, Graydon |
Month |