Re: [xsl] removing unecessary attributes

Subject: Re: [xsl] removing unecessary attributes
From: Andreas Peter <info@xxxxxxxxxx>
Date: Tue, 01 Apr 2008 21:52:22 +0200
Thanks for the hint about HTML tidy. That works.

Andreas

Mukul Gandhi schrieb:
Your input is not a well-formed XML. Because attributes are not
enclosed in quotes.

Following approaches quickly come to my mind to handle this.

1) An XSLT process cannot get this input as a data model tree, as a
result of XML parsing. Because XML parser will reject this input.
One approach can be, you can use the XSLT 2.0 function, unparsed-text
to read this input as a string and then parse it by hand and do the
transformation you need. But this will not be trivial.

2) Make the input a well-formed XML. Doing this by hand could be
tedious. So you could use a tool like, HTML tidy
(http://tidy.sourceforge.net/).
After you get a well-formed XML as an input, then writing the XSLT
stylesheet for this requirement is quite easy. A modified identity
stylesheet will work here, easily.


On Tue, Apr 1, 2008 at 10:56 PM, Andreas Peter <info@xxxxxxxxxx> wrote:
Hello list-users,

 I have the following file. The problems are the missing quotes for the
 attributes values and
 I need to remove all of the attributes.

 <table>
  <tr class=xl33 height=17 style='height:12.75pt'>
  <td height=17 class=xl37 style='height:12.75pt'>*00.09.1939</td>
  <td class=xl37>&nbsp;</td>
  <td class=xl38>KM<span style="mso-spacerun: yes"> </span>111</td>
  <td class=xl39 x:num>42</td>
  <td class=xl40 x:num>412</td>
  <td colspan=2 class=xl40 style='mso-ignore:colspan'>&nbsp;</td>
  <td class=xl40>Tender</td>
  <td class=xl40>&nbsp;</td>
  <td class=xl40>PL</td>
  <td class=xl40>&nbsp;</td>
  <td colspan=5 class=xl39 style='mso-ignore:colspan'>&nbsp;</td>
  <td class=xl38>Hela</td>
  <td class=xl39>&nbsp;</td>
  <td colspan=238 class=xl33 style='mso-ignore:colspan'>&nbsp;</td>
  </tr>
 </table>

 I know how to copy the tree and so on but the problems are the missing
 quotes.
 I get the error message "Open quote is expected for attribute "class"
 associated with an element type "tr".

Using XSLT is it possible to create an output like the follownig?

 <table>
  <tr>
  <td>*00.09.1939</td>
  <td>&nbsp;</td>
  <td>KM 111</td>
  <td>42</td>
  <td>412</td>
  <td>&nbsp;</td>
  <td>Tender</td>
  <td>&nbsp;</td>
  <td>PL</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>Hela</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  </tr>
 </table>

 Thanks for every hint,
 Andreas

Current Thread