469,903 Members | 1,815 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,903 developers. It's quick & easy.

Embedding XML into ASPX question

I have an XML string in a database that I would like to display using XSLT.
All of that works like a champ, but I can't figure out how to embed the XML
inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a Footer
User Control. I'd like to put the transformed XML right in the middle. It
seems like this is something that should be doable, but I can't quite
figure it out. Is anyone out there doing this, and if so, can you point me
in the right direction?

Thanks,
Vic Fees
Nov 11 '05 #1
5 4894
Put a PlaceHolder or LiteralControl where you want the XML to be, and add it
to that control.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
http://www.takempis.com
Complex things are made up of
lots of simple things.

"Victor Fees" <vf************@seventhfloorinc.com> wrote in message
news:Xn**********************************@207.46.2 48.16...
I have an XML string in a database that I would like to display using XSLT. All of that works like a champ, but I can't figure out how to embed the XML inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a Footer
User Control. I'd like to put the transformed XML right in the middle. It seems like this is something that should be doable, but I can't quite
figure it out. Is anyone out there doing this, and if so, can you point me in the right direction?

Thanks,
Vic Fees

Nov 11 '05 #2
Victor Fees wrote:
I have an XML string in a database that I would like to display using XSLT.
All of that works like a champ, but I can't figure out how to embed the XML
inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a Footer
User Control. I'd like to put the transformed XML right in the middle.

You can put placeholder <div> between them and fill transformation result to
its InnerHtml property.
--
Oleg Tkachenko
http://www.tkachenko.com/blog
Multiconn Technologies, Israel

Nov 11 '05 #3
Oleg Tkachenko <oleg@NO_SPAM_PLEASEtkachenko.com> wrote in
news:u9**************@TK2MSFTNGP11.phx.gbl:
a little tricky . . . but it worked. Thanks.
Nov 11 '05 #4
Vic,

The System.Web.UI.WebControls.Xml class is designed for exactly this
functionality.
It has 2 pulic properties: Document and Transform which take your Xml
Document and Xslt Transform Document respectively and
perform the transform for you. Like any WebControl it can just be dropped
on your aspx page.

Another way to do it, and the way I do it for performance reasons, is to
write your own Custom Control derived from System.Web.UI.Control.

This gives you an HtmlTextWriter that you can write to by performing an Xsl
Transform on an XPath Document, the XPath document is more
performant than the Xml Document class. Try something like the following:

using System;
using System.Web;
using System.Web.UI;
using System.Xml;
using System.Xml.Xpath;
using System.Xml.Xsl;

public class MyXmlTransformer : System.Web.UI.Control
{
protected override void Render(HtmlTextWriter writer)
{
XPathDocument theXDoc = new XPathDocument("myxml.xml");

XslTransform theXslt = new XslTransform();
theXslt.Load("thexslt.xsl");

theXslt.Transform(theXDoc, null, writer);
}
}

Then just drop one of these on your aspx page. Obviously the above can be
made more re-usable by exposing the
XPathDocument and XslTransform as properties of the class, mess about with
it and see what you come up with.

Hope this helps,

Dave
----- Original Message -----
From: "Victor Fees" <vf************@seventhfloorinc.com>
Newsgroups:
microsoft.public.dotnet.general,microsoft.public.d otnet.framework.aspnet,mic
rosoft.public.dotnet.xml
Sent: Wednesday, July 30, 2003 2:44 PM
Subject: Embedding XML into ASPX question

I have an XML string in a database that I would like to display using XSLT. All of that works like a champ, but I can't figure out how to embed the XML inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a Footer
User Control. I'd like to put the transformed XML right in the middle. It seems like this is something that should be doable, but I can't quite
figure it out. Is anyone out there doing this, and if so, can you point me in the right direction?

Thanks,
Vic Fees "Victor Fees" <vf************@seventhfloorinc.com> wrote in message
news:Xn**********************************@207.46.2 48.16... I have an XML string in a database that I would like to display using XSLT. All of that works like a champ, but I can't figure out how to embed the XML inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a Footer
User Control. I'd like to put the transformed XML right in the middle. It seems like this is something that should be doable, but I can't quite
figure it out. Is anyone out there doing this, and if so, can you point me in the right direction?

Thanks,
Vic Fees

Nov 11 '05 #5
Oleg Tkachenko <oleg@NO_SPAM_PLEASEtkachenko.com> wrote in
news:u9**************@TK2MSFTNGP11.phx.gbl:
Victor Fees wrote:
I have an XML string in a database that I would like to display using
XSLT. All of that works like a champ, but I can't figure out how to
embed the XML inside an ASPX page.

For example, I have an ASPX page with a Header User Control and a
Footer User Control. I'd like to put the transformed XML right in
the middle.

You can put placeholder <div> between them and fill transformation
result to its InnerHtml property.


I have a follow-up question about this . . . . I have HTML generic
textboxes in my XSLT, and would like to reference them in the code-behind
for the page in which I am embedding the XML. I've used a recursive
subroutine to prove that I can see the control in the code-behind, but I
can't seem to access anything of value (i.e., ID).

Private Sub DrillDown(ByVal objControl As Control)
If objControl.ID Is Nothing Then
Me.Label1.Text += "Type: " + objControl.GetType().ToString()
+ "<br>"
Else
Me.Label1.Text += "Control.ID = " + objControl.ID.ToString +
"<br>"
End If
If objControl.HasControls Then
Me.Label1.Text += "this control has children<br>"
Dim objChild As Control
For Each objChild In objControl.Controls
Me.DrillDown(objChild)
Next
End If
End Sub

In my XSLT, I'm doing this:

<xsl:for-each select="Survey/Questions/Question">
<p><xsl:value-of select="QuestionText">
</xsl:value-of>
<xsl:choose>
<xsl:when test="@type = 'inputbox'">
<input>
<xsl:attribute name="type">text
</xsl:attribute>
<xsl:attribute name="id">txtQ
<xsl:value-of select="@id"></xsl:value-of></xsl:attribute>
<xsl:attribute name="name">txtQ
<xsl:value-of select="@id"></xsl:value-of></xsl:attribute>
<xsl:attribute name="runat">
server</xsl:attribute>
</input>
</xsl:when>
</xsl:choose>
<xsl:value-of select="@id"></xsl:value-of>
</p>
</xsl:for-each>

So, you can see that the "inputbox" is a generic html <input> with an id
of txtQ1 and a name of txtQ1. However, I can't find a variable that
gives me this value in the code behind. I've tried using <asp:TextBox>
embedded in my XML, but that provides a new set of problems -- the ID
turns out to be TextBox1, and the display gets worse.

Regardless, any idea what I'm doing wrong here?
Nov 11 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by adsheehan | last post: by
5 posts views Thread by Victor Fees | last post: by
1 post views Thread by James Lattanzio | last post: by
reply views Thread by EMW | last post: by
3 posts views Thread by Praveen | last post: by
1 post views Thread by Thomas Troeger | last post: by
1 post views Thread by Waqarahmed | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.