XMLProlog之前的JavaDOMAPI处理检查和doctype
我正在用JAVA开发DOM API,我有一个问题,如何在XML Prolog之后添加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
处理指令
(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不知道该节点类型。