It can be dangerous to use fn:name in that context. Try fn:node-name instead.
The fn:name function returns a string, which can do strange things depending on
the namespace declarations in context. But fn:node-name returns a QName.
Consider this code:
declare namespace t="cat" ;
let $a := <t:a/>
return <environment xmlns:t="dog">
{
element { name($a) } { () },
element { node-name($a) } { () }
}
</environment>/*
=>
<t:a xmlns:t="dog"/>
<t:a xmlns:t="cat"/>
Using fn:name ends up changing the namespace because the prefix changed. Using
node-name preserves the original namespace.
Another way to handle this sort of problem is to use the (deprecated) namespace
axis.
declare namespace t="cat" ;
let $a := <t:a xmlns:b="goat"/>
return <environment xmlns:t="dog">
{
element { node-name($a) } {
$a/namespace::* }
}
</environment>/*
=>
<t:a xmlns:t="cat" xmlns:b="goat"/>
This preserves the declaration for b=goat, even though it was never used.
-- Mike
> On 20 Nov 2014, at 20:48 , <[email protected]>
> <[email protected]> wrote:
>
> Hi Pragya,
>
> Long back ago i also faced similar issue with the in-mem-update library.
> After investigating i found a minor issue in the library.
>
>
> It was due to this code snippet inside _process (..) method.
>
> element{ QName(namespace-uri($node), local-name($node)) }{ .......
>
> .....
> }
>
> This code snippet is twice (IF and ELSE block ) in the same method. Replace
> the above code snippet with below given code.
>
> element{fn:name($node)} {
> .....
>
> }
>
>
>
>
> Thanks,
> Abhinav Kumar Mishra
> From: [email protected]
> [[email protected]] on behalf of Kapoor, Pragya
> [[email protected]]
> Sent: Friday, November 21, 2014 10:04 AM
> To: MarkLogic Developer Discussion
> Subject: [MarkLogic Dev General] Namespaces are getting removed
>
> Hi,
>
> I am using men:node* function to update in-memory xml.
> The code is removing the namespaces of all elements of the in-memory xml.
>
> Code:
> xquery version "1.0-ml";
> import module namespace mem = "http://xqdev.com/in-mem-update"
> at "/rest-apis/utils/mem.xqy";
>
> declare variable $transId := 'test';
> let $amd := xdmp:invoke-function(
> function() {
> (fn:doc('/processing/test/amdDocs/test.xml'))
> } ,
> <options xmlns="xdmp:eval">
> <database>{xdmp:database("Ingestion")}</database>
> </options>
> )
> let $doc := fn:doc('/docs/test.xml')
> let $elements := $amd//*[@ID]
> let $doc :=
> for $element in $elements
> let $docElements := $doc//*[@ID = $element/@ID]
> return
> if($element/@ID = $docElements/@ID) then
> (xdmp:set($doc,mem:node-replace($docElements, $element) ),
> $doc)
> else
> let $amdParent := $element/..
> let $docParent := $doc//*[@Code = $amdParent/@Code]
> return
> (xdmp:set($doc, mem:node-insert-child($docParent, $element)),
> $doc)
> let $validDocs := $doc[fn:last()]
> return $validDocs
>
> Data:
> let $amd := <MAG:Document xmlns:NAV100PP="NAV100PP" xmlns:SE100="SE100"
> xmlns:CSD100CP="CSD100CP"
> xmlns:CAR100CP="CAR100CP"
> xmlns:PET100="PET100"
> xmlns:IM100CP="IM100CP"
> xmlns:OP100="OP100"
> xmlns:OF100PP="OF100PP"
> xmlns:VAL100CP="VAL100CP"
> xmlns:MIC100="MIC100"
> xmlns:CEM100="CEM100"
> xmlns:TH100CP="TH100CP"
> xmlns:MRA="MRA"
> xmlns:ECOLL100PP="ECOLL100PP"
> xmlns:NAV100CP="NAV100CP"
> xmlns:AF100="AF100"
> xmlns:AD100="AD100"
> xmlns:EOD100-4="EOD100-4"
> xmlns:AP100="AP100"
> xmlns:OF100CP="OF100CP"
> xmlns:THRW100PP="THRW100PP"
> xmlns:EOD100-3="EOD100-3"
> xmlns:CEM100PP="CEM100PP"
> xmlns:TH100="TH100"
> xmlns:OES100PP="OES100PP"
> xmlns:MSLA="MSLA"
> xmlns:ECOLL100CP="ECOLL100CP"
> xmlns:IME100PP="IME100PP"
> xmlns:AF100PP="AF100PP"
> xmlns:AD100PP="AD100PP"
> xmlns:AT100PP="AT100PP"
> xmlns:HIC100="HIC100"
> xmlns:TAX100PP="TAX100PP"
> xmlns:ROC100="ROC100"
> xmlns:SUB100PP="SUB100PP"
> xmlns:THRW100CP="THRW100CP"
> xmlns:IR101="IR101"
> xmlns:CEM100CP="CEM100CP"
> xmlns:SIN100="SIN100"
> xmlns:OES100CP="OES100CP"
> xmlns:IME100CP="IME100CP"
> xmlns:AF100CP="AF100CP"
> xmlns:AD100CP="AD100CP"
> xmlns:AT100CP="AT100CP"
> xmlns:ANX100-1="ANX100-1"
> xmlns:TAX100CP="TAX100CP"
> xmlns:ROC100PP="ROC100PP"
> xmlns:SUB100CP="SUB100CP"
> xmlns:CTT100="CTT100"
> xmlns:ATE100="ATE100"
> xmlns:DD100="DD100"
> xmlns:CRC100PP="CRC100PP"
> xmlns:IME100="IME100"
> xmlns:AL100="AL100"
> xmlns:PA100="PA100"
> xmlns:ANX100-3="ANX100-3"
> xmlns:TAX100="TAX100"
> xmlns:ROC100CP="ROC100CP"
> xmlns:CPRE100="CPRE100"
> xmlns:OCTH100PP="OCTH100PP"
> xmlns:AET100PP="AET100PP"
> xmlns:DD100PP="DD100PP"
> xmlns:DN100PP="DN100PP"
> xmlns:CRC100CP="CRC100CP"
> xmlns:KM100="KM100"
> xmlns:AL100PP="AL100PP"
> xmlns:PA100PP="PA100PP"
> xmlns:EOD100-2="EOD100-2"
> xmlns:FTH100PP="FTH100PP"
> xmlns:REP100PP="REP100PP"
> xmlns:CA100="CA100"
> xmlns:SIO100PP="SIO100PP"
> xmlns:OCTH100CP="OCTH100CP"
> xmlns:CPRE100PP="CPRE100PP"
> xmlns:AET100CP="AET100CP"
> xmlns:DD100CP="DD100CP"
> xmlns:DN100CP="DN100CP"
> xmlns:UPC100="UPC100"
> xmlns:KM100PP="KM100PP"
> xmlns:AL100CP="AL100CP"
> xmlns:PA100CP="PA100CP"
> xmlns:EHP100PP="EHP100PP"
> xmlns:TER100="TER100"
> xmlns:FTH100CP="FTH100CP"
> xmlns:REP100CP="REP100CP"
> xmlns:ST100="ST100"
> xmlns:SIO100CP="SIO100CP"
> xmlns:CPRE100CP="CPRE100CP"
> xmlns:RD100PP="RD100PP"
> xmlns:PN100="PN100"
> xmlns:KM100CP="KM100CP"
> xmlns:NA100="NA100"
> xmlns:MB100PP="MB100PP"
> xmlns:EHP100CP="EHP100CP"
> xmlns:TER100PP="TER100PP"
> xmlns:REP100="REP100"
> xmlns:CD100PP="CD100PP"
> xmlns:MSFTA="MSFTA"
> xmlns:ROU100PP="ROU100PP"
> xmlns:RD100CP="RD100CP"
> xmlns:GOV100="GOV100"
> xmlns:CSD100="CSD100"
> xmlns:CC100PP="CC100PP"
> xmlns:NA100PP="NA100PP"
> xmlns:MB100="MB100"
> xmlns:FMT100PP="FMT100PP"
> xmlns:TER100CP="TER100CP"
> xmlns:AET100="AET100"
> xmlns:CD100CP="CD100CP"
> xmlns:DA100PP="DA100PP"
> xmlns:GMRA="GMRA"
> xmlns:ROU100CP="ROU100CP"
> xmlns:RD100="RD100"
> xmlns:SE100PP="SE100PP"
> xmlns:ATE_A100="ATE_A100"
> xmlns:CC100CP="CC100CP"
> xmlns:NA100CP="NA100CP"
> xmlns:MB100CP="MB100CP"
> xmlns:ANX100-2="ANX100-2"
> xmlns:FMT100CP="FMT100CP"
> xmlns:TC100="TC100"
> xmlns:CD100="CD100"
> xmlns:DA100CP="DA100CP"
> xmlns:NAV100="NAV100"
> xmlns:SE100CP="SE100CP"
> xmlns:CSD100PP="CSD100PP"
> xmlns:CAR100PP="CAR100PP"
> xmlns:IM100PP="IM100PP"
> xmlns:CC100="CC100"
> xmlns:MISC100="MISC100"
> xmlns:OF100="OF100"
> xmlns:VAL100PP="VAL100PP"
> xmlns:TEM100="TEM100"
> xmlns:OTP100="OTP100"
> xmlns:TH100PP="TH100PP"
> xmlns:MAG="ISDA">
> <MAG:MetaInfo>
> <MAG:CollectionNo>4043</MAG:CollectionNo>
> <!-- Amendment document -->
> <MAG:DocumentType>AGRT-AMD-DOC</MAG:DocumentType>
> <MAG:AgreementDate>2015-03-27</MAG:AgreementDate>
> <MAG:DocumentState>BAU</MAG:DocumentState>
> <MAG:PdfPageRange>24-32</MAG:PdfPageRange>
> </MAG:MetaInfo>
> <MAG:Body>
> <MAG:PartiesMisc>
> <CP100:PartyDetails xmlns:CP100="CP100" Code="CP100">
>
> <CP100CP:Counterparties xmlns:CP100CP="CP100CP" Code="CP100CP">
> <CP100CP:Counterparty ID='123'>
> <CP100CP:Name PageNo="3" LineNo="21">INNODATA SERVICES, INC.</CP100CP:Name>
> <CP100CP:Lei PageNo="3" LineNo="21">eeeee</CP100CP:Lei>
> <CP100CP:EntityType PageNo="3" LineNo="21">CORPORATION</CP100CP:EntityType>
> <CP100CP:JurisdictionOrganisation PageNo="3"
> LineNo="21">Florida</CP100CP:JurisdictionOrganisation>
> <CP100CP:AgentName PageNo="3" LineNo="11">mmmmm</CP100CP:AgentName>
> <CP100CP:PartyStatus PageNo="3" LineNo="21">Terminated</CP100CP:PartyStatus>
> <CP100CP:DF2Questionnaire>
> </CP100CP:DF2Questionnaire>
> <CP100CP:EMIRQuestionnaire>
> </CP100CP:EMIRQuestionnaire>
> </CP100CP:Counterparty>
>
> </CP100CP:Counterparties>
> </CP100:PartyDetails>
> </MAG:PartiesMisc>
> <GOV100:GoverningLaw ID='2' Code="GOV100">
> <!-- Changed -->
> <GOV100:Governing_Law PageNo="11"
> LineNo="14">Alabama</GOV100:Governing_Law>
>
> </GOV100:GoverningLaw>
> </MAG:Body>
> </MAG:Document>
> let $doc := <MAG:Document xmlns:NAV100PP="NAV100PP" xmlns:SE100="SE100"
> xmlns:CSD100CP="CSD100CP"
> xmlns:CAR100CP="CAR100CP"
> xmlns:PET100="PET100"
> xmlns:IM100CP="IM100CP"
> xmlns:OP100="OP100"
> xmlns:OF100PP="OF100PP"
> xmlns:VAL100CP="VAL100CP"
> xmlns:MIC100="MIC100"
> xmlns:CEM100="CEM100"
> xmlns:TH100CP="TH100CP"
> xmlns:MRA="MRA"
> xmlns:ECOLL100PP="ECOLL100PP"
> xmlns:NAV100CP="NAV100CP"
> xmlns:AF100="AF100"
> xmlns:AD100="AD100"
> xmlns:EOD100-4="EOD100-4"
> xmlns:AP100="AP100"
> xmlns:OF100CP="OF100CP"
> xmlns:THRW100PP="THRW100PP"
> xmlns:EOD100-3="EOD100-3"
> xmlns:CEM100PP="CEM100PP"
> xmlns:TH100="TH100"
> xmlns:OES100PP="OES100PP"
> xmlns:MSLA="MSLA"
> xmlns:ECOLL100CP="ECOLL100CP"
> xmlns:IME100PP="IME100PP"
> xmlns:AF100PP="AF100PP"
> xmlns:AD100PP="AD100PP"
> xmlns:AT100PP="AT100PP"
> xmlns:HIC100="HIC100"
> xmlns:TAX100PP="TAX100PP"
> xmlns:ROC100="ROC100"
> xmlns:SUB100PP="SUB100PP"
> xmlns:THRW100CP="THRW100CP"
> xmlns:IR101="IR101"
> xmlns:CEM100CP="CEM100CP"
> xmlns:SIN100="SIN100"
> xmlns:OES100CP="OES100CP"
> xmlns:IME100CP="IME100CP"
> xmlns:AF100CP="AF100CP"
> xmlns:AD100CP="AD100CP"
> xmlns:AT100CP="AT100CP"
> xmlns:ANX100-1="ANX100-1"
> xmlns:TAX100CP="TAX100CP"
> xmlns:ROC100PP="ROC100PP"
> xmlns:SUB100CP="SUB100CP"
> xmlns:CTT100="CTT100"
> xmlns:ATE100="ATE100"
> xmlns:DD100="DD100"
> xmlns:CRC100PP="CRC100PP"
> xmlns:IME100="IME100"
> xmlns:AL100="AL100"
> xmlns:PA100="PA100"
> xmlns:ANX100-3="ANX100-3"
> xmlns:TAX100="TAX100"
> xmlns:ROC100CP="ROC100CP"
> xmlns:CPRE100="CPRE100"
> xmlns:OCTH100PP="OCTH100PP"
> xmlns:AET100PP="AET100PP"
> xmlns:DD100PP="DD100PP"
> xmlns:DN100PP="DN100PP"
> xmlns:CRC100CP="CRC100CP"
> xmlns:KM100="KM100"
> xmlns:AL100PP="AL100PP"
> xmlns:PA100PP="PA100PP"
> xmlns:EOD100-2="EOD100-2"
> xmlns:FTH100PP="FTH100PP"
> xmlns:REP100PP="REP100PP"
> xmlns:CA100="CA100"
> xmlns:SIO100PP="SIO100PP"
> xmlns:OCTH100CP="OCTH100CP"
> xmlns:CPRE100PP="CPRE100PP"
> xmlns:AET100CP="AET100CP"
> xmlns:DD100CP="DD100CP"
> xmlns:DN100CP="DN100CP"
> xmlns:UPC100="UPC100"
> xmlns:KM100PP="KM100PP"
> xmlns:AL100CP="AL100CP"
> xmlns:PA100CP="PA100CP"
> xmlns:EHP100PP="EHP100PP"
> xmlns:TER100="TER100"
> xmlns:FTH100CP="FTH100CP"
> xmlns:REP100CP="REP100CP"
> xmlns:ST100="ST100"
> xmlns:SIO100CP="SIO100CP"
> xmlns:CPRE100CP="CPRE100CP"
> xmlns:RD100PP="RD100PP"
> xmlns:PN100="PN100"
> xmlns:KM100CP="KM100CP"
> xmlns:NA100="NA100"
> xmlns:MB100PP="MB100PP"
> xmlns:EHP100CP="EHP100CP"
> xmlns:TER100PP="TER100PP"
> xmlns:REP100="REP100"
> xmlns:CD100PP="CD100PP"
> xmlns:MSFTA="MSFTA"
> xmlns:ROU100PP="ROU100PP"
> xmlns:RD100CP="RD100CP"
> xmlns:GOV100="GOV100"
> xmlns:CSD100="CSD100"
> xmlns:CC100PP="CC100PP"
> xmlns:NA100PP="NA100PP"
> xmlns:MB100="MB100"
> xmlns:FMT100PP="FMT100PP"
> xmlns:TER100CP="TER100CP"
> xmlns:AET100="AET100"
> xmlns:CD100CP="CD100CP"
> xmlns:DA100PP="DA100PP"
> xmlns:GMRA="GMRA"
> xmlns:ROU100CP="ROU100CP"
> xmlns:RD100="RD100"
> xmlns:SE100PP="SE100PP"
> xmlns:ATE_A100="ATE_A100"
> xmlns:CC100CP="CC100CP"
> xmlns:NA100CP="NA100CP"
> xmlns:MB100CP="MB100CP"
> xmlns:ANX100-2="ANX100-2"
> xmlns:FMT100CP="FMT100CP"
> xmlns:TC100="TC100"
> xmlns:CD100="CD100"
> xmlns:DA100CP="DA100CP"
> xmlns:NAV100="NAV100"
> xmlns:SE100CP="SE100CP"
> xmlns:CSD100PP="CSD100PP"
> xmlns:CAR100PP="CAR100PP"
> xmlns:IM100PP="IM100PP"
> xmlns:CC100="CC100"
> xmlns:MISC100="MISC100"
> xmlns:OF100="OF100"
> xmlns:VAL100PP="VAL100PP"
> xmlns:TEM100="TEM100"
> xmlns:OTP100="OTP100"
> xmlns:TH100PP="TH100PP"
> xmlns:MAG="ISDA">
> <MAG:MetaInfo>
> <MAG:CollectionNo>4043</MAG:CollectionNo>
> <!-- Amendment document -->
> <MAG:DocumentType>AGRT-AMD-DOC</MAG:DocumentType>
> <MAG:AgreementDate>2015-03-27</MAG:AgreementDate>
> <MAG:DocumentState>BAU</MAG:DocumentState>
> <MAG:PdfPageRange>24-32</MAG:PdfPageRange>
> </MAG:MetaInfo>
> <MAG:Body>
> <MAG:PartiesMisc>
> <CP100:PartyDetails xmlns:CP100="CP100" Code="CP100">
>
> <CP100CP:Counterparties xmlns:CP100CP="CP100CP" Code="CP100CP">
> <CP100CP:Counterparty ID = '123'>
> <CP100CP:Name PageNo="3" LineNo="21">INNODATA aa</CP100CP:Name>
> <CP100CP:Lei PageNo="3" LineNo="21">eeeee1</CP100CP:Lei>
> <CP100CP:EntityType PageNo="3" LineNo="21">CORPORATION</CP100CP:EntityType>
> <CP100CP:JurisdictionOrganisation PageNo="3"
> LineNo="21">Florida</CP100CP:JurisdictionOrganisation>
> <CP100CP:AgentName PageNo="3" LineNo="11">mmmmm</CP100CP:AgentName>
> <CP100CP:PartyStatus PageNo="3" LineNo="21">Terminated</CP100CP:PartyStatus>
> <CP100CP:DF2Questionnaire>
> </CP100CP:DF2Questionnaire>
> <CP100CP:EMIRQuestionnaire>
> </CP100CP:EMIRQuestionnaire>
> </CP100CP:Counterparty>
>
> </CP100CP:Counterparties>
> </CP100:PartyDetails>
> </MAG:PartiesMisc>
> <GOV100:GoverningLaw ID='2' Code="GOV100">
> <!-- Changed -->
> <GOV100:Governing_Law PageNo="11" LineNo="14">New
> York</GOV100:Governing_Law>
>
> </GOV100:GoverningLaw>
> </MAG:Body>
> </MAG:Document>
>
> Please help
>
> Thanks
> Pragya
> "This e-mail and any attachments transmitted with it are for the sole use of
> the intended recipient(s) and may contain confidential , proprietary or
> privileged information. If you are not the intended recipient, please contact
> the sender by reply e-mail and destroy all copies of the original message.
> Any unauthorized review, use, disclosure, dissemination, forwarding, printing
> or copying of this e-mail or any action taken in reliance on this e-mail is
> strictly prohibited and may be unlawful."
> This e-mail and any files transmitted with it are for the sole use of the
> intended recipient(s) and may contain confidential and privileged
> information. If you are not the intended recipient(s), please reply to the
> sender and destroy all copies of the original message. Any unauthorized
> review, use, disclosure, dissemination, forwarding, printing or copying of
> this email, and/or any action taken in reliance on the contents of this
> e-mail is strictly prohibited and may be unlawful. Where permitted by
> applicable law, this e-mail and other e-mail communications sent to and from
> Cognizant e-mail addresses may be monitored.
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general