|
how do we skip root elements for sub classes when serailizing comlex object?
my requirement is
Assume we have a complex class
public class employee
{
private string _name;
private string empcode;
private list addresses;
//Assume we have created public properties also
}
public class Address
{
private string street;
private string city;
private string state;
//Assume we have created public properties also
}
if we serialize above employee collection class in XML the output would be
<employees>
<employee>
<name>ABC
<empcode>1/EmpCode>
<addresses>
<street>XXX
<city>xxx<city>
<state>yyy
<street>XXX
<city>xxx
<state>yyy
but i want the above xml as
<employees>
<employee>
<name>ABC
<empcode>1/EmpCode>
<street>XXX
<city>xxx<city>
<state>yyy
<street>XXX
<city>xxx
<state>yyy
i just removed <addresses> means removing root element for inner classes.
how do we achieve this using .NET
Thanks inadvance
Regards
Ravi
|
|
|
|
|
Can I suggest you select the 'Encode HTML tags when pasting' tickbox when pasting XML code into a post - most of your content has disappeared!
Also, it helps to put it in a code block, using the 'code block' link below when the code is selected.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hey, How to make menubar using XML code?
please give me any example code
|
|
|
|
|
paypony wrote: How to make menubar using XML code?
Given that XML's not an executable language and doesn't have any concept of a windowing system, good luck with that!
All you can use XML for is to describe the layout of the menu system, what commands each menu entry might raise, stuff like that. But it would still need to be translated into code that runs, or interpreted by some form of runtime system, in order that the menu is executed, the way that XAML is in WPF.
Or you could be wanting an XML menubar description for a web page?
Who knows? Oh yeah, you do. But you've not shared any of that detail with us, so guess what - we can't help you in any detail!
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Just a hint for using CodeProject. When someone like Stuart replies to you, don't vote down their reply. If you don't like what they say just ignore it, otherwise vote favorably and thank them for the free help they gave you.
|
|
|
|
|
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
|
|
I have xml tags as below.
file1.xml
<Roles>
<Role>
<Permissions>Admin<Permissions/>
<Permissions>Reader<Permissions/>
</Role>
</Roles>
Here is my XSD to validate above xml
myXSD.xsd
<element name="Roles">
<complexType>
<sequence>
<element ref="Role">
</sequence>
</complexType>
</element>
<element name ="Role">
<complexType>
<sequence>
<element ref ="Permissions" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name ="Permissions">
<complexType>
<sequence>
<element name ="Permission" type="string" />
</sequence/>
</complexType/>
</element/>
This XSD validation works fine in normal case. If I change the xml file as below.
file2.xml
<Roles>
<Role>
<Permissions>Admin<Permissions/>
<Permissions>Reader<Permissions/>
</Role>
<Permissions>Reader<Permissions/>
</Roles>
ie. I inserted the <Permissions> immediately after the <Roles> parent node. This is invalid in my case. I want to enforce that <Permissions> node always comes inside the <Role> node but not <Roles> node.
I want to detect this such case using XSD validation.
Could you please suggest me how to write the correct XSD schema to invalidate file2.xml?
Thanks in advance
Prakash
|
|
|
|
|
Neither of your files should validate. I suspect your schema isn't parsing correctly, you're not checking errors and thinking that validation's happening.
Your problems?
- You can't use the
ref attribute of the element element without using some level of XML namespaces. - You've omitted the Permission elements from your sample files
- Your closing Permissions tags are incorrect - I'll presume that's a typo
Here's an xsd/xml pair that does cause the validation error you want (at least with libxml2):
XSD file
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://test-namespace.com/"
xmlns="http://test-namespace.com/"
xmlns:srd="http://test-namespace.com/"
elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Roles">
<xs:complexType>
<xs:sequence>
<xs:element ref ="Role"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Role">
<xs:complexType>
<xs:sequence>
<xs:element ref="Permissions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Permissions">
<xs:complexType>
<xs:sequence>
<xs:element name ="Permission" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML file
<?xml version="1.0" encoding="utf-8"?>
<Roles xmlns="http://test-namespace.com/">
<Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Roles>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thank you very much.
It worked perfectly .
|
|
|
|
|
Hi,
As you said we cannot use 'ref' attribute in xsd without using some level of xml namespace.
Can we write a schema file (xsd) to valid the xml without having xmlns?
Is there any other alternative to valid the xml without having xmlns?
I mean, can we write xsd to valid the following xml?
<?xml version="1.0" encoding="utf-8"?>
<Roles>
<Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Role>
<Permissions>
<Permission>Reader</Permission>
</Permissions>
</Roles>
Thanks.
Prakash
|
|
|
|
|
a) what's the hassle with using XML namespaces? Really isn't that much trouble.
b) You can use something like this without namespaces. The references have effectively been manually resolved:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Roles">
<xs:complexType>
<xs:sequence>
<xs:element name ="Role">
<xs:complexType>
<xs:sequence>
<xs:element name ="Permissions">
<xs:complexType>
<xs:sequence>
<xs:element name ="Permission" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
a) The XML file I am validating is from my clients. They cannot bear any change modification on that xml because it is being used by many others clients. They already working on the format of that xml. If I add an xml namespace in the XML file, all of my clients have to change their logic to read the modified XML file. What I can do is to write the xsd file to validate that XML file. It wouldn't have been problem if I could use namespace.
I think your answer (b) will work for me.
Thank your great help.
Prakash
|
|
|
|
|
tprakash wrote: The XML file I am validating is from my clients. They cannot bear any change modification on that xml because it is being used by many others clients
That I can understand. I presume your clients don't have a schema for their XML? In which case, what guarantees do you have that their XML will always match any schema you write? And how did they specify the XML format to you?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Actually, we have two applications, one generates the xml, while other application consume the xml. The format of xml is defined by my management team. We have different clients using that applications(single only or both). And it is our management team decision not to change the format of the xml file. We just donot want to mesh up with that now. Otherwise, it is ok.
|
|
|
|
|
I think the solution (b) works perfectly in cases where we have normal xml node. What about if the a child xml node contains parent xml node recursively?
Taken the above case, what if Permissions node in turn contains the Roles ?
Since we cannot use ref attribute, how to refer the Roles node in the above xsd?
Thanks
Prakash
|
|
|
|
|
As I said in this message[^], I think I was wrong about not being able to use ref attributes. I'm not sure what was going on in my head that day
This schema validates your XML with libxml2 2.7.3 (which is a pretty recent release). I've put in the maxOccurs attribute of the sequence that contains the Permission element to enable multiple Permission elements in a Permissions element.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Roles">
<xs:complexType>
<xs:sequence>
<xs:element ref ="Role"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Role">
<xs:complexType>
<xs:sequence>
<xs:element ref="Permissions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="Permissions">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name ="Permission" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Finally, I could create the desired xsd to valid the xml.
I truly appreciate your great help.
Thanks a lot.
Prakash
|
|
|
|
|
|
lostinxsl wrote: It would be great it someone could guide me.
There are tutorials all over the Web for beginners. You can use google to find them with like
Javascript tutorial
There are some at www.w3schools.com
|
|
|
|
|
|
lostinxsl wrote: I cant figure out this :
a XSL generates a javascript function.
Ok, that part is done then and has nothing to do with:
lostinxsl wrote: This javascript functions is used in html .
how can i do this ?
Again, if you don't understand how to use javascript in a browser then you need to be studying more beginner material on that subject until you do understand.
Also:
lostinxsl wrote: I am only able to display the javascript function on a webpage
Javascript that is correctly added to HTML will not be displayed in the browser. So again, you need to know how to write HTML/Javascript before you try to generate it with anything else like XSLT.
|
|
|
|
|
If I execute the following xslt I get the result given below.
I'm no mathematician but 100 times 2500.01 does not equal 250001.00000000003
I can find very little about this on the web and no suggested fixes or
solutions.
This is causing me a big problem as my entire architecture hangs around xslt.
Using VS2008 and have IE8 installed.
Can anyone help? Please?
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<res>
<xsl:value-of select="2500.01 * 100"/>
</res>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8"?>
<res>250001.00000000003</res>
|
|
|
|
|
Not strictly an XSLT problem - it's more that IEEE754 floating-point isn't completely accurate, especially with things like .1 or .01, as they are irrational when expressed in binary.
For example - I just tried your example with both Python[^] and ghci[^] (a Haskell[^] REPL), and they gave the same answer as you got.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|