From: Joop R. <jo...@lc...> - 2009-05-11 17:11:54
|
You could create a qualified name and leave out the namespace declaration: let $prefix := "gc" let $URI := "http://www.example.com" let $elementName := "test" let $attributeName := "attribute" let $attributeValue := "value" let $elementContent := "This is the element's content" return element { QName( $URI, $elementName ) } { attribute { $attributeName } { $attributeValue } , $elementContent } The result will be correct (assuming you wanted an element with local name 'test' in the first place!), but the namespace is default and not with a prefix: <test xmlns="http://www.example.com" attribute="value">This is the element's content</test> Joop Ringelberg On Mon, 2009-05-11 at 13:16 +0200, Fraser Hore wrote: > I've created an XQuery to generate a sample XML instance from an XML > Schema file (.xsd). I've just posted it to the XQuery Wikibook at: > http://en.wikibooks.org/wiki/XQuery/XSD_to_XML_Sample#XSD_to_Instance_Function. > > Everything works pretty well except for the inclusion of namespaces in > the element constructor. > > The following works: > > let $prefix := "gc" > let $URI := "http://www.example.com" > let $elementName := "test" > let $attributeName := "attribute" > let $attributeValue := "value" > let $elementContent := "This is the element's content" > > return > element ElementName > { > namespace gc {'http://www.example.com'}, > attribute { $attributeName } { $attributeValue } , > $elementContent > } > > And produces the following output: > > <ElementName xmlns:gc="http://www.example.com" attribute="value">This is the element's content</ElementName> > > However, the using the variables for $prefix and $URL does not work: > > let $prefix := "gc" > let $URI := "http://www.example.com" > let $elementName := "test" > let $attributeName := "attribute" > let $attributeValue := "value" > let $elementContent := "This is the element's content" > > return > element ElementName > { > namespace { $prefix } { $URI }, > attribute { $attributeName } { $attributeValue } , > $elementContent > } > > Does anyone know why? Is there another way to add the namespaces to > the constructed element? > > Thanks! > > Fraser > > |