Re: AW: [xsl] access the root element

Subject: Re: AW: [xsl] access the root element
From: "Kai Hackemesser" <kaha@xxxxxx>
Date: Thu, 3 Nov 2005 17:35:30 +0100 (MET)
Roman,

This was the solution, thanks. But I have to admit that I haven't completely
understood this namespace problem.

Regards,
Kai

> --- Urspr|ngliche Nachricht ---
> Von: "Huditsch Roman" <Roman.Huditsch@xxxxxxxxxxxxx>
> An: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Betreff: AW: [xsl] access the root element
> Datum: Thu, 3 Nov 2005 16:48:53 +0100
> 
> Hallo Kai,
> 
> There seem to be at least two problems in your XSLT stylesheet.
> 
> 1., If you want to match an element within a namespace (as it is in your
> source document),
> you need to define that namespace in your stylesheet, too.
> Therefore the beginning of your stylesheet needs to be like:
>  <?xml version="1.0" encoding="UTF-8"?>
>  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="2.0"
xmlns:m="http://metrics.sourceforge.net/2003/Metrics-First-Flat";>
> 
> That allows you to access the nodes in your source file by using the
> namespace prefix ("m" in my namespace declaration).
> Having that in mind
> <xsl:for-each select="Metric[count(Value)=1]">
> changes to 
> <xsl:for-each select="m:Metric[count(Value)=1]">
> 
> 
> 2. You are trying to acces an <Metric> element directly below "/", which
> does not select what you want according to your source file.
> You need to select m:Metrics/m:Metric[count(Value)=1] since Metrics is
> your root element, not Metric.
> 
> I hope this helps.
> 
> liebste Gr|_e,
> Roman Huditsch
> _______________________________________
> 
> Roman Huditsch
> IT and Electronic Publishing
> LexisNexis ARD Orac 
> Marxergasse 25
> 1030 Vienna
> Austria 
> ph: +43-1-534 52-1514
> f: +43-1-534 52-140
> e-mail roman.huditsch@xxxxxxxxxxxxx
> www.lexisnexis.at
>  
> 
> > -----Urspr|ngliche Nachricht-----
> > Von: Kai Hackemesser [mailto:kaha@xxxxxx] 
> > Gesendet: Donnerstag, 3. November 2005 16:34
> > An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Betreff: [xsl] access the root element
> > 
> > I'm desparating.
> > 
> > I have an XML document (very large, 78k lines, generated by 
> > the Eclipse Plugin "Eclipse Metrics") where I want to write 
> > an XSL for. The XML is formed like that:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <Metrics scope="eVistaDev" type="PackageRoot" date="2005-11-02"
> > xmlns="http://metrics.sourceforge.net/2003/Metrics-First-Flat";>
> > <Cycle>
> > <Package>A.Package.Name</package>
> > </Cycle>
> > <Metric>(further elements)</Metric>
> > <Metric>(further elements)</Metric>
> > ...
> > <Metrics>
> > 
> > It is a completely wellformed XML file. I try to access the 
> > attributes of the Metrics element (the root element). I have 
> > no luck with that. Can anybody tell me where is the error for 
> > that I'm blind for?
> > 
> > this is the xsl file I have written so far:
> > 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > version="2.0">
> >     <xsl:output method="html"/>
> >     <xsl:template match="/">
> >         <html>
> >             <head>
> >                 <title>Metrics Report from <xsl:value-of 
> > select="@date"
> > /></title>
> >             </head>
> >             <body >
> >                 <H1><xsl:value-of select="@date" />, 
> > <xsl:value-of select="@type" /></H1>
> >                 <h2>Overview for calculated Metrics</h2>
> >                 <!-- 1. Overview over Project -->
> >                 <h3>Overall Metrics</h3>
> >                 <ul>
> >                 <xsl:for-each select="Metric[count(Value)=1]">
> >                     <li><xsl:value-of select="@id"/> - 
> > <xsl:value-of select="@description"/> : <xsl:value-of 
> > select="./Value/@value"/></li>
> >                 </xsl:for-each>
> >                 </ul>
> >                 <!-- 2. Overview over Packages -->
> >             </body>
> >         </html>
> >     </xsl:template>    
> > </xsl:stylesheet>

Current Thread