RE: [xsl] How to check whether any of child node with particular tag name h as non-empty String value

Subject: RE: [xsl] How to check whether any of child node with particular tag name h as non-empty String value
From: Ivan Pedruzzi <ipedruzz@xxxxxxxxxxxx>
Date: Fri, 31 Jan 2003 16:31:19 -0500
Assuming your xml source is

<?xml version="1.0"?>
<root>
  <ATTACHMENT>
    <ATTACHMENT_NAME></ATTACHMENT_NAME>
    <ATTACHMENT_LINK>http://yahoo.com</ATTACHMENT_LINK>
    <ATTACHMENT_NAME>link</ATTACHMENT_NAME>
    <ATTACHMENT_LINK>http://msn.com</ATTACHMENT_LINK>
  </ATTACHMENT>
  <ATTACHMENT>
    <ATTACHMENT_NAME>link2</ATTACHMENT_NAME>
    <ATTACHMENT_LINK>http://msn.com</ATTACHMENT_LINK>
  </ATTACHMENT>
</root>

You could do

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 <xsl:output method="html"/>
 <xsl:template match="/">
  <html><body>
  <P><B>ATTACHMENT:</B></P>
    <xsl:for-each select="root/ATTACHMENT">
     <xsl:for-each
select="child::ATTACHMENT_NAME[string(normalize-space(.))]">
      <xsl:variable name="href"
select="following-sibling::ATTACHMENT_LINK[1]"/>
      <a href="{$href}"><xsl:apply-templates/></a>
      <br/>
     </xsl:for-each>
    </xsl:for-each>
   </body></html>
 </xsl:template>
</xsl:stylesheet>

Ivan

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Wang, Dongzhi (ACF)
> Sent: Friday, January 31, 2003 4:06 PM
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: RE: [xsl] How to check whether any of child node 
> with particular tag name h as non-empty String value
> 
> 
> 
> Thanks for the suggesion.  But I forgot to mention I should 
> only output "<B>ATTACHMENT:</B>" EXACTLY one time, like:
> 
> ATTACHMENT: link1
> link2
> 
> With your suggestion, the output will be like:
> 
> ATTACHMENT: link1
> ATTACHMENT: link2
> 
> Could you please give me any other suggestion?
> 
> Thanks!
> Dongzhi
> 
> 
> -----Original Message-----
> From: Ivan Pedruzzi [mailto:ipedruzz@xxxxxxxxxxxx]
> Sent: Friday, January 31, 2003 3:44 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] How to check whether any of child node 
> with particular tag name h as non-empty String value
> 
> 
> 
> Try this
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" 
>  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>  <xsl:output method="html"/>
>  <xsl:template match="ATTACHMENT">
>   <html><body><P>
>      <B>ATTACHMENT:</B>
>      <xsl:for-each 
> select="child::ATTACHMENT_NAME[string(normalize-space(.))]">
>       <xsl:variable name="href" 
> select="following-sibling::ATTACHMENT_LINK[1]"/>
>       <br/>
>       <a href="{$href}">
>        <xsl:apply-templates/>
>       </a>
>      </xsl:for-each>
>     </P></body></html>
>    </xsl:template>
> </xsl:stylesheet>  	
> 
> 
> Ivan
> 
> > -----Original Message-----
> > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> > Wang, Dongzhi (ACF)
> > Sent: Friday, January 31, 2003 3:14 PM
> > To: 'XSL-List@xxxxxxxxxxxxxxxxxxxxxx'
> > Subject: [xsl] How to check whether any of child node with 
> > particular tag name h as non-empty String value
> > 
> > 
> > Hi All,
> > 
> > I run into a problem where I'm not able to check  whether any
> > of child node with particular tag name has empty String value.  
> > 
> > Here's the XML:
> > 
> > 	<ATTACHMENT>
> > 		<ATTACHMENT_NAME></ATTACHMENT_NAME>
> > 		<ATTACHMENT_LINK> http://yahoo.com </ATTACHMENT_LINK>
> > 		<ATTACHMENT_NAME> link </ATTACHMENT_NAME>
> > 		<ATTACHMENT_LINK> http://msn.com </ATTACHMENT_LINK>
> > 	</ATTACHMENT>
> > 
> > The requirement is to do something ANY of the
> > <ATTACHMENT_NAME> elemement has non-empty String.  Here's the 
> > XSL I wrote:
> > 
> >   	<xsl:template match="ATTACHMENT">
> > 		<xsl:if
> > test="string(normalize-space(child::ATTACHMENT_NAME))">
> > 			<P>
> > 				<B>ATTACHMENT:</B>
> > 				<xsl:for-each select="ATTACHMENT_NAME">
> > 					<xsl:variable 
> > name="href" select="following-sibling::ATTACHMENT_LINK" />
> > 					<a href ="{$href}">
> > 						<xsl:apply-templates />
> > 					</a>
> > 					<br/>
> > 				</xsl:for-each>
> > 			</P>
> > 		</xsl:if>
> >   	</xsl:template>
> > 
> > But from the result I got, seems like the decision is only
> > based on the first <ATTACHMENT_NAME> element it found, and 
> > totally ignore the later ones. i.e. if the first 
> > <ATTACHMENT_NAME> has empty String value but the second one 
> > has String value "link" in it, it won't fall into the if block. 
> > 
> > Thanks in advance for any suggestions!
> > 
> > Dongzhi
> > 
> > 
> >  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