Subject: [xsl] xml cells transformed in to a 2-d table, some table cells missing, full table required - constant variables. From: "Brendan Sleight" <bms@xxxxxxxxxx> Date: Sat, 3 Jan 2009 02:00:49 +0000 |
Hi All, I am having fun with XSL. I am developing an application for traffic signals (traffic-lights) that uses xml and the input and output. I want to make everything based around the xml. So I decided to use stylesheets when I need text output rather than create extra methods on the classes. Basically I now being stubborn and am _going_ to use stylesheets even if it drives me insane. I have hit a snag as variables in XSL are constant. So I can not set a flag to tell me when something has not produced a output. I am taking a basic xml file:- http://www.barwap.com/files/2008/Dec/30/example-site-2.xml Basically with lots of entries such as:- <intergreen> <from>A</from> <to>B</to> <length>7</length> </intergreen> <intergreen> <from>A</from> <to>C</to> <length>5</length> </intergreen> <intergreen> <from>B</from> <to>A</to> <length>7</length> </intergreen> Each of the <intergreen> are going to be used to form a 2-d table. So far I have got this stylesheet:- http://www.barwap.com/files/2009/Jan/02/site-transform-intergreens.xsl Normally I would use python-amara - http://uche.ogbuji.net/tech/4suite/amara/ as my XSL processor, but I testing using xmlstarlet. http://xmlstar.sourceforge.net/, version 1.0.1-2. The command:- xmlstarlet tr ./site-transform-intergreens.xsl ./example-site-2.xml Gives:- <?xml version="1.0"?> <b>Intergreen table</b><tt><i> </i><i> A</i><i> B</i><i> C</i><i> D</i><i> A</i><b> 7 </b><b> 5 </b><i> B</i><b> 7 </b><i> C</i><b> 6 </b><i> D</i><b> 5 </b><b> 5 </b><b> 5 </b></tt> Or without the <b> and <i>, A table of "from" verus "to" :- Intergreen table A B C D A 7 5 B 7 C 6 D 5 5 5 However I can not find a solution where if i do not have en entry for say, From A to D, a cell is still added to the plain text table. (Long story but I can not use html tables.) So rather then getting a half table I get a full populated table, the ideal answer:- Intergreen table A B C D A 0 7 5 0 B 7 0 0 0 C 6 0 0 0 D 5 5 5 0 I could pre-populate the xml file with null entires, but that makes the file on say a 32x32 table not very friendly for a human to read. I have played around with a few options, but hit the snag that variables in XSL are constants so flags are out of the question. Also the stylesheet feel very poorly written by me, as I loop through all the entries of the <intergreen> tag until I find the tag equaling row and column, which feels very in-efficient. So any tips on getting the stylesheet to the correct output would be very appreciated as I have hit a bit of a brick wall and run out of ideas. I am very new to style sheets and xml. Can this even be done with stylesheets ? Best Regards, Brendan M. Sleight xmlstarlet tr ./processor-version.xsl ./exmaple.xml <?xml version="1.0"?> <html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><title>XSLT Processor Version</title> </head><body><p>XSL version: 1.0 </p><p>Vendor: libxslt </p><p>Vendor URL: http://xmlsoft.org/XSLT/ </p><p>Product name: [Undefined] </p><p>Product version: [Undefined] </p><p>Is schema-aware: [Undefined] </p><p>Supports serialization: [Undefined] </p><p>Supports backwards compatibility: [Undefined] </p></body></html>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Help with creating Task c, Wendell Piez | Thread | RE: [xsl] xml cells transformed in , Michael Kay |
Re: [xsl] Help with creating Task c, Wendell Piez | Date | RE: [xsl] xml cells transformed in , Michael Kay |
Month |