RE: [xsl] string-replace AND apply-templates

Subject: RE: [xsl] string-replace AND apply-templates
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 19 Mar 2007 11:41:06 -0000
Sounds like a candidate for a two-pass transformation. In the first pass do:

<xsl:template match="tei:unclear//text()">
   <xsl:value-of select="replace(., &quot;()&quot;,&quot;
$1&combdotbl;&quot;)"/>
</xsl:template>

together with an identity template

<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

In the second pass do whatever other processing you have to do.

Alternatively if this is the only processing you do on text nodes, just make
sure that all other templates for elements process the contained text using
xsl:apply-templates rather than xsl:value-of.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Florian Grammel [mailto:grammel@xxxxxxx] 
> Sent: 19 March 2007 10:46
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] string-replace AND apply-templates
> 
> I don't have much experience with xsl, so there's a good 
> chance that this question is trivial, but I'm just not getting it:
> 
> In TEI-ish xml we use <unclear> to tag insecure readings.
> The tradition for printed editions says, that every unclear 
> letter is rendered with a dot below.
> 
> Using XSLT 2 I can use RegEx to do this:
> 
>      <xsl:template match="tei:unclear">
>          <xsl:copy>
>              <xsl:value-of
>                  select="replace(., &quot;()&quot;,&quot; 
> $1&combdotbl;&quot;)"/>
>          </xsl:copy>
>      </xsl:template>
> 
> 
> This works fine, but results in, that all possible markup inside the  
> <unclear>-tags is lost. I guess it would be a solution to call this  
> little template inside every other processing instruction, but as  
> <unclear> is allowed on virtually every level of the xml, this is  
> going to be a mess...
> 
> So I'm looking for a way to do the search-replace and get the code  
> inside processed by the rest of the stylesheet nevertheless.
> A sort of replace-instruction, that leaves tagging untouched and  
> passes the result on to <xsl:apply-templates/>
> 
> 
> 
> Thanks in advance for your help!
> 
> Florian Grammel.

Current Thread