Re: [xsl] Recognizing non-XML Markup Structure

Subject: Re: [xsl] Recognizing non-XML Markup Structure
From: Jeff Sese <jsese@xxxxxxxxxxxx>
Date: Thu, 27 Sep 2007 13:31:53 +0800
Tested with input:
<?xml version="1.0" encoding="UTF-8"?>
<para>Hoping to satisfy [...] the secrets of ecstatic love, the roots of personal happiness.</para>


using xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0">
<xsl:template match="text()[parent::para]">
<xsl:analyze-string select="." regex="\[(.*?)\]">
<xsl:matching-substring>
<cite><xsl:value-of select="regex-group(1)"/></cite>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>


produced:
<?xml version="1.0" encoding="UTF-8"?>Hoping to satisfy <cite>...</cite> the secrets of ecstatic love, the roots of personal happiness.


used saxon8 in oxygen....

-- Jeff

J. S. Rawat wrote:
Not working!!!
ERROR: The child axis starting at a text() node will never select anything


At 01:17 PM 9/27/2007 +0800, you wrote:
Hi,
ERROR
XSL:Analyze-string must not appear directly within xsl:stylesheet
analyze-string is not a top-level xslt instruction so it should not be a child of xsl:stylesheet.

If you want to replace the text node of a para element you can do this...

<xsl:template match="text()[parent::para]">
<!-- your analyze string here -->
   <xsl:analyze-string select="." regex="\[(.*?)\]">
     <xsl:matching-substring>
       <cite>joga<xsl:value-of select="regex-group(1)"/></cite>
     </xsl:matching-substring>
     <xsl:non-matching-substring>
       <xsl:value-of select="."/>
     </xsl:non-matching-substring>
   </xsl:analyze-string>
</template>

note not tested...

-- Jeff

Current Thread