2016-07-11 14 views
2

Ich habe folgende StyleSheet-Informationen in einer XSLT-Datei in meinem Projektverzeichnis, lese diese Datei und speichere sie in einer TextArea in HTML und später lese ich die Textarea mit Javascript.Namespaces werden beim Lesen einer XSLT in einer TextArea entfernt

Wenn ich den Textbereich in IE9 + -Browsern mit dem Wert document.getElementByID ("TestAreaID") lese, entfernt er automatisch die Namensräume und kann daher kein PDF in IE9 + -Browsern erzeugen. Wenn ich die Namespaces im Debug-Modus hinzufüge, dann öffnet es sich in IE9 + Browsern.

<textarea id="TestAreaID> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:fo="http://www.w3.org/1999/XSL/Format" 
     xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" 
     xmlns:svg="http://www.w3.org/2000/svg" 
     xmlns:java="http://xml.apache.org/xslt/java" 
     xmlns:xalan="http://xml.apache.org/xalan" 
     xmlns:barcode="http://barcode4j.krysalis.org/ns" 
     xmlns:pagematrix="http://phi.thc.com/pagematrix" 
     xmlns:math="xalan://java.lang.Math" extension-element-prefixes="math" version="1.1"> 

     <xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/> 
</textarea> 

Nach dem Textbereich in Javascript zu lesen document.getElementById („TestAreaID“) verwendet wird. Wert, nur unter Informationen

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" extension-element-prefixes="math" version="1.1"> 

     <xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/> 

Am verwirrt, warum es den TextArea- Wert Lese nicht vollständig zurückgegeben werden, und Auslassen einiger Namespaces, aber es funktioniert gut in Chrome, FireFox und IE8 Browser.

Im Folgenden ist der HTML-Code

<textarea id="TestAreaID" name="TestAreaID_index_0" style="display:none"> 
    $formInputData.getField("PrintControl").getValue() 
</textarea> 

getField() ist eine statische Methode, die die XSL-Datei Inhalt liest und gibt ,, Diese die XSL-Datei Inhalt ordnungsgemäß zurückgibt, aber wenn ich es in Javascript-Namespaces lesen sind entfernt

Dies ist, was in wir haben Javascript Teil

var xmlText = document.getElementById("TestAreaID").value;            

    xmlText = xmlText.replace(/~1/g, "~"); // This gets set back to ampersand later 
    xmlText = xmlText.replace(/~2/g, "<"); 


    if (window.DOMParser) 
    { 
    parser=new DOMParser(); 
    _xmlDoc=parser.parseFromString(xmlText,"text/xml"); 
    } 
    else // Internet Explorer 
    { 
    _xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    _xmlDoc.async="false"; 
    _xmlDoc.loadXML(xmlText); 
    } 
document.getElementById("TestAreaID").value = xmlText; 
+0

Können Sie den Code "diese Datei lesen und in einer TextArea in HTML speichern" anzeigen? Es ist nicht klar, welche Plattform Sie dafür verwenden, wird das auch mit Javascript im Browser oder auf dem Server gemacht? –

+0

Der Code, der die xsl-Datei liest und sie in den TextArea-Tag einfügt, ist ordnungsgemäß im IE9-Browser verifiziert, aber wenn ich versuche, dies mit JavaScript zu lesen, fehlen einige Namespace-Tags – user2918673

+0

Wenn es nur ein HTML- und Javascript-Problem ist, fügen Sie bitte hinzu Minimale, aber vollständige ausführbare Code-Schnipsel direkt in Ihrer Frage, die es uns ermöglichen, das Problem zu reproduzieren. Ich sehe kein Problem in https://jsfiddle.net/1sn1cwk9/ und IE 11 auf Windows 10. –

Antwort

Verwandte Themen