xsl-list
[Top] [All Lists]

RE: How to capture text?

2005-08-18 01:36:47
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(_at_)yahoo(_dot_)com] 
Sent: 18 August 2005 06:31
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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="{(_at_)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="{(_at_)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 
 

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>