Hi Duncan,

On Oct 29, 2012, at 9:24 AM, Duncan Temple Lang wrote:

> 
> Hi Ben
> 
>  Can you tell us the slightly bigger picture, please?
> Do you want to create a single similar node entirely in isolation
> or do you want to create it as part of an XML tree/document?
> Who will be reading the resulting XML.
> 
> You can use a parent node
> 
>  top = newXMLNode("storms", namespaceDefinitions = c(weather = 
> "http://my.weather.com/events";))
> 
> Then
> 
>    newXMLNode("storm", "ripsnorter", namespace = "weather",
>                attrs = c(type = "hurrican", name = "Sandy"),
>               parent = top )
> 
> 
> That gives you
> 
>   <weather:storm type="hurrican" name="Sandy">ripsnorter</weather:storm>
> 
> So now what are you going to do with that node?
> 
> The namespace prefix is local to a document, chosen by the author of that XML 
> document.
> The namespace URI is the global key that authors and consumers must agree 
> upon.
> While your database may use "udf", you may chose a different prefix or even 
> the default
> prefix to correspond to that same URI.  So each document must explicitly 
> declare the
> prefix = URI mapping for it to be understood.
> 

Ah!   The parent - of course!  This makes perfect sense (and says so in the 
docs).   I think I was focussing on building up the hierarchy from the 
inside-to-the-outside.  That's obviously backwards (of course it's obvious now 
that I have gone public!)  

I must have I missed the boat when I read the documentation for the namespace 
argument to newXMLNode() ... 

"If this is a character vector with a) one element and b) with an empty names 
attribute and c) whose value does not start with http:/ or ftp:/, then it is 
assumed that the value is a namespace prefix for a namespace defined in an 
ancestor node. To be able to resolve this prefix to a namespace definition, 
parent must be specified so that we can traverse the chain of ancestor nodes. "

I wonder if that last sentence might be amended to read,  "To be able to 
resolve this prefix to a namespace definition, parent must be specified so that 
we can traverse the chain of ancestor nodes _to where the namespace is 
defined._"  I realize that this addition repeats the meaning of the previous 
sentence, but repetition never hurts boneheads like me. 

The bigger picture is that I am using this with a RESTful system which has been 
very kindly to this neophyte.  The parent tree, of which these user defined 
fields are children, will be POSTed to the system (using RCurl).    

I have the parent just as you have shown 'top' above, but I had not included 
the namespace definitions that any of its children might need.  I have added 
the namespace definitions needed to the parent definition and all is well.

Thanks, once again, for making the XML package available.  It is incredibly 
useful.

Cheers,
Ben


>    D.
> 
> 
> On 10/29/12 5:54 AM, Ben Tupper wrote:
>> Hello,
>> 
>> I am working with a database system from which I can retrieve these kinds of 
>> user defined fields formed as XML ...
>> 
>> <udf:field unit="uM" type="Numeric" name="facs.Stain final 
>> concentration">5</udf:field>
>> 
>> You can see in the above example that "field" is defined in the namespace 
>> "udf", but that the "udf" namespace is not defined along with the attributes 
>> of the node.  That is, 'xmlns:udf = "http://blah.blah.com/blah";' doesn't 
>> appear.  
>> 
>> I would like to create a similar node from scratch, but I can't seem to 
>> define the node with a namespace without providing the namespace definition. 
>> 
>> 
>> library(XML)
>> 
>> node1 <- newXMLNode("storm", "ripsnorter",
>>   namespace = "weather",
>>   namespaceDefinitions = c(weather = "http://my.weather.com/events";),
>>   attrs = c(type = "hurricane",  name = "Sandy"))
>> node1
>> 
>> # this returns the new node with the namespace prefix (which I want)
>> # and the definition (which I don't want)
>> 
>> # <weather:storm xmlns:weather="http://my.weather.com/events"; 
>> type="hurricane" name="Sandy">ripsnorter</weather:storm>
>> 
>> 
>> node2 <- newXMLNode("storm", "ripsnorter",
>>   namespace = "weather",
>>   attrs = c(type = "hurricane",  name = "Sandy"),
>>   suppressNamespaceWarning = TRUE)
>> node2
>> 
>> # produces the node without the namespace prefix and without the definition
>> 
>> # <storm type="hurricane" name="Sandy">ripsnorter</storm>
>> 
>> Is there some way to create a node with a namespace prefix but without 
>> embedding the namespace definition along with the attributes?
>> 
>> Thanks!
>> Ben
>> 
>> Ben Tupper
>> Bigelow Laboratory for Ocean Sciences
>> 180 McKown Point Rd. P.O. Box 475
>> West Boothbay Harbor, Maine   04575-0475 
>> http://www.bigelow.org
>> 
>> 
>>> sessionInfo()
>> R version 2.15.0 (2012-03-30)
>> Platform: i386-apple-darwin9.8.0/i386 (32-bit)
>> 
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>> 
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base     
>> 
>> other attached packages:
>> [1] tripack_1.3-4      RColorBrewer_1.0-5 Biostrings_2.24.1  IRanges_1.14.2  
>>    BiocGenerics_0.2.0 RCurl_1.91-1      
>> [7] bitops_1.0-4.1     XML_3.9-4         
>> 
>> loaded via a namespace (and not attached):
>> [1] stats4_2.15.0 tools_2.15.0
>> 
>> ______________________________________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>> 
>> 
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

Ben Tupper
Bigelow Laboratory for Ocean Sciences
180 McKown Point Rd. P.O. Box 475
West Boothbay Harbor, Maine   04575-0475 
http://www.bigelow.org

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to