Subject: Re: [xsl] replacing selective p tags with tags with attributes From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Thu, 18 Apr 2013 20:30:22 -0700 |
strip513, Did you know that cross-posting is evil? See this answer to your identical question asked at SO: http://stackoverflow.com/a/16096705/36305 On Thu, Apr 18, 2013 at 8:02 PM, G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote: > At 2013-04-18 22:38 -0400, strip513 . wrote: >> >> Hey guys, >> >> I have an xml file with many p tags -- >> >> INPUT -- >> ... >> >> I want all the p tags which are above inline img class to be >> replaced by <p channel="y.com"> and it will look like >> ... >> >> I dont want to replace any other normal p tags.So, in this >> particular example find and replace will happen at two places. >> >> I used this code,but it is not working.Please advise.Thanks. > > > I advise you to look at XSLT differently, so I'm glad you posted. You are > treating XSLT imperatively, in a manner like Java or C or Python, and not > taking advantage of what XSLT can do for you. And you are trying to create > angle brackets in your strings, which is entirely inappropriate for XSLT. > > Consider the working solution below that does what you ask. It is written > declaratively and it looks at the input as a tree of nodes, not as a string > of angle brackets. I declare in my stylesheet what I want the output to > look like for a given input element. I've characterized what is special > about <p> element nodes that need to be written out differently, otherwise, > all element nodes are simply copied to the result tree as they are found in > the input tree. > > You need to approach solutions in a manner appropriate to the processing > model (declarative) and data model (nodes) of XSLT. Using purely imperative > approaches and putting angle strings will not help you and will hinder your > use of the language. > > XSLT is built for XML and with XML, it is not a language that simply > supports XML from function calls. > > I hope you find this helpful. > > . . . . . . . Ken > > > T:\ftemp>type arkle.xml > <?xml version="1.0" encoding="UTF-8"?> > <test> > > <p> > <inline-img class="full"> > <web-main-photo> > <photo src="http://yahoo.com/test.jpg"/> > </web-main-photo> > <data> > <br/> > <caption> > <p> (Nick Wass/Associated Press)</p> > </caption> > </data> > </inline-img> > </p> > <p>this is content </p> > <p>After missing the past three games with an injured left > leg, Martin Erat will return to the <a href="/blog/">Capitals</a>' > lineup Saturday night at Verizon Center against the Tampa Bay > Lightning.</p> > <p>Erat, 31, suffered the injury on April 6 at Florida > when Panthers defenseman Erik Gudbranson delivered a late hit from > behind that sent the veteran winger awkwardly into the boards. He > avoided significant harm, though, and after five consecutive days of > skating Erat said he's prepared to get back to game action.</p> > <p> > <inline-img class="full"> > <web-main-photo> > <photo src="http://yahoo.com/test.jpg"/> > </web-main-photo> > <data> > <br/> > <caption> > <p> (Nick Wass/Associated Press)</p> > </caption> > </data> > </inline-img> > </p> > <p>"Feeling good. Feels better every day, I'm pretty much > ready to go," Erat said, adding that while he would have much rather > been playing games with his new team the time to take part in practice > and watch the system work from above should help him make a smooth > transition.</p> > </test> > > T:\ftemp>call xslt arkle.xml arkle.xsl > <?xml version="1.0" encoding="utf-8"?><test> > <p channel="y"> > > <inline-img class="full"> > <web-main-photo> > <photo src="http://yahoo.com/test.jpg"/> > </web-main-photo> > <data> > <br/> > <caption> > <p> (Nick Wass/Associated Press)</p> > </caption> > </data> > </inline-img> > </p> > <p>this is content </p> > <p>After missing the past three games with an injured left > leg, Martin Erat will return to the <a href="/blog/">Capitals</a>' > lineup Saturday night at Verizon Center against the Tampa Bay > Lightning.</p> > <p>Erat, 31, suffered the injury on April 6 at Florida > when Panthers defenseman Erik Gudbranson delivered a late hit from > behind that sent the veteran winger awkwardly into the boards. He > avoided significant harm, though, and after five consecutive days of > skating Erat said he's prepared to get back to game action.</p> > <p channel="y"> > > <inline-img class="full"> > <web-main-photo> > <photo src="http://yahoo.com/test.jpg"/> > </web-main-photo> > <data> > <br/> > <caption> > <p> (Nick Wass/Associated Press)</p> > </caption> > </data> > </inline-img> > </p> > <p>"Feeling good. Feels better every day, I'm pretty much > ready to go," Erat said, adding that while he would have much rather > been playing games with his new team the time to take part in practice > and watch the system work from above should help him make a smooth > transition.</p> > </test> > T:\ftemp>type arkle.xsl > <?xml version="1.0" encoding="US-ASCII"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:template match="p[inline-img]"> > <p channel="y"> > <xsl:apply-templates/> > </p> > </xsl:template> > > <xsl:template match="@*|node()"><!--identity for all other nodes--> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > T:\ftemp>rem Done! > > > -- > Contact us for world-wide XML consulting and instructor-led training | > Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm | > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ | > G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx | > Google+ profile: https://plus.google.com/116832879756988317389/about | > Legal business disclaimers: http://www.CraneSoftwrights.com/legal | > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] replacing selective p tag, G. Ken Holman | Thread | [xsl] Using mode removes linebreaks, trond.huso |
Re: [xsl] replacing selective p tag, G. Ken Holman | Date | [xsl] Using mode removes linebreaks, trond.huso |
Month |