Hi,
The below xsl code works fine and getting required output....but now I have
receive the xml file from client where the <p id="doe13"> contains so the
below xsl code is failing to match the cases......what needs to be done
here?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:preserve-space elements="*"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="division[(@type='appendix') and ((topic/title =
'Glossary') or (topic/title = 'A'))]">
<division>
<xsl:copy-of select="@*"/>
<xsl:for-each select="topic">
<topic>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="title"/>
<xsl:apply-templates
select="body[ancestor::division[(@type='appendix')]]" mode="dogloss"/>
</topic>
</xsl:for-each>
</division>
</xsl:template>
<xsl:template match="body[ancestor::division[(@type='appendix')]]"
mode="dogloss">
<glosslist>
<xsl:apply-templates select="p[not(text())]/i/b"
mode="dogloss"/>
<xsl:apply-templates select="p[text()]/i/b"
mode="dogloss"/>
<xsl:apply-templates select="p[not(text())]/b"
mode="dogloss"/>
<xsl:apply-templates select="p[text()]/b"
mode="dogloss"/>
</glosslist>
</xsl:template>
<xsl:template match="p[not(text())]/i/b" mode="dogloss">
<glossdiv>
<xsl:value-of select="."/>
</glossdiv>
</xsl:template>
<xsl:template match="p[text()]/i/b" mode="dogloss">
<glossentry>
<glossterm>
<xsl:value-of select="."/>
</glossterm>
<glossdef>
<xsl:value-of select="../../text()"/>
</glossdef>
</glossentry>
</xsl:template>
<xsl:template match="p[not(text())]/b" mode="dogloss">
<glossdiv>
<xsl:value-of select="."/>
</glossdiv>
</xsl:template>
<xsl:template match="p[text()]/b" mode="dogloss">
<glossentry>
<glossterm>
<xsl:value-of select="."/>
</glossterm>
<glossdef>
<xsl:value-of select="../text()"/>
</glossdef>
</glossentry>
</xsl:template>
</xsl:stylesheet>
Thanks,
Shailesh
-----Original Message-----
From: Mukul Gandhi [mailto:gandhi(_dot_)mukul(_at_)gmail(_dot_)com]
Sent: Monday, July 31, 2006 10:02 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Glossary Help
On 7/31/06, Shailesh Shinde <shailesh(_at_)quagnito(_dot_)com> wrote:
I have few comments..
<xsl:preserve-space elements="*"/>
<xsl:strip-space elements="*"/>
I think you may not need above. This seems to have no effect.
I think you can modify the below template as following:
<xsl:template match="division[(@type='appendix') and
((topic/title = 'Glossary') or (topic/title = 'A'))]"> <!-- you can
add more or clauses -->
<division>
<xsl:copy-of select="@*"/>
<xsl:for-each select="topic">
<topic>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="title"/>
<!-- you may need to modify this as well -->
<xsl:apply-templates
select="body[ancestor::division[(_at_)type='appendix']]"/>
</topic>
</xsl:for-each>
<xsl:apply-templates/>
</division>
</xsl:template>
I guess I have given you lot of pointers to get started.
--
Regards,
Mukul Gandhi
http://gandhimukul.tripod.com
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--