Subject: RE: [xsl] XPath: excluding a descendant From: "Hahn, Andrea" <a.hahn@xxxxxxxx> Date: Tue, 2 Sep 2003 13:19:53 +0200 |
Hello David and Michael, thanks for your answers and sorry for my bad explanation! I am not sure if the empty template is really the way to go, though, because the "everything else" is my problem. To illustrate this a bit better: from the XML fragment below, I want to create some "dump" output like "6.5.1995 Smith somedescription Ireland 100.0" (just some example), but excluding the "29.16" of <LongitudeDecimal>. All of the elements are in the same namespace. So what I am casting around for is how to form the predicate in a way that I get any data from <Gathering> and below, except for that one. I had been thinking that <xsl:apply-templates select="abcd:Gathering[not(.//*[self::abcd:LongitudeDecimal])]"/> would be the way to go; but this snipps all the content from the <Site> node and below as soon as a <LongitudeDecimal> exists (which is optional), not just the <LongitudeDecimal> element itself. I guess this is something really stupid, but I don't seem to be able to solve it. Thanks for your patience! Andrea <TopNode> <aLotOfStuff> <...> </aLotOfStuff> <Gathering> <GatheringDate> <DateText>6.5.1995</DateText> </GatheringDate> <Collectors> <Collector> <CollectorText>Smith</CollectorText> </Collector> </Collectors> <Site> <LocalityText>some description</LocalityText> <Country> <CountryName>Ireland</CountryName> </Country> <CoordinateSets> <Coordinates> <LatLong> <LongitudeDecimal>29.16</LongitudeDecimal> </LatLong> </Coordinates> </CoordinateSets> <Altitude>100.0</Altitude> </Site> </Gathering> <somethingElse> <...> </somethingElse> </TopNode> -----Original Message----- From: Michael Kay [mailto:mhk@xxxxxxxxx] Sent: Dienstag, 2. September 2003 10:03 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] XPath: excluding a descendant > The aim: > For providing some quick-and-dirty html output, just making > sure all data are in there somehow, I want to "dump" all > content below a certain node (not the root element) to the > screen. There is, however, one sub-sub-sub-node whose > contents I want to display on its own in a more structured > way, and I do not want it duplicated in the dump. Following > the suggestions I could find for selecting all children > except for one in the FAQ I constructed this: > > <xsl:apply-templates > select="abcd:Gathering[not(self::LongitudeDecimal)]"/> This will process all the abcd:Gathering elements that are not LongitudeDecimal elements. Of course, none of them are. Without seeing the structure of your XML I find it difficult to tell you the correct code. But the simplest way of not processing a particular element (and its children/descendants) is to write an empty template rule for it: <xsl:template match="LongitideDecimal"/> Michael Kay > > where Gathering is the top node for the dump, and > Gathering/GatheringSite/SiteCoordinates/LongitudeDecimal the > one node I would want _not_ to display. This does not work at > all, I guess because the element-to-exclude is not a child, > but a descendant (?). If I change the line above to > "...not(descendant::...", I get a different effect: not > excepting the one element from the output, but just testing > on presence of the node, with everything being displayed when > "LongitudeDecimal" does not exist, but nothing when it does. > How can I achieve to always display everything, always > without the Longitude-content? > > Thanks, > Andrea > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XPath: excluding a descen, Michael Kay | Thread | Re: [xsl] XPath: excluding a descen, David Carlisle |
[xsl] Disable-output-escaping withi, Kristoffer Olson | Date | [xsl] Where is the DTD for XSL, Sanghamitra Das |
Month |