RE: [xsl] ?Dataislands?

Subject: RE: [xsl] ?Dataislands?
From: "Chris Bayes" <chris@xxxxxxxxxxx>
Date: Fri, 1 Mar 2002 09:27:59 -0000
Rosa,
The best way to do this is to generate html from your xml which has an
attribute that contains an xpath to the associated xml element or calls
a function with the path as a parameter. Say your xml looked something
like this

<questions>
	<tab no="1">
		<question text="what is your favourite
colour"></question>
		<question text="what is your favourite day"></question>
	</tab>
	<tab no="2">
		<question text="what is your favourite
colour"></question>
		<question text="what is your favourite day"></question>
	</tab>
</questions>

You could have xslt that displays tabs similar to the paging examples at
http://www.bayes.co.uk/xml/index.xml?/xml/tutorial/paging/paging.xml
Then for questions the xslt would be something like

<xsl:template match="question">
	<xsl:value-of select="@text" />
	<input type="text" value="{.}">
		<xsl:attribute name="onblur">Javascript:updateXML(this,
'<xsl:call-template name="path" />');</xsl:attribute>
	</input>
</xsl:template>

<xsl:temlpate name="path">
	<xsl:for-each select="(ancestor-or-self::*)">
		/*[<xsl:value-of
select="1+count(preceding-sibling::*)"/>]
	</xsl:for-each>
</xsl:template>

Which would produce this html for the second tab

what is your favourite colour <input type="text" value=""
onblur="Javascript:updateXML(this, '/*[1]/*[2]/*[1]')'" />
what is your favourite day <input type="text" value=""
onblur="Javascript:updateXML(this, '/*[1]/*[2]/*[2]')'" />

Then your update function would simply be something like

function updateXML(obj, path){
	var node = XMLISLAND.selectSingleNode(path);
	node.nodeValue = obj.value;
}

I wouldn't use data islands though it is much easier to just create an
xml and xsl object

var XMLOBJECT = new ActiveXObject("MSXML2.DOMDocument");
var XSLOBJECT = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");

Ciao Chris

XML/XSL Portal
http://www.bayes.co.uk/xml


> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Rosa Cheng
> Sent: 28 February 2002 22:25
> To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
> Subject: [xsl] ?Dataislands?
> 
> 
> Can anyone please tell me what is the best way to approach 
> such a problem using XSL and XML?
> 
> I have a page of questions that are divided into tab 
> sections, with a bar of tabs at the top of the page.  You can 
> tab through them or click next to go onto the next tab 
> section.  You can also come back to the tab sections before 
> by clicking on the tabs at the top of the page.  What I want 
> to do though is to ONLY submit all the answers at the very 
> end of the series of questions, i.e. there is a submit button 
> only on the very last tab page.  But as I change the answers 
> and tab through, I want to also keep the answers I had 
> entered before.  This means I have to somehow save the 
> answers entered on the client side through the course of 
> questions answering.
> 
> There is one possible solution that has come up and it is:
> The original XML will come in and a tabbed questions page 
> will be displayed based on that original XML.  This XML will 
> also be binded to a dataisland.  In fact from there onwards, 
> the pages will be displayed using the XML from the 
> dataisland.  So all I need to do is to just keep updating the 
> XML binded to the dataisland.  And after the user is 
> satisfied with what it has answered, then the XML binded to 
> the dataisland will be submitted to the server.  (But then 
> again, it also means I need to write some script that will 
> update the dataisland XML with the new answers on the page 
> with each tab click.)
> 
> I'm not sure whether this is the best approach, can anyone 
> please tell me whether there is a better way or this approach 
> is fine?  If this approach is fine, can anyone direct me to 
> an example of such a page or where to find the javascript to 
> update the binded XML with answers grabbed from the HTML page 
> displayed?
> 
> Thank you in advance.
> 
> Rosa
> 
> P.S. if there is anything that is still unclear please tell 
> me, I will try to explain it better.
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread