我有一个简单的生成纯文本的XSLT,我正在这样应用(使用参考实现):

    StreamSource schemasource = new StreamSource(getClass().getResourceAsStream("source.xml"));
    StreamSource stylesource = new StreamSource(getClass().getResourceAsStream("transform.xslt"));
    Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);

    StringWriter writer = new StringWriter();
    transformer.transform(schemasource, new StreamResult(domWriter));
    System.out.println("XML after transform:");
    System.out.println(writer.toString());


“ transform”调用始终在输出中插入处理指令。有什么方法可以配置它吗?

(例如,对于非常简单的节点标识转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:template match="*">
        <xsl:copy/>
        <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>


当应用于

<hello/>


我懂了

<?xml version="1.0" encoding="UTF-8"?>
<hello/>




非常感谢,安迪

最佳答案

严格来说,<?xml声明不是处理指令。但是,您应该能够在此处使用xsl:output命令来指定不输出任何xml声明:

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


应将其放置为xsl:stylesheet元素的直接子代。

关于java - 从XSLT排除处理指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28714597/

10-09 02:05