|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] Generating xhtml from xml in no namespaceJesper Tverskov jesper.tverskov at gmail.comThu Dec 18 14:15:58 PST 2008
As has been said, there are many more or less cumbersome ways to
output XHTML from XML input in no namespace, most of them bad in my
opinion because they smell to much of fancy work-arounds and not that
easy to reuse.
The only correct way, I feel, is to "use the long form of element
constructor to put the namespace in each time", as Carlisle formulated
it. I tried it out, it works, naturally, but it is a hell of a lot
work.
So I came up with the following method, nice because there is some
natural logic to it, now when it not possible to do it directly. Also,
most of all, it is nice because it is easy to reuse.
1) Declare the following change-namespace function (borrowed
unchanged from Priscilla Walmsley):
declare namespace functx = "http://www.functx.com";
declare function functx:change-element-ns-deep
($element as element(), $newns as xs:string) as element() {
let $newName := QName($newns, local-name($element))
return (element {$newName}
{$element/@*,
for $child in $element/node()
return if ($child instance of element())
then functx:change-element-ns-deep($child, $newns)
else $child
}
)
};
2) Create a variable $x and put good old XHTML output, build the
literal way, into it. The only thing that is missing is
xmlns="http://www.w3.org/1999/xhtml" in the html element.
3) Now use the following:
functx:change-element-ns-deep($x, "http://www.w3.org/1999/xhtml")
Cheers,
Jesper Tverskov
http://www.xmlplease.com
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








