XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] XSLT stylesheet looping through the same node (recursion?)

Hi David,

 

Thanks for your valuable suggestion with the following output:

 

( 1 ) <p xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">

( 2 ) <strong>Interest:</strong>

( 3 ) <br clear="none" />

( 4 ) Tennis

( 5 ) </p>

( 6 ) <p xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">

( 7 ) <strong>Interest:</strong>

( 8 ) <br clear="none" />

( 9 ) Movie

( 10 )</p>

( 11 )<p xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">

( 12 ) <strong>Interest:</strong>

( 13) <br clear="none" />

( 14) Swimming

( 15 )</p>

( 16 ) &gt;

</area>

 

( a ) <xsl:stylesheet version="1.0"
( b ) xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
( c ) xmlns:ns="http://www.w3.org/1999/xhtml"
( d ) exclude-result-prefixes="ns">
( e )
( f ) <xsl:template match="/">
( g )<xsl:copy-of
( h )select="/ns:html/ns:body/ns:div[@id='content']/ns:p[contains(ns:strong,'Interest:')]"/>
( i ) </xsl:template>
( j ) </xsl:stylesheet>


 

This is great except that I would like to achieve the following control over what comes out:

( i ) Only want the values of the current node. ie <interest>Tennis</interest>, <interest>Movie</interest>,<interest>Swimming</interest>. In other word, no lines 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16.

( ii ) I am also having difficulty getting another list of element values that comes immediately after the <Interest> element. This may be due to the context node having been changed by when running the above stylesheet.

( iii ) There are other element values that I want to retrieve from the same document, where they are made up of either single value as well as multiples. I will need to some how include the above segment codes into the following current working stylesheet responsible for retrieving other single element value(s), using the current context node where possible:

 

<xsl:template match="/">

<area>

<xsl:for-each select="/ns:html/ns:body/ns:div[@id='content']/ns:p/ns:strong">

<xsl:if test="contains(.,'Firstname:')">

<xsl:choose>

<xsl:when test="contains(.,'Firstname:')">

<firstname><xsl:value-of select="../ns:a"/></firstname>

</xsl:when>

<xsl:otherwise>

<firstname>Unknown</firstname>

</xsl:otherwise>

</xsl:choose>

</xsl:if>

<xsl:if test="contains(.,'Surname:')">

<xsl:choose>

<xsl:when test="contains(.,'Surname:')">

<surname><xsl:value-of select="../text()"/></surname>

</xsl:when>

<xsl:otherwise>

<surname>Unknown</surname>

</xsl:otherwise>

</xsl:choose>

......

 

Thanks a lot for your support,

Jack




From: David Carlisle <davidc@nag.co.uk>
To: netbeansfan@yahoo.com.au
Cc: xml-dev@lists.xml.org
Sent: Tuesday, 27 January, 2009 12:43:06 AM
Subject: Re: [xml-dev] XSLT stylesheet looping through the same node (recursion?)


It would be much easier to look at your examples if you posted xml
rather than a screen scrape of IE (I would guess) view source, which is
full of spurious + - and spacing characters that make the result
unprocessable. Also  your posted stylesheet is not well formed (no closing
</area>) so it presumably isn't the stylesheet that produced the posted
resut?


From your description It may be that you just want


<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://www.w3..org/1999/xhtml"
exclude-result-prefixes="ns">

<xsl:template match="/">
<xsl:copy-of
select="/ns:html/ns:body/ns:div[@id='content']/ns:p[contains(ns:strong,'Interest:')]"/>
</xsl:template>
</xsl:stylesheet>

which returns all p elements that match the supplied xpath.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________


Stay connected to the people that matter most with a smarter inbox. Take a look.

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS