2013-02-10 1 views
22

Привет, я создаю xml, добавив xsl в xml-вход. Мне нужен выход без этой части "<?xml version="1.0" encoding="utf-16"?>"Нужно удалить <? Xml version = "1.0" encoding = "utf-16"?> Из xml

вход - 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> 

мой 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> 

Выходной ток

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

Ожидаемый результат

<Entity>RIM_BPS</Entity> 
+2

Почему? Все допустимые документы XML должны начинаться с объявления XML. – SLaks

+0

@SLaks, я предполагаю, что некоторые из них не очень совместимы и откровенно бедные. –

+2

@SLaks: XML-объявление необязательно в файлах XML: [Совет: всегда используйте объявление XML] (http://www.ibm.com/developerworks/xml/library/x-tipdecl/index.html) - (это не * must *, но a * should *) – hakre

ответ

29

Попробуйте добавить атрибут omit-xml-declaration="yes" к вашему тегу xsl:output.

Затем он должен читаться как это:

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

Поместите это в XSLT

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

или

на крайнем толчке

<xsl:output method="text" /> 

должен решить симптом ...

Последнее может иметь значительные последствия, хотя в зависимости от процессора.

0

Это полное преобразование:

<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> 

при нанесении на предоставленном документе 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> 

производит разыскиваемый, правильный результат:

<Entity>RIM_BPS</Entity> 
3

Используйте этот XSLT для удаления кодировки = «UTF-8» из xml Документ с использованием XSLT.In Раздел Cdaata Вы можете добавить кодировку как свою волю. Cheers :)

<?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>