在XML转换之后,我得到了以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:[..]><Tag1></tag1><Tag2></Tag2>[..]</Document>我需要输出文件在一行上,如下所示:
<?xml version="1.0" encoding="UTF-8"?><Document xmlns="urn:iso:std:[..]><Tag1></tag1><Tag2></Tag2>[..]</Document>到目前为止,唯一有效的解决方案是不显示声明,但如果有其他选择,我宁愿不这样做。
我的XSL模板是这样开始的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
[...]
xmlns:bpm="http://xmlns.oracle.com/bpmn20/extensions"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ora="http://schemas.oracle.com/xpath/extension">
<xsl:decimal-format name="decdot" decimal-separator="."/>
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="/">
<Document>
[...]
</Document>
</xsl:template>
</xsl:stylesheet>谢谢你的帮助。
发布于 2019-01-22 16:51:13
我找到了一个解决方案,看起来更像是橡皮胶带,而不是实际的修复,但它工作得很好,这对你来说是合法的吗?
我决定省略声明,然后强制转换通过如下代码手动写下它:
<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:text disable-output-escaping="yes"><?xml version="1.0" encoding="UTF-8"?></xsl:text>
<Document>
[...]
</Document>
</template>发布于 2019-01-22 00:58:06
对于解决方案,我省略了所使用的XML的名称空间。
为此,我只需通过XSLT1.0复制所有内容,并强制执行上述XPath副本,而无需缩进和格式化XSLT样式表。
XML输入
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:[..]"><Tag1></Tag1><Tag2></Tag2></Document>XSLT 1.0样式表
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="utf-8" indent="no" method="xml" omit-xml-declaration="no"/>
<xsl:decimal-format name="decdot" decimal-separator="."/>
<xsl:template match="/">
<xsl:copy-of select="/"/>
</xsl:template>
</xsl:stylesheet>XML输出
<?xml version="1.0" encoding="utf-8"?><Document xmlns="urn:iso:std:[..]"><Tag1/><Tag2/></Document>https://stackoverflow.com/questions/54293151
复制相似问题