2013-02-10 19 views
22

Xin chào, tôi đang tạo một xml bằng cách nhập xsl vào đầu vào xml. Tôi cần đầu ra mà không cần phần này "<?xml version="1.0" encoding="utf-16"?>"Cần xóa <? Xml version = "1.0" encoding = "utf-16"?> Từ xml

đầu vào - 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 tôi

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

sản lượng hiện tại

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

Dự kiến ​​Output

<Entity>RIM_BPS</Entity> 
+2

Tại sao? Tất cả các tài liệu XML hợp lệ phải bắt đầu bằng một khai báo XML. – SLaks

+0

@SLaks, tôi đoán một số 'erm không tuân thủ và thực hiện kém thẳng thắn. –

+2

@SLaks: Khai báo XML là tùy chọn trong tệp XML tuy nhiên: [Mẹo: Luôn sử dụng khai báo XML] (http://www.ibm.com/developerworks/xml/library/x-tipdecl/index.html) - (nó không phải là * phải * nhưng * nên *) – hakre

Trả lời

29

Thử thêm thuộc tính omit-xml-declaration="yes" vào thẻ xsl:output của bạn.

Nó thì nên đọc như thế này:

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

Đặt này trong XSLT của bạn

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

hoặc

tại một push cực

<xsl:output method="text" /> 

nên giải quyết các triệu chứng ...

Điều cuối cùng có thể có hậu quả đáng kể, tùy thuộc vào bộ xử lý.

0

chuyển đổi hoàn toàn này:

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

khi áp dụng trên tài liệu XML cung cấp:

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

tạo ra truy nã, kết quả chính xác:

<Entity>RIM_BPS</Entity> 
3

Sử dụng XSLT này để loại bỏ mã hóa = “UTF-8” từ xml Tài liệu bằng cách sử dụng XSLT.Trong phần Cdaata Bạn có thể thêm mã hóa làm ý muốn. 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> 
Các vấn đề liên quan