|
Subject: RE: [xsl] Building a HTML select list from XML nodes From: "Gertjan Assies" <Gertjan.Assies@xxxxxxxxxxxxxx> Date: Tue, 26 Nov 2002 15:15:46 +0100 |
Simon,
Although most browsers will accept a single <option> tag
XSLT can only output 'wellformed' tags
Try thinking of building an output tree (the HTML) from the inputtree
(the XML) instead of outputting text
Perhaps this will work
...
<xsl:if test="position()=1">
<OPTION VALUE="{name()}"><xsl:value-of select="name()"
/></OPTION>
</xsl:if>
...
Gertjan Assies
webdeveloper
-----Original Message-----
From: Moore, Simon [mailto:Simon.Moore@xxxxxxxxxx]
Sent: Tuesday, November 26, 2002 2:43 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Building a HTML select list from XML nodes
> Hi
>
> Another New recruit... :-) I would be grateful for any help on
this as it is my first real XSL project.
>
> I am trying to build a list of all the unique nodenames available in
an xml file and present it as a selectable drop down list in an HTML
page.
> I am using IE 5.5 and MSXML on Windows 95. At the moment I have all
the files saved on my windows desktop so everything is local.
> My problem is that when I open the HTML page, the surrounding text and
select box apprear, but there is nothing to select in the
> box. If I change the output method to text I can see that my newline
has no effect at all. The listbox OPTION statements appear as one
> long line. If I put a <BR /> tag in the loop and comment out the FORM
and SELECT tags then it will print the text in the same way as if I had
> typed the HTML by hand - if I paste it into a file and test it in the
browser as a fixed page it all works perfectly.
>
> I searched on the Web and found that preserveWhiteSpace has some
effect on spacing but, I'm not so sure that this is the solution. I just
can't
> get it to work. I'm sure that I am missing something simple.
>
> I have included a sample XML plus my XSL and HTML page. The XSL,
HTML/JavaScript have been patched together from different sources
(web/books).
>
> Many thanks
> Simon.
>
> --------- START XML --------
> <?xml version="1.0" encoding="UTF-8"?>
> <?xml-stylesheet type="text/xsl" href="./list_test.xsl"?>
> <computer-list>
> <computer>
> <name>fred</name>
> <project>fasttrack</project>
> <architecture>w32-ix86</architecture>
> <status>UP</status>
> <diskdrives>
> <drive>A</drive>
> <drive>B</drive>
> <drive>C</drive>
> </diskdrives>
> </computer>
>
> .... more computers are in the list ....
>
> </computer-list>
>
> --------- END XML --------
>
>
> --------- START XSL --------
>
> <?xml version="1.0" ?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
>
> <xsl:output method="html"/>
>
> <xsl:variable name="newline">
> <xsl:text>
> </xsl:text>
> </xsl:variable>
>
> <xsl:variable name="testtext">
> <xsl:text>
> This is a test of the variables and it works when selected later in
the XSL.
> </xsl:text>
> </xsl:variable>
>
> <xsl:key name="elements" match="*" use="name()" />
> <xsl:template match="/">
> <HTML>
> <HEAD><TITLE>
> <xsl:text>Maclaren - Select The elements required</xsl:text>
> </TITLE></HEAD>
> <BODY>
> <H1>
> <xsl:text>Summary of Elements</xsl:text>
> </H1>
> <BR />
> <xsl:value-of select="$testtext"/>
> <BR />
> <FORM>
> <SELECT NAME = "eltype">
> <xsl:for-each
select="//*[generate-id(.)=generate-id(key('elements',name())[1])]">
> <xsl:sort select="name()" />
> <xsl:for-each select="key('elements', name())">
> <xsl:if test="position()=1">
>
> <xsl:text><OPTION VALUE = "</xsl:text>
> <xsl:value-of select="name()" />
> <xsl:text>"></xsl:text>
> <xsl:value-of select="name()" />
> <xsl:value-of select="$newline"/>
>
> <!-- If I put BR/ here the text prints the correct HTML
text -->
> </xsl:if>
> </xsl:for-each>
> </xsl:for-each>
> </SELECT>
> </FORM>
> <BR />
> <xsl:text>there should be a newline after this but it doesn't
work...</xsl:text>
> <xsl:value-of select="$newline"/>
> <xsl:text>This line just gets concatenated to the previous
line.</xsl:text>
> </BODY>
> </HTML>
> </xsl:template>
> </xsl:stylesheet>
>
>
> --------- END XSL --------
>
>
>
> --------- START HTML/JAVASCRIPT --------
> <html>
> <head>
> <title>
> XML test !!
> </title>
> </head>
> <body>
>
> <SCRIPT LANGUAGE="JavaScript">
>
> // Load XSL
> var objXSLT = new
ActiveXObject("MSXML2.FreeThreadedDomDocument");
> objXSLT.async = false;
> objXSLT.load("list_test.xsl");
>
> // create a compiled XSL-object
> var objCompiled = new
ActiveXObject("MSXML2.XSLTemplate");>
> objCompiled.stylesheet =
objXSLT.documentElement;
>
> // create XSL-processor
> var objXSLProc = objCompiled.createProcessor();
>
> // Load XML
> var objXML = new
ActiveXObject("MSXML2.FreeThreadedDomDocument");
> objXML.preserveWhiteSpace = true;
> objXML.async = false;
> objXML.load("tmp.xml");
>
> // input for XSL-processor
> objXSLProc.input = objXML;
> //
objXSLProc.addParameter("NameOfYourParameter1",
"ValueOfYourParameter1");
> //
objXSLProc.addParameter("NameOfYourParameter2",
"ValueOfYourParameter2");
> // etc...
>
> // transform
> objXSLProc.transform();
>
> // display
> document.write(objXSLProc.output);
> </SCRIPT>
>
> </body>
>
> </html>
>
> --------- END HTML/JAVASCRIPT --------
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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Building a HTML select list f, Moore, Simon | Thread | [xsl] need a variable path in the t, inchi2000 |
| RE: [xsl] need a variable path in t, bryan | Date | [xsl] parameters in xsp don't work, Robert Sösemann |
| Month |