xsl:attribute: The attribute name 'xmlns' is not allowed.

Simon Lukasik isimluk at fedoraproject.org
Wed Jun 5 07:30:38 UTC 2013


On 01/30/2013 07:36 PM, Gary Gapinski wrote:
> On 01/30/2013 12:49 PM, Gary Gapinski wrote:
>> I agree. There is nothing wrong with the usage.
>>
> 
> I was wrong.
> 
> See https://mail.gnome.org/archives/xslt/2012-September/msg00002.html
> and
> https://mail.gnome.org/archives/commits-list/2012-September/msg02486.html.
> 
> http://www.w3.org/TR/xslt#creating-attributes prohibits this.
> 
> http://www.w3.org/TR/xslt20/#creating-attributes says the same thing (I
> think), though with a lot more words.
> 
> Saxon 9 throws the same error.
> 
> The following avoids the error (however, the resulting file does not
> validate, but I think that's the case anyway).

It does not validate because it pushes only the <Benchmark> element to
the XCCDF namespace. All other elements remain in an empty namespace.

There seems to be no simple (XSLT) way how to put all the elements to a
given namespace. Basically, each element needs to be refined with the
XCCDF namespace. I prefer to do this in a separate XSL transformation
(see the last patch, or ticket 202).

> 
>     gapinski at gr2186815:~/Projects/scap-security-guide/RHEL6$ git diff
>     diff --git a/RHEL6/transforms/shorthand2xccdf.xslt b/RHEL6/transforms/shorthand2xccdf.xslt
>     index 507238e..59a0b53 100644
>     --- a/RHEL6/transforms/shorthand2xccdf.xslt
>     +++ b/RHEL6/transforms/shorthand2xccdf.xslt
>     @@ -15,12 +15,9 @@ exclude-result-prefixes="xccdf xhtml dc">
>      
>        <!-- Content:template -->
>        <xsl:template match="Benchmark">
>     -    <xsl:copy>
>     -      <xsl:attribute name="xmlns">
>     -        <xsl:text>http://checklists.nist.gov/xccdf/1.1</xsl:text>
>     -      </xsl:attribute>
>     +    <xsl:element name="Benchmark" namespace="http://checklists.nist.gov/xccdf/1.1">
>            <xsl:apply-templates select="@*|node()" />
>     -    </xsl:copy>
>     +    </xsl:element>
>        </xsl:template>
>      
>        <!-- insert current date -->
>     gapinski at gr2186815:~/Projects/scap-security-guide/RHEL6$ 
> 
> The template becomes just
> 
>       <!-- Content:template -->
>       <xsl:template match="Benchmark">
>         <xsl:element name="Benchmark" namespace="http://checklists.nist.gov/xccdf/1.1">
>           <xsl:apply-templates select="@*|node()" />
>         </xsl:element>
>       </xsl:template>
> 
> 
> 
> _______________________________________________
> scap-security-guide mailing list
> scap-security-guide at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide
> 



More information about the scap-security-guide mailing list