This XQuery demonstrates the problem: (:--------:) let $xmlBaseAtt as attribute() := attribute {'xml:base'}{'/foo/bar.xml'} let $transformed1 as element() := try { $doc1 transform with { insert node $xmlBaseAtt into .} } catch * { <error code="{$err:code}" desc="{$err:description}" object="doc1"/> } let $transformed2 as element() := try { $doc2 transform with { insert node $xmlBaseAtt into .} } catch * { <error code="{$err:code}" desc="{$err:description}" object="doc2"/> } return ( ``[No @base attribute:]`` ,$transformed1 ,``[Has @base attribute:]`` ,$transformed2 ,() ) (:--------:) The results I get with 10.6 are: No @base attribute: <root xml:base="/foo/bar.xml"/> Has @base attribute: <error code="err:XUDY0021" desc="Duplicate attribute name: xml:base." object="doc2"/> It looks like the transform processor is matching @xml:base to @base even though they are different attributes. Is this a bug or is there a different way I should be specifying the @xml:base attribute? This is an issue because @base is a DITA-defined attribute that occurs on elements on which I need to set @xml:base (which is how I found the problem). Cheers, Eliot _____________________________________________ Eliot Kimber Sr Staff Content Engineer O: 512 554 9368 M: 512 554 9368 servicenow.com<https://www.servicenow.com> LinkedIn<https://www.linkedin.com/company/servicenow> | Twitter<https://twitter.com/servicenow> | YouTube<https://www.youtube.com/user/servicenowinc> | Facebook<https://www.facebook.com/servicenow>