2015-11-01 6 views
2

J'ai l'erreur:La cible de l'instruction de traitement correspondant à "[xX] [mM] [lL]" n'est pas autorisée. Erreur XML

Error Parsing /WEB-INF/includes/VerDatosProyeccion.xhtml: Error Traced[line: 4302] The processing instruction target matching "[xX][mM][lL]" is not allowed.

J'utilise le code de même code de: http://jsfiddle.net/qxLn3h86/. J'ai coupé le code et le passé dans mon code.

Mon code ressemble à ceci:

 <table id="tbl1"> 


<tr> 
    <td>Name</td> 
    <td>Birthday</td> 
    <td>Amount</td> 
    <td>Rebate (10%)</td> 
    </tr> 
    <tr> 
    <td>Smith</td> 
    <td data-type="DateTime" data-style="Date" data-value="1980-03-23">Mar 23 1980</td> 
    <td data-type="Number" data-style="Currency" data-value="1234.56">$ 1,234.56</td> 
    <td data-formula="=RC[-1]/10" data-type="Number" data-style="Currency">$ 123.45</td> 
    </tr> 
    <tr> 
    <td>Doe</td> 
    <td data-type="DateTime" data-style="Date" data-value="1978-11-05">Nov 05 1978</td> 
    <td data-type="Number" data-style="Currency" data-value="2345.67">$ 2,345.67</td> 
    <td data-formula="=RC[-1]/10" data-type="Number" data-style="Currency">$ 234.56</td> 
    </tr> 
</table> 

<table id="tbl2"> 
    <tr> 
    <td>Product</td> 
    <td>Price</td> 
    <td>Available</td> 
    <td>Count</td> 
    </tr> 
    <tr> 
    <td>Bred</td> 
    <td data-type="Number" data-style="Currency" data-value="1.89">$ 1.89</td> 
    <td data-type="Boolean" data-value="1">yes</td> 
    <td data-type="Number" data-value="123">123</td> 
    </tr> 
    <tr> 
    <td>Butter</td> 
    <td data-type="Number" data-style="Currency" data-value=".89">$ .89</td> 
    <td data-type="Boolean" data-value="0">no</td> 
    <td data-type="Number" data-value="0">0</td> 
    </tr> 
</table> 


      <button onclick="tablesToExcel(['tbl1','tbl2'], ['Customers','Products'], 'TestBook.xls', 'Excel')">Export to Excel</button> 

</h:panelGroup> 


<script> 
    function exportarExcel(){ 
     $("#tableProyeccion").table2excel({ 
      exclude: ".excludeThisClass", 
      name: "Worksheet Name", 
      filename: "Proyeccion" //do not include extension 
     }); 
    } 
    </script> 
<script> 
    var tablesToExcel = (function() { 
     var uri = 'data:application/vnd.ms-excel;base64,' 
     , tmplWorkbookXML ='<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">' 
      + '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>' 
      + '<Styles>' 
      + '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>' 
      + '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>' 
      + '</Styles>' 
      + '{worksheets}</Workbook>' 
     , tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>' 
     , tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>' 
     , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } 
     , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } 
     return function(tables, wsnames, wbname, appname) { 
      var ctx = ""; 
      var workbookXML = ""; 
      var worksheetsXML = ""; 
      var rowsXML = ""; 

      for (var i = 0; i < tables.length; i++) { 
      if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]); 
      for (var j = 0; j < tables[i].rows.length; j++) { 
       rowsXML += '<Row>' 
       for (var k = 0; k < tables[i].rows[j].cells.length; k++) { 
       var dataType = tables[i].rows[j].cells[k].getAttribute("data-type"); 
       var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style"); 
       var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value"); 
       dataValue = (dataValue)?dataValue:tables[i].rows[j].cells[k].innerHTML; 
       var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula"); 
       dataFormula = (dataFormula)?dataFormula:(appname=='Calc' && dataType=='DateTime')?dataValue:null; 
       ctx = { attributeStyleID: (dataStyle=='Currency' || dataStyle=='Date')?' ss:StyleID="'+dataStyle+'"':'' 
         , nameType: (dataType=='Number' || dataType=='DateTime' || dataType=='Boolean' || dataType=='Error')?dataType:'String' 
         , data: (dataFormula)?'':dataValue 
         , attributeFormula: (dataFormula)?' ss:Formula="'+dataFormula+'"':'' 
         }; 
       rowsXML += format(tmplCellXML, ctx); 
       } 
       rowsXML += '</Row>' 
      } 
      ctx = {rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i}; 
      worksheetsXML += format(tmplWorksheetXML, ctx); 
      rowsXML = ""; 
      } 

      ctx = {created: (new Date()).getTime(), worksheets: worksheetsXML}; 
      workbookXML = format(tmplWorkbookXML, ctx); 

    console.log(workbookXML); 

      var link = document.createElement("A"); 
      link.href = uri + base64(workbookXML); 
      link.download = wbname || 'Workbook.xls'; 
      link.target = '_blank'; 
      document.body.appendChild(link); 
      link.click(); 
      document.body.removeChild(link); 
     } 
     })(); 

</script> 
+0

double possible de [Erreur: La correspondance cible d'instruction de traitement « \ [xX \] \ [mM \] \ [ lL \] "n'est pas autorisé] (http://stackoverflow.com/questions/19889132/error-the-processing-instruction-target-matching-xxmmll-is-not-allowed) – usr2564301

Répondre

0

Essayer enroulant votre code dans script avec CDATA:

<script> 
//<![CDATA[ 
    ...code containing XML declaration (`<?xml version="1.0"?>`) 
//]]> 
</script> 

de telle sorte que la déclaration XML n'est pas interprétée comme partie du document englobante. Les déclarations XML ne peuvent apparaître qu'en haut d'un document XML (et il ne peut y en avoir qu'une au maximum).

Si cela ne résout pas votre problème, examinez l'emplacement de sortie de la déclaration XML. Assurez-vous qu'il n'y a pas de contenu visible ou invisible avant la déclaration XML et assurez-vous qu'il n'y a pas plusieurs déclarations XML dans la sortie. Pour plus de détails, voir:

+2

Anonymous downvoter: attention à expliquer pourquoi vous sentez que cette réponse n'est pas utile? – kjhughes

+1

Merci, ça marche! –