[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Forcing a namespace declaration

Subject: Forcing a namespace declaration
From: "tom tom" <tomxsllist@xxxxxxxxxxx>
Date: Tue, 01 May 2007 14:37:11 +0100
 Forcing a namespace declaration
Hi all,

The following XML:

<?xml version="1.0" encoding="UTF-8"?>
<n xmlns="http://www.test.com" xmlns:xhtml="http://www.w3.org/1999/xhtml"/>

uses the following XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rss1="http://purl.org/rss/1.0/" exclude-result-prefixes="rss1" xpath-default-namespace="http://www.test.com">


<xsl:output indent="yes" method="xml"/>

<xsl:template match="n" >
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<channel>fffffff</channel>
</rdf:RDF>
</xsl:template>


</xsl:stylesheet>

to generate the following XML:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel xmlns="http://purl.org/rss/1.0/">fffffff</channel>
</rdf:RDF>

I'm using XSLT 2 in Saxon 8.

The problem is I need the http://purl.org/rss/1.0/ xmlns declaration to appear on the root element instead of on the channel element.

I believe it is appearing where it is due to the xmlns:rss1="http://purl.org/rss/1.0/" declaration, as when I remove this it works in the way I want it to. The xmlns:rss1="http://purl.org/rss/1.0/" declaration is needed on the root element as elsewhere in the stylesheet I need to process an external document with elements belonging to this namespace.

The only way I can see to fix this is to have xpath-default-namespace attributes scattered at appropriate points in the stylesheet. As the templates do not separate easily into sections determined by which XML document they are working on i believe this will lead to code that is difficult to read.

Can anyone explain why http://purl.org/rss/1.0/ is being declared on channel instead of the root element?

Can anyone propose a better solution to this problem than the one I have come up with?

Thanks

Tom

_________________________________________________________________
Get Hotmail, News, Sport and Entertainment from MSN on your mobile. http://www.msn.txt4content.com/


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.