|
It looks like you're referencing some other variable in your loop body, as opposed to your iterator variable. Shouldn't, for example, the first statement in your loop be:
key = CInt(j.ChildNodes(0).InnerText)
|
|
|
|
|
|
Hi all
My XML is like this
<Compare>
<columnNames>
<column>
<na>Name</na>
</column>
<column>
<na>Address</na>
</column>
<column>
<na>Phone</na>
</column>
</columnNames>
<Hotels>
<Hotel>
<Name>Hotel Mount View</Name>
<Address>123</Address>
<Phone>1234</Phone>
</Hotel>
<Hotel>
<Name>Hotel Mayur</Name>
<Address>Adress1</Address>
<Phone>12345678</Phone>
</Hotel>
</Hotels>
</Compare>
My requirement is that
the na items in column specify the name and count of the child items in Hotel.
I have written the xsl like this
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table>
<xsl:for-each select="Compare/columnNames/column">
<tr>
<xsl:variable name="ColName" select="na"></xsl:variable>
<td>
<xsl:value-of select="na"/>
</td>
<xsl:for-each select="Compare/Hotels/Hotel">
<td>
<xsl:value-of select="Name"/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
but its showing the result properly.Need your help?
|
|
|
|
|
This XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table>
<xsl:for-each select="Compare/columnNames/column">
<tr>
<xsl:variable name="ColName" select="na"></xsl:variable>
<td>
<xsl:value-of select="na"/>
</td>
<xsl:for-each select="///Compare/Hotels/Hotel">
<td>
<xsl:value-of select="./*[name()=$ColName]"/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
produces this HTML fragment - is that what you were after?
<?xml version="1.0"?>
<table>
<tr>
<td>Name</td>
<td>Hotel Mount View</td>
<td>Hotel Mayur</td>
</tr>
<tr>
<td>Address</td>
<td>123</td>
<td>Adress1</td>
</tr>
<tr>
<td>Phone</td>
<td>1234</td>
<td>12345678</td>
</tr>
</table>
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
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
|
|
|
|