xsl-list
[Top] [All Lists]

Re: [xsl] Re: XML Feed Transformation

2007-10-16 03:42:25
I used Kernow 1.5.2 beta b2 + Saxon-B 8.9.0.4 to test your example.

I fixed the following errors to have your example work.......
For those interested only in the relevant answer, you can jump
directly to point 7.

1. Missing closing </p> in sample XSL
Error on line 29 column 58 of file:/home/enz/projects/sandbox/feed.xsl:
SXXP0003: Error reported by XML parser: The element type "p" must be
terminated by the matching end-tag "</p>".

replaced
</clxml:url><p/>
with
</clxml:url></p>

2. Unescaped '&' in attribute value of sample XML
Error on line 12 column 61 of file:/home/enz/projects/sandbox/input.xml:
SXXP0003: Error reported by XML parser: The reference to entity "f"
must end with the ';' delimiter.

Replaced &
with
&amp;

3. Same error on line 15 and 19 of sample XML

you now have
link="index_one.pl?c=dia&amp;f=dia_1400_2"
link="index_one.pl?c=dia&amp;f=dia_1400_1"
link="index_one.pl?c=dia&amp;f=dia_fbem"

4. Missing '<' in start-tag line 21
Error on line 24 column 3 of file:/home/enz/projects/sandbox/input.xml:
SXXP0003: Error reported by XML parser: The element type "sport1-ml"
must be terminated by the matching end-tag "</sport1-ml>".

Replaced
element name="link" link="http://wap.one.at/fussball_euro2008"; imagename="">
with
<element name="link" link="http://wap.one.at/fussball_euro2008"; imagename="">

5. The sample is now running, with result
<?xml version="1.0" encoding="UTF-8"?><clxml:page
xmlns:clxml="changingworlds.com/clxml" level="1"><clxml:content
url="test" recs="false" level="1" nodeid="tmpSportPage"
title="Diashows"><clxml:text
href=""><clxml:bold/><clxml:lineBreak/><label>Und wieder jubeln am
Ende die anderen
...</label><clxml:lineBreak/></clxml:text><clxml:custom
property="pageType"
value="sportMenuPage"/></clxml:content></clxml:page>

6. Now I try to understand the issue you mention:
Everything works fine except image is <element image='' imagename=''>
is not transformed for some reason. I dont understand what exactly is
missing?

It seems that
by <element image='' imagename=''>
you refer to
<element name="image"
imagename="http://webat1.sport1.at/one/out/img/dia/dia_1400_1.jpg"/>
since this is the only "element" with occurrences of both "image" and
"imagename".

7. THE ANSWER: imagename is an attribute not a child element,
thus
<xsl:attribute name="href"><xsl:value-of
select="/sport1-ml/element[(@name='image')]/imagename"/></xsl:attribute>
should be rewritten
<xsl:attribute name="href"><xsl:value-of
select="/sport1-ml/element[(@name='image')]/@imagename"/></xsl:attribute>

Then you get
<?xml version="1.0" encoding="UTF-8"?><clxml:page
xmlns:clxml="changingworlds.com/clxml" level="1"><clxml:content
url="test" recs="false" level="1" nodeid="tmpSportPage"
title="Diashows"><clxml:text
href="http://webat1.sport1.at/one/out/img/dia/dia_1400_1.jpg";><clxml:bold/><clxml:lineBreak/><label>Und
wieder jubeln am Ende die anderen
...</label><clxml:lineBreak/></clxml:text><clxml:custom
property="pageType"
value="sportMenuPage"/></clxml:content></clxml:page>

where
<clxml:text href="">
is now
<clxml:text href="http://webat1.sport1.at/one/out/img/dia/dia_1400_1.jpg";>

------------------------------------------------

Verdict:
your sample XML does not run with your sample XSL. I strongly advise
that you provide only tested XML and XSL samples in your requests :)
This will let people on this list spend more time on your problem and
less time in guessing and investigations...

A second piece of advice: you should rewrite your XSL using a
combination of <xsl:apply-templates select="..." /> and <xsl:template
match="..."> instead of using the "for-each" style in a single global
template.

Kind Regards,

Eric Bréchemier

  My professional charges are upon a fixed scale.
  I do not vary them, save when I remit them altogether.
  -- Sherlock Holmes, The Problem of Thor Bridge

On 10/16/07, Zulfikar Dholkawala <zulfikarmd(_at_)gmail(_dot_)com> wrote:
Hi all,
I have following Feed which I want to transform.

<sport1-ml>
<CHARGED/>
<element name="head"/>
<element name="title" imagename="diashows.jpg">
<title>Diashows</title>
</element>
<element name="image"
imagename="http://webat1.sport1.at/one/out/img/dia/dia_1400_1.jpg"/>
<element name="text">
<label>Und wieder jubeln am Ende die anderen ...</label>
</element>
<element name="link" imagename="" link="index_one.pl?c=dia&f=dia_1400_2">
<label>Nächstes Bild</label>
</element>
<element name="link" imagename="" link="index_one.pl?c=dia&f=dia_1400_1">
<label>Vorheriges Bild</label>
</element>
<element name="spacer"/>
<element name="link" link="index_one.pl?c=dia&f=dia_fbem">
<label>Diashows</label>
</element>
element name="link" link="http://wap.one.at/fussball_euro2008"; imagename="">
<label>EURO 2008</label>
</element>
<element name="homelink"/>
<element name="footer"/>
</sport1-ml>


I have following XSL for transformation:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:clxml="changingworlds.com/clxml">
        <xsl:template match="/">
                <clxml:page level="1">
                        <clxml:content url="test" recs="false" level="1" 
nodeid="tmpSportPage">
                                <xsl:attribute name="title"><xsl:value-of
select="/sport1-ml/element[(@name='title')]/title"/></xsl:attribute>
                                <clxml:text>

                                        <xsl:for-each 
select="/sport1-ml/element">
                                                <xsl:if test="@name = 
'image'">
                                                        <xsl:attribute 
name="href"><xsl:value-of
select="/sport1-ml/element[(@name='image')]/imagename"/></xsl:attribute>
                                                </xsl:if>
                                                <xsl:if test="@name = 'link'">
                                                        <!--<xsl:choose>-->
                                                        <xsl:if test="label = 
'Aktualisieren' or label = 'Fr&#252;here
Kommentare' or label = 'Renndetails' or label = 'Rennen' or label =
'Startaufstellung' or label = 'Qualifikation'">
                                                                <p><clxml:url>
                                                                        
<xsl:attribute name="href"><xsl:value-of
select="concat('sport1',
substring-after(@link,'?'))"/></xsl:attribute>
                                                                        
<xsl:value-of select="label"/>
                                                                
</clxml:url><p/>

                                                        </xsl:if>
</xsl:if>
                                                <xsl:if test="@name = 'text'">
                                                        <clxml:bold>
                                                                <xsl:value-of 
select="title"/>
                                                        </clxml:bold>
                                                        <xsl:if test="label">
                                                                
<clxml:lineBreak/>
                                                                <xsl:copy-of 
select="label"/>
                                                        </xsl:if>
                                                        <clxml:lineBreak/>
                                                </xsl:if>
                                        </xsl:for-each>
                                </clxml:text>
                                <clxml:custom property="pageType" 
value="sportMenuPage"/>
                        </clxml:content>
                </clxml:page>
        </xsl:template>
</xsl:stylesheet>

Everything works fine except image is <element image='' imagename=''>
is not transformed for some reason. I dont understand what exactly is
missing?

Can someone guide me? Thanks.

ZM

--~------------------------------------------------------------------
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>