【发布时间】:2013-01-25 21:10:12
【问题描述】:
您好,我正在通过将 xsl 应用到 xml 输入来生成 xml。我需要没有这部分的输出"<?xml version="1.0" encoding="utf-16"?>"
输入--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>
【问题讨论】:
-
为什么?所有有效的 XML 文档都必须以 XML 声明开头。
-
@SLaks:XML 声明在 XML 文件中是可选的,但是:Tip: Always use an XML declaration --(这不是必须而是应该)
-
@SLaks 和 hakre - 如果是 XML 1.1 文件,则必须有 XML 声明。如果不包含声明,则文件只能是 XML 1.0。 w3.org/TR/xml11/#sec-prolog-dtd 和 w3.org/TR/REC-xml/#sec-prolog-dtd
-
它适合排除稍后将转换组合成更大的 XML 文档的声明。
-
@SLaks 想要去除 标记的一个原因是,如果您想输出文档的各个部分,而不是整个文档,然后再将它们组合起来。