Subject: Re: Another newbie question From: "S.Ramaswamy" <srswamy@xxxxxxxxxxxxxxxxxxxx> Date: Thu, 09 Dec 1999 10:15:28 +0530 |
Sanjay Saxena wrote: > > > Thanks a lot. However, this does not work. As suggested, CONTAINERS > is not my root. My XML looks as shown below: > > <FORMS> > <CONTAINERS> > <CONTAINER> > <PRE_HTML>DEPT_PREHTML</PRE_HTML> > <TITLE>Departments</TITLE> > <POST_HTML>DEPT_POSTHTML</POST_HTML> > </CONTAINER> > > <CONTAINER> > <PRE_HTML>EMP_PREHTML</PRE_HTML> > <TITLE>Employees</TITLE> > <POST_HTML>EMP_POSTHTML</POST_HTML> > </CONTAINER> > </CONTAINERS> > > <DEPT_PREHTML> > <!-- Well-formed HTML. --> > <DIV id="Layer1" style="position: absolute"> > <IMG src="/images/edu.gif" width="917" > height="104"/> > </DIV> > </DEPT_PREHTML> > > <DEPT_POSTHTML> > <!-- Some more well-formed HTML. --> > </DEPT_POSTHTML> > > <EMP_PREHTML> > <!-- Some more well-formed HTML. --> > </EMP_PREHTML> > > <EMP_POSTHTML> > <!-- Some more well-formed HTML. --> > </EMP_POSTHTML> > </FORMS> > > I tried to use the complete path /FORMS/DEPT_PREHTML and > /FORMS/DEPT_POSTHTML > as values for PRE_HTML and POST_HTML elements, respectively. It still > does > not work. The XSL stylesheet looks as shown below: > > <xsl:template match="/FORMS/CONTAINERS"> > <xsl:for-each select="CONTAINER"> > > <xsl:copy-of select="//*[name(.)=current()/PRE_HTML]" /> //* means any element that is a descendant of CONTAINER whereas DEPT_PREHTML is a descendant of FORMS so <xsl:copy-of select="ancestor::FORMS//*[name(.)=current()/PRE_HTML" ancestor::FORMS select the element named FORMS which is an ancestor of current node CONTAINER // select the descendants of FORMS [name(.)=current()/PRE_HTML] apply a filter on descendants such that only the element whose tag is equal to the current node's child PRE_HTML is copied > > <!-- Do some more things here --> > > <xsl:copy-of select="//*[name(.)=current()/POST_HTML]" /> > > </xsl:for-each> > </xsl:template> > > I tried using xsl:variable as suggested by another post and that did > not work either. I am not seeing the node containing the well-formed > HTML getting copied to the output. > > Thanks again, > -- Sanjay > > David Carlisle wrote: > > > <xsl:template match="/CONTAINERS"> > > This only works if CONTAINERS is the document element but you > > indicated > > I think that your DEPT_POSTHTML elements were outside this. > > > > <xsl:copy-of select="PRE_HTML" > > <xsl:apply-templates select="*|@*|text()"/> > > </xsl:copy-of> > > > > you are confusing the syntax for xsl:copy and xsl:copy-f. and also > > that select expression starts from the current CONTAINER node, but > > PRE_HTML isn't a child of that. > > > > So.... > > > > =========================================== > > <x> > > <CONTAINERS> > > <CONTAINER> > > <PRE_HTML>DEPT_PREHTML</PRE_HTML> > > <TITLE>Departments</TITLE> > > <POST_HTML>DEPT_POSTHTML</POST_HTML> > > </CONTAINER> > > <CONTAINER> > > <PRE_HTML>EMP_PREHTML</PRE_HTML> > > <TITLE>Employees</TITLE> > > <POST_HTML>EMP_POSTHTML</POST_HTML> > > </CONTAINER> > > </CONTAINERS> > > > > <DEPT_PREHTML> > > <DIV id="Layer1" style="position: absolute"> > > <IMG src="/images/edu.gif" width="917" > > height="104"/> > > </DIV> > > </DEPT_PREHTML> > > > > <DEPT_POSTHTML> > > <!-- Some more well formed HTML. -->kkk > > </DEPT_POSTHTML> > > > > </x> > > > > =========================================== > > > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > version="1.0" > > > > > > > <xsl:output method="xml" indent="yes"/> > > > > <xsl:template match="CONTAINERS">pppp > > <xsl:for-each select="CONTAINER">l > > > > <xsl:copy-of select="//*[name(.)=current()/PRE_HTML]" /> > > > > <!-- Do some more things here --> > > > > <xsl:copy-of select="//*[name(.)=current()/POST_HTML]" /> > > > > </xsl:for-each> > > </xsl:template> > > > > </xsl:stylesheet> > > > > =========================================== > > > > David > > PS you see it is better to ask on the list, than to ask directly:-) > > > > PPS You mail was included twice, once as text and once a HTML, > > please > > don't do that. > > > > XSL-List info and archive: > > http://www.mulberrytech.com/xsl/xsl-list -- ==--==--==--==--==--==--==--==--==--==--==--==--==--== S.Ramaswamy Matrix Infotech Syndicate D-7, Poorti, Vikaspuri, New Delhi, 110018, India PHONE: +91-11-5610050, FAX: +91-11-5535103 WEB http://MatrixInfotech.HyperMart.Net ==--==--==--==--==--==--==--==--==--==--==--==--==--== XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Another newbie question, Sanjay Saxena | Thread | RE: Another newbie question, Kay Michael |
Re: Converting XML <link> to HTML a, Brett McLaughlin | Date | RE: Converting XML <link> to HTML a, Mike Brown |
Month |