Hi,
I try to convert some special tags into some more regular tags.
I have something like <starttag/>sometext<endtag/>, but starttag and
endtag are tags without content, the content is the sometext.
So I have an example xml and a suggestion for an xsl, but it does not work.
The example xsl runs mostly within XMLSpy but I have to use Saxon8 in my
application, and that gave me an exception.
I try to stripp the xsl until it runs with saxon, but than I lost almost
of my functionality.
So If someone could give me an advice how to do this with saxon or what
else to do.
I I would be very grateful if someone could help me.
Regards
Olaf
Here are the XML (tinytest.xml)
=======================================================================
=======================================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="tinytest.xsl"?>
<document>
<story>Test text with
<tabcontent>
<row>
<cell>cell 1</cell>
<cell>cell 2<start type="1"/>TEST TAG TEXT<end endfor="start"/></cell>
<cell>cell 3<start type="5"/>TEST TAG TEXT<end endfor="start"/> </cell>
</row>
</tabcontent> more <start type="2"/>TEST TAG TEXT<end endfor="start"/>
if TEST <start type="3"/><test desc="should be removed"/>TEST TAG
<test1 desc="should be removed">also trash</test1><end
endfor="start"/>would need.
And another test text TEST TAG TEXT with some regex markup.
<start type="4"/>TEST TAG TEXT<end endfor="start"/></story>
</document>
=======================================================================
=======================================================================
and the XSL (tinytest.xsl)
=======================================================================
=======================================================================
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com/tinytest"
>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="story" >
<text x="single story">
<xsl:for-each select="node()">
<xsl:call-template name="breaktest"/>
</xsl:for-each>
</text>
</xsl:template>
<xsl:template match="cell" >
<td x="single cell">
<xsl:for-each select="node()">
<xsl:call-template name="breaktest"/>
</xsl:for-each>
</td>
</xsl:template>
<xsl:template match="row" >
<tr>
<xsl:apply-templates />
</tr>
</xsl:template>
<xsl:template match="tabcontent" >
<table>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template name="breaktest">
<xsl:choose>
<xsl:when test="(name() eq 'start')
and (following-sibling::*[1]/name() eq 'end')
and (following-sibling::*[1]/@endfor eq 'start') ">
<FoundStart>
<xsl:attribute name="mytype"><xsl:value-of
select="@type"/></xsl:attribute>
</FoundStart>
</xsl:when>
<xsl:when test="(name() eq 'end')
and (@endfor eq 'start')
and (preceding-sibling::*[1]/name() eq
'start')"><FoundEndWillBeDeleted/></xsl:when>
<xsl:when test="(self::text())
and (preceding-sibling::*[1]/name() eq 'start')
and (following-sibling::*[1]/name() eq 'end')
and (following-sibling::*[1]/@endfor eq
'start')"><FoundTextWillBeDeleted/></xsl:when>
<xsl:when test="(self::text())">
<xsl:analyze-string select="." regex="(.*?)(TEST TAG TEXT)">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/><FoundTextWillBeChanged/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:when>
<xsl:otherwise>
<xsl:analyze-string select="." regex="(.*?)(TEST TAG TEXT)">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/><FoundTextWillBeChanged/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
<xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
=======================================================================
=======================================================================