2013-02-10 7 views
22

Witam generuję xml, umieszczając xsl na wejściu xml. Muszę wyjście bez tej części "<?xml version="1.0" encoding="utf-16"?>"Musisz usunąć <? Xml version = "1.0" encoding = "utf-16"?> Z xml

input - xml

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<CreateResponse xmlns="http://jerseytelecom.com/"> 
    <CreateResult> 
     <ISD_XMLGateway> 
      <Entity>RIM_BPS</Entity> 
     </ISD_XMLGateway> 
    </CreateResult> 
    </CreateResponse> 
</soap:Body> 
</soap:Envelope> 

moim xsl

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:JT="http://jerseytelecom.com/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="JT"> 
     <xsl:output method="xml" indent="yes"/> 
     <xsl:template match="/"> 
      <xsl:element name="Entity"> 
      <xsl:value-of select="soap:Envelope/soap:Body/JT:CreateResponse/JT:CreateResult/JT:ISD_XMLGateway/JT:Entity"/> 
      </xsl:element> 
      </xsl:template> 
      </xsl:stylesheet> 

Wyjście prądowe

<?xml version="1.0" encoding="utf-16"?> 
    <Entity>RIM_BPS</Entity> 

Oczekiwany Wyjście

<Entity>RIM_BPS</Entity> 
+2

Dlaczego? Wszystkie poprawne dokumenty XML muszą zaczynać się od deklaracji XML. – SLaks

+0

@SLaks, Zgaduję, że niektóre z nich nie są tak zgodne i szczerze mówiąc, słaba implementacja. –

+2

@SLaks: Deklaracja XML jest opcjonalna w plikach XML jednak: [Podpowiedź: Zawsze używaj deklaracji XML] (http://www.ibm.com/developerworks/xml/library/x-tipdecl/index.html) - (nie jest to * musi *, ale * należy *) – hakre

Odpowiedz

29

Spróbuj dodać atrybut omit-xml-declaration="yes" do swojego znacznika xsl:output.

Należy następnie odczytać tak:

<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /> 
11

umieścić to w swoim XSLT

<xsl:output method="xml" omit-xml-declaration="yes"/> 

lub

w ekstremalnych naciśnięciem

<xsl:output method="text" /> 

powinno rozwiązać objaw ...

Ten ostatni może jednak mieć znaczące konsekwencje w zależności od procesora.

0

To kompletna transformacja:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:JT="http://jerseytelecom.com/" exclude-result-prefixes="soap JT"> 
<xsl:output omit-xml-declaration="yes" indent="yes" 
    encoding="utf-8"/> 
<xsl:template match="/"> 
    <Entity> 
    <xsl:value-of select= 
    "soap:Envelope/soap:Body/JT:CreateResponse 
       /JT:CreateResult/JT:ISD_XMLGateway/JT:Entity"/> 
    </Entity> 
</xsl:template> 
</xsl:stylesheet> 

po naniesieniu na dostarczonych dokumentów XML:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<CreateResponse xmlns="http://jerseytelecom.com/"> 
    <CreateResult> 
     <ISD_XMLGateway> 
      <Entity>RIM_BPS</Entity> 
     </ISD_XMLGateway> 
    </CreateResult> 
    </CreateResponse> 
</soap:Body> 
</soap:Envelope> 

produkuje Wanted, poprawny wynik:

<Entity>RIM_BPS</Entity> 
3

Użyj tego XSLT, aby usunąć kodowanie = "UTF-8" z xml Dokument używając XSLT. W sekcji Cdaata Możesz dodać kodowanie jako swoją wolę. Pozdrawiam :)

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" omit-xml-declaration="yes"/> 
    <xsl:template match="/"> 
     <xsl:text disable-output-escaping="yes"><![CDATA[<?xml version="1.0"?>]]></xsl:text> 
     <xsl:copy-of select="node()"/> 
    </xsl:template> 
</xsl:stylesheet> 
Powiązane problemy