This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: ?Dataislands?
- From: "Chris Bayes" <chris at bayes dot co dot uk>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 1 Mar 2002 09:27:59 -0000
- Subject: RE: [xsl] ?Dataislands?
- Reply-to: xsl-list at lists dot mulberrytech dot com
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@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of Rosa Cheng
> Sent: 28 February 2002 22:25
> To: 'xsl-list@lists.mulberrytech.com'
> 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