cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lars Huttar <lars_hut...@sil.org>
Subject Re: Transform the output of the ValidationReportTransformers in XSL
Date Mon, 26 Mar 2007 15:49:44 GMT
On 3/26/2007 9:47 AM, Christofer.Dutz@univativ.de wrote:
> Hi,
>
>  
>
> I am having a problem that is totally driving me nuts (Cocoon 2.1.10):
>
> I am using the ValidationReportTransformer to create a report why a validation of an
xml-document failed.
>
> I nicely outputs a report with a nice little xmlns attribute ... this is driving me nuts:
>
>  
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <report xmlns="http://apache.org/cocoon/validation/1.0">
>
>     <error line="11">cvc-minLength-valid: Value 'Dutz' with length = '4' is not
facet-valid with
>
>         respect to minLength '6' for type '#AnonType_namekontaktladeraumangebot'.</error>
>
>     <error line="11">cvc-type.3.1.3: The value 'Dutz' of element 'name' is not
valid.</error>
>
>     <error line="24">cvc-minLength-valid: Value '' with length = '0' is not facet-valid
with respect
>
>         to minLength '1' for type '#AnonType_plzfreiladeraumangebot'.</error>
>
>     <error line="24">cvc-type.3.1.3: The value '' of element 'plz' is not valid.</error>
>
>     <error line="25">cvc-minLength-valid: Value '' with length = '0' is not facet-valid
with respect
>
>         to minLength '1' for type '#AnonType_ortfreiladeraumangebot'.</error>
>
>     <error line="25">cvc-type.3.1.3: The value '' of element 'ort' is not valid.</error>
>
>     <error line="26">cvc-minLength-valid: Value '' with length = '0' is not facet-valid
with respect
>
>         to minLength '1' for type '#AnonType_landfreiladeraumangebot'.</error>
>
>     <error line="26">cvc-type.3.1.3: The value '' of element 'land' is not valid.</error>
>
>     <error line="36">cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.</error>
>
>     <error line="36">cvc-type.3.1.3: The value '' of element 'fahrzeugtyp' is not
valid.</error>
>
> </report>
>
>  
>
> As soon as this xmlns-attribute is there no XSL transformation seems to work. For example:
If I simply want to replace the root element "report" with a "test" element, this xsl should
do the job:
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet xmlns="http://apache.org/cocoon/validation/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
>
>     <xsl:template match="/report">
>
>         <test>
>
>             <xsl:copy-of select="error"/>
>
>         </test>
>
>     </xsl:template>
>
> </xsl:stylesheet>
>
>  
>
> Unfortunetly the "/report" doesn't match and the pure text is copied to the output.
>
>   
That's right, it shouldn't. The default namespace in the stylesheet only 
applies to unprefixed elements in the stylesheet, such as <test>... not 
XPath expressions, like /report. See 
http://www.dpawson.co.uk/xsl/sect2/N5536.html#d7594e1012


> If I change it to "
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet xmlns="http://apache.org/cocoon/validation/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
>
>     <xsl:template match="/">
>
>         <test>
>
>             <xsl:copy-of select="error"/>
>
>         </test>
>
>     </xsl:template>
>
> </xsl:stylesheet>
>
>  
>
> At least the test is copied. 
>
>   
The <test> is output, but no <error> elements will be copied because 
there is no <error> child of the context node (/).
> The only transformation that works is:
>
>  
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet xmlns="http://apache.org/cocoon/validation/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
>
>     <xsl:template match="/*">
>
>         <test>
>
>             <xsl:copy-of select="*"/>
>
>         </test>
>
>     </xsl:template>
>
> </xsl:stylesheet>
>
>  
>
> Could someone tell me why this is that way and how I can convince the validation-report
transformer to stop adding the namespace stuff to the output?
>   
See http://www.dpawson.co.uk/xsl/sect2/N5536.html#d7594e1012

You want

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:v="http://apache.org/cocoon/validation/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">

    <xsl:template match="/v:report">

        <v:test>

            <xsl:copy-of select="v:error"/>

        </v:test>

    </xsl:template>

</xsl:stylesheet>

Lars

> Well at the moment I got everything to work, by modifying the Transformers code, but
that can't really be the optimal solution.
>
>  
>
> Regards, 
>
>  
>
>     Christofer Dutz
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message