Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 6中对xinclude的默认支持?_Java_Xml_Xslt_Xalan_Xinclude - Fatal编程技术网

Java 6中对xinclude的默认支持?

Java 6中对xinclude的默认支持?,java,xml,xslt,xalan,xinclude,Java,Xml,Xslt,Xalan,Xinclude,在我的应用程序中,我发现解析的XML文件中的xinclude在Java XSLT转换中不起作用 然而,尽管我有: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setXIncludeAware(true); 我没有特别将transformer工厂设置为System.getProperty(“javax.xml.transform.TransformerFactory”)返回“null

在我的应用程序中,我发现解析的XML文件中的xinclude在Java XSLT转换中不起作用

然而,尽管我有:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setXIncludeAware(true);
我没有特别将transformer工厂设置为
System.getProperty(“javax.xml.transform.TransformerFactory”)
返回“null”

我的问题是:默认的Java(1.6或6)是否支持xinclude,或者我是否必须添加一个替代的XSLT解析器,如ApacheXerces?

根据,支持从Java 1.5(5)开始就存在。我相信XInclude支持依赖于,由于向后兼容性的原因,默认情况下会关闭它

public class XIncludeDemo {

    private static final String XML = "<?xml version=\"1.0\"?>\n"
            + "<data xmlns=\"foo\" xmlns:xi=\"http://www.w3.org/2001/XInclude\">\n"
            + "<xi:include href=\"include.txt\" parse=\"text\"/>\n"
            + "</data>\n";

    private static final String INCLUDE = "Hello, World!";

    public static void main(String[] args) throws Exception {
        // data
        final InputStream xmlStream = new ByteArrayInputStream(XML
                .getBytes("UTF-8"));
        final InputStream includeStream = new ByteArrayInputStream(INCLUDE
                .getBytes("UTF-8"));
        // document parser
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setXIncludeAware(true);
        factory.setNamespaceAware(true);
        DocumentBuilder docBuilder = factory.newDocumentBuilder();
        if (!docBuilder.isXIncludeAware()) {
            throw new IllegalStateException();
        }
        docBuilder.setEntityResolver(new EntityResolver() {
            @Override
            public InputSource resolveEntity(String publicId, String systemId)
                    throws SAXException, IOException {
                if (systemId.endsWith("include.txt")) {
                    return new InputSource(includeStream);
                }
                return null;
            }
        });
        Document doc = docBuilder.parse(xmlStream);
        // print result
        Source source = new DOMSource(doc);
        Result result = new StreamResult(System.out);
        TransformerFactory transformerFactory = TransformerFactory
                .newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.transform(source, result);
    }

}
公共类XIncludeDemo{
私有静态最终字符串XML=“\n”
+“\n”
+“\n”
+“\n”;
私有静态最终字符串INCLUDE=“Hello,World!”;
公共静态void main(字符串[]args)引发异常{
//资料
最终输入流xmlStream=新的ByteArrayInputStream(XML
.getBytes(“UTF-8”);
最终输入流includeStream=新的ByteArrayInputStream(包括
.getBytes(“UTF-8”);
//文档解析器
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
工厂。setXIncludeAware(真);
factory.setNamespaceAware(true);
DocumentBuilder docBuilder=factory.newDocumentBuilder();
如果(!docBuilder.isXIncludeAware()){
抛出新的非法状态异常();
}
docBuilder.setEntityResolver(新的EntityResolver(){
@凌驾
public InputSource resolveEntity(字符串publicId、字符串systemId)
抛出SAXException,IOException{
if(systemId.endsWith(“include.txt”)){
返回新的输入源(includeStream);
}
返回null;
}
});
documentdoc=docBuilder.parse(xmlStream);
//打印结果
Source Source=新的DOMSource(doc);
结果结果=新的StreamResult(系统输出);
TransformerFactory TransformerFactory=TransformerFactory
.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
变换(源、结果);
}
}

谢谢您提供的信息。我需要一些时间来应用它,看看我是否能接受它。你给我的信息是我需要的。谢谢,正是我想要的!