[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Glossary Help

Subject: RE: Glossary Help
From: "Shailesh Shinde" <shailesh@xxxxxxxxxxxx>
Date: Sat, 29 Jul 2006 18:06:33 +0530
glossary help
Hi,

The exact XML structure is like below........this <division type="appendix">
only needs to update with glossary elements, also the division contains more
topics with titles A, B, C and so on.....

- <book>
	+ <prolog>
	+ <disclaimers>
	+ <division type="preface">
	+ <division type="general">
	+ <division type="chapter">
	+ <division type="chapter">
	+ <division type="chapter">
	+ <division type="chapter">
	+ <division type="chapter">
- <division type="appendix">
	-<topic id="Blank114">
		<title>Specifications</title>
	+ <body>
	- <topic id="Blank115">
		<title>Physical Dimensions</title>
	+ <body>
	</topic>
- <division type="appendix">  --------------------------------->>> This
division only needs
glossary Updates. 	
	-<topic id="crefmrk692">
		<title>Glossary</title>
	+<body>
	</topic>
	-<topic id="Blank212">
		<title>A</title>
	</topic>
	-<topic id="Blank213">
		<title>B</title>
	</topic>
</division>
</book>


--
shailesh

-----Original Message-----
From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx] 
Sent: Saturday, July 29, 2006 5:40 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  Glossary Help

Don't know what is the exact XML you have. Perhaps you have a XML
something like following:

<?xml version="1.0" ?>
<divisions>
  <division>
    <x/>
    <body>
      <body-contents/>
    </body>
  </division>
  <!-- may have more division tags, as above -->
  <division type="appendix">
    <topic id="cfmrk">
      <title>Glossary</title>
      <body>
        <p>The terms in this glossary cover topics
related to this manual. Alternate naming is included for reference.</p>
        <p><i>  <b>Abbreviations</b>    </i></p>
        <p><i>  <b>AC:</b></i>  alternating current</p>
        <p><i>  <b>AGP:</b></i>  accelerated graphics port</p>
        <p><i>  <b>ANSI: </b></i> American National
Standards Institute</p>
        <p><i><b>APM:</b></i>  advanced power manager</p>
     </body>
   </topic>
   <topic id="Blank">
     <title>A</title>
     <body>
       <p><b>AccuPoint: </b> A pointing device integrated into the TOSHIBA
computer keyboard.</p>
       <p><b>adaptor:  </b>A device that provides an interface between two
dissimilar electronic devices. For example, the AC adaptor modifies the
power from a wall outlet for use by the computer. This term also refers to
the add-in circuit cards that control external devices, such as video
monitors and magnetic tape devices. </p>
       <p><b>allocate: </b> To assign a space or function for a
specific task.</p>
       <p><b>alphanumeric:</b>  Keyboard characters including letters,
numbers and
other symbols, such as punctuation marks or mathematical symbols.</p>
     </body>
   </topic>
 </division>
</divisions>

To transform this to the desired XML, the stylesheet will be (I think
you want to produce glossary where division has a attribute
type="appendix"):

<?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:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<xsl:template match="division[@type='appendix']">
  <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" />
      </topic>
    </xsl:for-each>
  </division>
</xsl:template>

<xsl:template match="body[ancestor::division[@type='appendix']]">
  <glossarylist>
    <xsl:apply-templates select="p[not(text())]/i/b" />
    <xsl:apply-templates select="p[text()]/i/b" />
    <xsl:apply-templates select="p[not(text())]/b" />
    <xsl:apply-templates select="p[text()]/b" />
  </glossarylist>
</xsl:template>

<xsl:template match="p[not(text())]/i/b">
  <glossarydiv>
    <xsl:value-of select="." />
  </glossarydiv>
</xsl:template>

<xsl:template match="p[text()]/i/b">
  <glossaryterm>
    <xsl:value-of select="." />
  </glossaryterm>
  <glossarydef>
    <xsl:value-of select="../../text()" />
  </glossarydef>
</xsl:template>

<xsl:template match="p[not(text())]/b">
  <glossarydiv>
    <xsl:value-of select="." />
  </glossarydiv>
</xsl:template>

<xsl:template match="p[text()]/b">
  <glossaryterm>
    <xsl:value-of select="." />
  </glossaryterm>
  <glossarydef>
    <xsl:value-of select="../text()" />
  </glossarydef>
</xsl:template>

</xsl:stylesheet>

The output produced is:

<?xml version="1.0" encoding="UTF-8"?>
<divisions>
  <division>
      <x/>
      <body>
         <body-contents/>
      </body>
  </division>
  <division type="appendix">
      <topic id="cfmrk">
         <title>Glossary</title>
         <glossarylist>
            <glossarydiv>Abbreviations</glossarydiv>
            <glossaryterm>AC:</glossaryterm>
            <glossarydef>  alternating current</glossarydef>
            <glossaryterm>AGP:</glossaryterm>
            <glossarydef>  accelerated graphics port</glossarydef>
            <glossaryterm>ANSI: </glossaryterm>
            <glossarydef> American National
Standards Institute</glossarydef>
            <glossaryterm>APM:</glossaryterm>
            <glossarydef>  advanced power manager</glossarydef>
         </glossarylist>
      </topic>
      <topic id="Blank">
         <title>A</title>
         <glossarylist>
            <glossaryterm>AccuPoint: </glossaryterm>
            <glossarydef> A pointing device integrated into the TOSHIBA
computer keyboard.</glossarydef>
            <glossaryterm>adaptor:  </glossaryterm>
            <glossarydef>A device that provides an interface between two
dissimilar electronic devices. For example, the AC adaptor modifies the
power from a wall outlet for use by the computer. This term also refers to
the add-in circuit cards that control external devices, such as video
monitors and magnetic tape devices. </glossarydef>
            <glossaryterm>allocate: </glossaryterm>
            <glossarydef> To assign a space or function for a specific
task.</gl
ossarydef>
            <glossaryterm>alphanumeric:</glossaryterm>
            <glossarydef>  Keyboard characters including letters, numbers
and
other symbols, such as punctuation marks or mathematical
symbols.</glossarydef>
         </glossarylist>
      </topic>
   </division>
</divisions>

If you need more help, please let us know.

Regards,
Mukul

http://gandhimukul.tripod.com

On 7/29/06, Shailesh Shinde <shailesh@xxxxxxxxxxxx> wrote:
> Hi,
>
> Yes, having other divisions also in the xml? So, needs to update only the
> part of xml where glossary needed.
>
> --
> Shailesh

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.