XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Neal WaltersSubject: Still sometimes getting beat by my old arch-enemy the namespace
Author: Neal Walters
Date: 04 May 2010 01:52 AM
I wrote a .NET C# routine to add a update or add an element to an existing XML structure. It seemed to work when okay when the data was in one format, and not in the other.

So in an attempt to understand the issues, I created the following somewhat crazy xml sample. I'm also trying to build unit tests to cover all my bases.

<myroot>
<group1 xmlns="myGroup1Different">
<firstname>Neal1</firstname>
</group1>
<myPrefix2:group2 xmlns:myPrefix2="myGroup2BizTalkStyle">
<firstname>Neal2</firstname>
</myPrefix2:group2>
<group3 xmlns="myGroup3SerializerStyle">
<firstname xmlns="">Neal3</firstname>
</group3>
<myPrefix4:group4 xmlns:myPrefix4="myGroup4">
<firstname xmlns="">Neal4</firstname>
</myPrefix4:group4>
</myroot>

Using Stylus Studio, and removing the subscripts (such as [1]), I have identified the the four ways to get the "firstname" elements above:

/myroot/*[local-name()='group1' and namespace-uri()='myGroup1Different']/*[local-name()='firstname' and namespace-uri()='myGroup1Different']

/myroot/*[local-name()='group2' and namespace-uri()='myGroup2BizTalkStyle']/firstname

/myroot/*[local-name()='group3' and namespace-uri()='myGroup3SerializerStyle']/firstname

/myroot/*[local-name()='group4' and namespace-uri()='myGroup4']/firstname

Basically the first one is different, and the last three are essentially the same (just different namespaces and element names).

My question is this... In Stylus Studio, you show the #text node separate on group3 and group4, but not on group1 and group2.
Does this indicate a difference in the internal DOM structure?
Or is that just a shortcut, that you don't display the #text node when there is only one #text node under the element?

This also applies when I use the "Xpath Query Editor". The first and second queries do not show the #text node, but the third and fourth do.

What started me on this trek was the way the XmlSerializer in .NET was serializing the data (about 6 weeks ago, see here: http://stackoverflow.com/questions/2410620/net-xmlserializer-to-element-formdefaultunqualified-xml).

Then yesterday, a user put some data in our system using one of the alternate above formats, and my .NET code failed to handle it correctly. Also, when people hand edit the XML, they sometimes remove the namespaces prefixes, but then do not put the xmlns="" on the child elements. I don't blame them, it seems counter intuitive to do so, but then things start to really fail.

Thanks,
Neal Walters
http://BizTalk-Training.com





Posttop
(Deleted User) Subject: Still sometimes getting beat by my old arch-enemy the namespace
Author: (Deleted User)
Date: 11 May 2010 10:18 AM
Hi Neil,
Stylus Studio displays the text node in the right column of an element node as a shortcut, when the element node has no attributes and no other child nodes. Placing it on the right when there is a subnode holding the attribute (in this case, xmlns="") would be assuming that the text comes before of the attribute in the original XML text stream.

Hope this helps,
Alberto

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.