|
that's my problem right now. Hope someone can help me this problem.
try and try until you success..
|
|
|
|
|
It appears you are not having a problem with XML but with an ASP.NET Datagrid.
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
My problem is I could not filter the data appears in my second datagrid. Because when i load my xml file it will simply populate the two datagrid. My first datagrid is consist of Parent nodes while my second datagrid are the child nodes.
What i want to do is when i load the xml file the first datagrid will display all data while the display data in the second datagrid depends on the first grid.HOw could I filter the data in the second grid?
try and try until you success..
|
|
|
|
|
I can think of two ways of filtering your data. First, you can filter the child XML document based on the parent XML document using XSLT, and binding the resulting XML document to the child Datagrid. Second, you can place both XML documents in the same Dataset into their corresponding Datatables. You create a DataRelation and a DataView to achieve your desired results.
You can find articles on Code Project to get you started or you can Google for more resources and examples.
George
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
Hi george,
Thanks, but I have only one XML file. How could I manipulate this kind of proble. Can you give me an example code that related to my problem.
Thanks in advance.
Regards,
kurt
try and try until you success..
|
|
|
|
|
As I said, your problem is with DataGrids. This is the XML/XSL forum. In your case, your XML document is just a data source and you want to display it in a certain way. I guess you want a Master-Detail type report. So, look on Code Project and Google for your example code. I gave you keys to help your search.
Also, if using a DataGrid is to complicated for you. You know you can create your own table and post it to the ASP.NET page.
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
Hi,
I had created an XML file with Unicode (encoding UTF-8) using Word 2007; the problem is when I try to view it in IE through an XSL result in the following error:
An invalid character was found in text content...
I changed the encoding of XML file to “ISO-8859-1” – able to view in IE but the characters get messed.
Please Help.
Hariharan C
|
|
|
|
|
Hariharan2105 wrote: I changed the encoding of XML file to “ISO-8859-1”
ummm.... how?
|
|
|
|
|
Hi,
did you try to set the output of your sxl file to utf-8 or iso-8859-1?
example:
<xsl:output method="xml" encoding="iso-8859-1" indent="yes" />
otherwise, some more information might be needed to know where the encoding gets messed up.
|
|
|
|
|
Hi,
I tried the following in XML
<code><?xml version="1.0" encoding="UTF-8" standalone="no"?></code>
And the following in XSD
<code><xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/></code>
thanks,.
Hariharan C.
|
|
|
|
|
here is a dummy example I made to show the principle.
neither dtd nor schema is provided and the xsl is
connected in the xml to allow you to open the xml in
ie and see the resulting (minimalistic) web page.
rem: the location of my xsl file is hard coded in
C:\Temp\
both files are saved on disk in utf-8
txt.xml:
<?xml version="1.0" encoding="UTF-8"?&ft;
<?xml-stylesheet type="text/xsl" href="C:\Temp\dummy.xsl"?>
<bla>üöä</bla>
dummy.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="iso-8859-1" indent="yes" omit-xml-declaration="yes" media-type="text/html"/>
<xsl:template match="bla">
<html>
<body>
<xsl:value-of select="."/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
hope this helps
Erik
|
|
|
|
|
Thanks Erik,
I tried this too, resulting two junk characters instead of Unicode character. Do I need to install any fonts for this?
Regards,
Hariharan C.
|
|
|
|
|
you have to take care that the files saved on disk are saved in utf-8 format and not in ansi
(most text editors will allow you to change)
Erik
|
|
|
|
|
Sometimes when you save a Unicode document, it places a couple of extra bytes at the beginning of the XML file. I usually delete those bytes, and everything seems to work after that.
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
I am using the SQLXML managed classes to generate some XML from a SQL Server database, specifying a reference to an XSL stylesheet for my SqlXmlCommand object to transform the raw XML returned from the database. My stylesheet is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="Root">
<xsl:element name="ParameterTemplates">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="Root/*">
<xsl:element name="ParameterTemplate">
<xsl:for-each select="@*">
<xsl:element name="Parameter">
<xsl:attribute name="Name"><xsl:value-of select="name()"/></xsl:attribute>
<xsl:attribute name="Value"><xsl:value-of select="."/></xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
I have added the attribute indent="yes" to my <xsl:output> element which has the effect of formatting the output with line feeds. This is fine, however I would like to "prettily" indent the output in a similar manner to that which can be produced using the XmlTextWriter. What is the best way of achieving this? Can I modify my stylesheet to indent the nodes? Or would I have to perform some post-processing of the output in my .NET code to achieve this, perhaps using a combination of an XmlTextReader and XmlTextWriter?
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
-- modified at 18:05 Thursday 1st November, 2007
|
|
|
|
|
pmarfleet wrote: Can I modify my stylesheet to indent the nodes?
Yes and no. To indent the XML output you can assign yes to the indent attribute of the output element but the XSLT standard does not define that a processor has to adhere and how the XML output has to be indented. (XSLT: "If the indent attribute has the value yes, then the xml output method may output whitespace in addition to the whitespace in the result tree"). Probably the XML processor of the SQLXML processor does ignore this attribute or maybe you have to tell him explicitly which number of whitespaces he should use for indentation. Personally I never used those classes so I cannot tell what to do. Have a look if there might be a setting for this. Also it could be helpful if you post the code you've got so far, making it easier for us to help you.
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook www.troschuetz.de
|
|
|
|
|
My .NET code is as follows:
public static string ExecuteQueryAndTransform(string connectionString, string queryText, string xslPath)
{
string result = String.Empty;
SqlXmlCommand cmd = new SqlXmlCommand(connectionString);
cmd.XslPath = xslPath;
cmd.RootTag = "Root";
cmd.CommandText = queryText;
using (Stream strm = cmd.ExecuteStream())
{
using (StreamReader sr = new StreamReader(strm))
{
result = sr.ReadToEnd();
}
}
return result;
}
There doesn't appear to be any way to control the indenting from the SQLXML managed classes, so I assume this would be done through the stylesheet.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
I found the answer to my problem. If I perform the transform using the .NET framework classes instead of the SQLXML managed classes, I can use the XmlTextWriter to control the indentation.
public static string ExecuteQueryAndTransform(string connectionString, string queryText, string xslPath)
{
string result = String.Empty;
SqlXmlCommand cmd = new SqlXmlCommand(connectionString);
if (!queryText.EndsWith("For XML Auto", StringComparison.CurrentCultureIgnoreCase))
{
queryText += " For XML Auto";
}
cmd.RootTag = "Root";
cmd.CommandText = queryText;
using (Stream strm = cmd.ExecuteStream())
{
XmlTextReader reader = new XmlTextReader(strm);
XPathDocument xd = new XPathDocument(reader, XmlSpace.Preserve);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xslPath);
StringWriter stringWriter = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(stringWriter);
writer.Formatting = Formatting.Indented;
writer.Indentation = 3;
writer.IndentChar = ' ';
xslt.Transform(xd, null, writer);
result = stringWriter.ToString();
}
}
Thanks for your help anyway.
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
I am using xsl:apply-templates and between result of every template i want to insert comma(",") so my code for the same is as below:
<xsl:apply-templates>
<xsl:with-param name="test" >,</xsl:with-param>
</xsl:apply-templates>
but above code is not working,please help me..
Thanks in advance.
Sushant Mathur
Bangalore,
INDIA.
http://n.domaindlx.com/fun2ssh/HOME.htm
|
|
|
|
|
You place text in the select attribute surrounding it with single quotes:
<xsl:apply-templates>
<xsl:with-param name="test" select="','" />
</xsl:apply-templates>
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
Thanks for reply George but still its not working
|
|
|
|
|
What are you trying to do?
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
Okay, if you are trying to place a comma between each "apply-templates" call, I would put the comma in the template being called:
XML:
<?xml version="1.0" encoding="utf-8" ?>
<colors>
<color>Red</color>
<color>Green</color>
<color>Black</color>
</colors>
XSLT:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Comma Delimited</title>
</head>
<body>
<div>
<xsl:apply-templates select="colors/color"/>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="color">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
"We make a living by what we get, we make a life by what we give." --Winston Churchill
|
|
|
|
|
Thanks a lot Geroge...i was looking for the same kind of solution..
thanks again
|
|
|
|
|
Hi,
I have a problem with with parsing an XML document. In the document I have some character entities like I use XmlDocument.SelectNodes() method to select a specific set of nodes from the XML document, but it happens that some of the tags that are found to have these character entities inside them, and I would like to skip them. My question is that how can that be accomplished. I've tried to use regular expressions to filter out these kind of texts but it didn't work, it read only some empty strings.
Any help is well appreciated!
|
|
|
|