From: Steven Ericsson-Z. <st...@se...> - 2009-12-26 15:22:09
|
Thanks for the quick response Wolfgang. Ah, the complexities of namespaces ... I tried this every which way but could not get it to work. Perhaps this is because the $document/publisher reference comes from an input resource that has no namespace attached currently. There is a namespace for the input file but I removed it to get this code working precisely because I could not reference the incoming state. That is, (: select each new-document in the input file :) for $document in $input/new-document ... does not find "new-document" if the input document includes the namespace reference, but does okay otherwise. I tried declaring a namespace in the XQuery code to enable the reference but it did not help. Ideally the input file should be in a different namespace (http://xml.memeio.org/2010/action ) not in the namespace referenced in the output files (they vary but include "http://xml.memeio.org/2010/context" in the example I gave). The "action" namespace specifies the structure of input variables to the action specified in the XQuery. The XQuery creates collections and populates them with a number of resources, each with a namespace. The code works and is tested without namespace references but I would like to put the namespace references back in. Suggestions? With respect, Steven On Dec 26, 2009, at 3:34 AM, Wolfgang Meier wrote: >> <context >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xmlns="http://xml.memeio.org/2010/context" >> xsi:schemaLocation="http://xml.memeio.org/2010/context / >> db/memeio/schemas/Property/XSD/context.xsd" >> name="" >> publisher="{$document/publisher}" > > The xmlns default namespace declaration in the enclosing XML fragment > also changes the context for the enclosed XQuery expression. > $document/publisher will thus search for publisher elements in the > http://xml.memeio.org/2010/context namespace! This behaviour might be > confusing (I have hit the same issue frequently), but it is required > by the XQuery spec. > > To escape this feature, you would need to declare another namespace > prefix: > > declare namespace c="http://xml.memeio.org/2010/context"; > > and then use: > > publisher="{$document/c:publisher}" > > for the attribute declaration. > > Wolfgang -- Dr. Steven Ericsson-Zenith Institute for Advanced Science & Engineering http://iase.info http://senses.info |