我无法弄清楚如何将简单的XML和Doctype声明添加到我正在生成的XML文件中。我正在创建和添加节点,但代码似乎并不适合这样做。我的代码如下:
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objDoctype = xmlDoc.createElement("DOCTYPE")
xmlDoc.appendChild objTop
我找到了这个链接:http://www.example-code.com/vbscript/xml_doctype.asp这似乎对我不起作用,因为看起来他们正在将文件编辑为TXT文件。
另外,我需要将此声明添加到我的XML文件的顶部:
<?xml version="1.0" encoding="UTF-8"?>
感谢您的帮助!
我希望在XML文件的顶部看到:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog SYSTEM "shopstyle-catalog.dtd">
谢谢!
答案 0 :(得分:1)
我发现没有简单的方法可以通过XMLDOM / MSXML2 API将doctype声明添加到现有文档(*)。它appears to be impossible(参见&#34;备注&#34;部分)。引用,强调我的:
您无法创建NODE_DOCUMENT类型的节点, NODE_DOCUMENT_TYPE ,NODE_ENTITY或NODE_NOTATION。
但是,这对XSLT来说是一项微不足道的任务。这个微小的转换为您的输入文档添加了XML声明和doctype - 并且它将输入转码为您指定的任何输出编码(我强烈建议将其保留为UTF-8)。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" encoding="UTF-8" method="xml" />
<xsl:output doctype-system="shopstyle-catalog.dtd" />
<xsl:template match="node() | @*">
<xsl:copy><xsl:apply-templates select="node() | @*" /></xsl:copy>
</xsl:template>
</xsl:stylesheet>
输入文档的其余部分将逐字复制。
有无数的例子说明如何将XSL样式表应用于各种语言和环境的XML文档,所以我不打算在这里讨论。
(*)如果您从头开始创建文档 ,有一种方法:您可以使用{{3}而不是尝试以编程方式创建doctype声明。加载已包含想要的doctype声明的骨架XML字符串。