[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] How to capture text?


Subject: RE: [xsl] How to capture text?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 18 Aug 2005 09:36:47 +0100

As far as I can see you are trying to get all the text nodes other than
whitespace text nodes and text:user-field-get text nodes, so I would do:

<xsl:strip-space elements="*"/>

<xsl:template match="text:user-field-get"/>

<xsl:template match="text()">
  <aid><xsl:value-of select="normalize-space(.)"/></aid>
</xsl:template>


Michael Kay
http://www.saxonica.com/

 

> -----Original Message-----
> From: aaron apigo [mailto:aaronjose_apigo2001@xxxxxxxxx] 
> Sent: 18 August 2005 06:31
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] How to capture text?
> 
> Hi,
>   I'm a beginner in XSLT, i want to transform this
> piece of XML:
> 
> <text:p>
> <text:user-field-get
> text:name="aid">ArticleId</text:user-field-get>
> <text:span>1423</text:span>
> </text:p>
> <text:p>
> <text:span>
> <text:user-field-get
> text:name="aid">ArticleId</text:user-field-get>
> </text:span>
> <text:span>1423</text:span>
> </text:p>
> <text:p>
> <text:span>
> <text:user-field-get
> text:name="aid">ArticleId</text:user-field-get>
> </text:span>1423
> </text:p>
> <text:p>
> <text:user-field-get
> text:name="aid">ArticleId</text:user-field-get>1423
> </text:p>
> 
> output:
> <aid>1423</aid>
> <aid>1423</aid>
> <aid>1423</aid>
> <aid>1423</aid>
> 
> if you noticed all the data are the same, what I'm
> trying to do is to check all the possible scenario
> that might happen in the XML. Sometimes
> <text:user-field-get text:name="aid"> appears inside
> the <text:span> sometimes not, and same with the text,
> sometimes it appears inside the <text:span>, sometimes
> not. So my XSLT should handle all those scenario.
> 
> with my XSLT,
> 
>     <xsl:template match="text:p">
>         <xsl:apply-templates
> select="text:span/text:user-field-get|text:user-field-get"/>
>     </xsl:template>
>     
>     <xsl:template
> match="text:span/text:user-field-get">
>             <xsl:element name="{@text:name}">
> 	                <xsl:apply-templates
> select="parent::text:span/following-sibling::*[1][self::text:s
> pan/text()]"/>
>         	        <xsl:apply-templates
> select="following-sibling::text()"/>
>             </xsl:element>
>     </xsl:template>
>     
>     <xsl:template match="text:user-field-get">
>         <xsl:element name="{@text:name}">
>             <xsl:apply-templates
> select="following-sibling::text:span/text()"/>	
>         </xsl:element>
>     </xsl:template>    
> 
> my output,
> 
> <aid>1423</aid>
> <aid>1423</aid>
> <aid></aid>
> <aid></aid>
> 
> I can't handle the text that are not inside the
> <text:span>
> 
> Please help.
> 
> regards.
> aaron
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 		
> ____________________________________________________
> Start your day with Yahoo! - make it your home page 
> http://www.yahoo.com/r/hs 


Current Thread
Keywords