Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
XMLProlog之前的JavaDOMAPI处理检查和doctype_Java_Api_Xslt_Dom_Doctype - Fatal编程技术网

XMLProlog之前的JavaDOMAPI处理检查和doctype

XMLProlog之前的JavaDOMAPI处理检查和doctype,java,api,xslt,dom,doctype,Java,Api,Xslt,Dom,Doctype,我正在用JAVA开发DOM API,我有一个问题,如何在XML Prolog之后添加处理指令(XSLT样式表)和DOCTYPE(文档类型) 请每一个换一行 例如: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE FICHES SYSTEM "docform.dtd"> <?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 创建文档时需要创建DOCTY

我正在用JAVA开发DOM API,我有一个问题,如何在XML Prolog之后添加
处理指令
(XSLT样式表)和
DOCTYPE
(文档类型) 请每一个换一行

例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE FICHES SYSTEM "docform.dtd">
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

创建文档时需要创建DOCTYPE,请参见在实现中定义方法
createDocumentType
以创建DOCTYPE,以及方法
createDocument
以DOCTYPE作为一个参数创建文档

因此你需要

DocumentType docType = implementation.createDocumentType("FICHES", null, "docform.dtd");
Document doc = implementation.createDocument(null, "FICHES", docType);
这样,您现在就拥有了一个DOM文档
doc
,其中包含一个DOCTYPE节点和一个名为
FICHES
的根元素,然后您可以创建并插入处理指令:

doc.insertBefore(doc.createProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"stylesheet.xsl\""), doc.getDocumentElement());

谢谢Martin,但是在测试DocumentType不起作用之后,根本没有doctype声明。对于处理不可测性,它是有效的,但它与XML Prolog添加在同一行中。我没有看到新行的要求,这可能很难实现,因为我认为DOM API不允许在根元素之前插入空格进行格式化。至于DOCTYPE,如何检查根本没有DOCTYPE?我认为您需要使用LSSerializer来编写DOM文档,使用默认转换器可能不会输出任何DOCTYPE,因为XSLT不知道该节点类型。