B booboo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-13 #1 我要在程序中生成一个XML文件,其中使用了DTD,我用的是微软的msxml.dll,请问 如何生成DTD部分?
Y yysun Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-13 #2 DTD 有两种方法和 XML 关联起来 1.内部 DTD,就是把 DTD 放在 XML 中,例如 <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 2.外部 DTD,即把 DTD 放在一个文件中,在 XML 指明 DTD 的文件名,例如: <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 以上例子摘自 xml101.com
DTD 有两种方法和 XML 关联起来 1.内部 DTD,就是把 DTD 放在 XML 中,例如 <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 2.外部 DTD,即把 DTD 放在一个文件中,在 XML 指明 DTD 的文件名,例如: <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 以上例子摘自 xml101.com
B booboo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-13 #3 我想问的是如何用程序生成DTD,就像生成一个元素可以这样写: root:=XMLDOC.createElement('Root'); XMLDOC.AppendChild(root); 那么DTD应该怎样生成呢?
我想问的是如何用程序生成DTD,就像生成一个元素可以这样写: root:=XMLDOC.createElement('Root'); XMLDOC.AppendChild(root); 那么DTD应该怎样生成呢?
T tuti Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-24 #4 DTD和XML就是一堆字符串,按照XML规则拼接一下字符串, 最后一起load一下就可以了.
B booboo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-24 #5 MSXML的doctype是只读的.我想能不能像用createElement似的来创建DTD声明
D djjsl Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-24 #6 可不可以考虑用Schema,这样就可以采用 root:=XMLDOC.createElement('Root'); XMLDOC.AppendChild(root); 的方式,而且我认为Schema比dtd的可操作性要强。
可不可以考虑用Schema,这样就可以采用 root:=XMLDOC.createElement('Root'); XMLDOC.AppendChild(root); 的方式,而且我认为Schema比dtd的可操作性要强。
B booboo Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-24 #7 djjsl兄,你写的代码只生成了一个根节点,那么如何把schema加上去呢?
D djjsl Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-25 #8 因为schema也是xml文件,所以完全可以象生成xml文件的方式 生成schema。
Y yysun Unregistered / Unconfirmed GUEST, unregistred user! 2001-05-31 #10 当然不用DTD改用schema是个变通的方法,用Msxml2.XMLSchemaCache对象. 但是,也许创建DTD说明也是可能的. 先生成个带DTD说明的,有个空的节点文档,然后删了空的根节点,加入您的内容. xmlDoc.loadXML('<?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"><NOTHING/>'); xmlDoc.removeChild(xmlDoc.documentElement); xmlDoc.appendChild(...); 我没有试验过,您可以试验一下.看看行不行.
当然不用DTD改用schema是个变通的方法,用Msxml2.XMLSchemaCache对象. 但是,也许创建DTD说明也是可能的. 先生成个带DTD说明的,有个空的节点文档,然后删了空的根节点,加入您的内容. xmlDoc.loadXML('<?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"><NOTHING/>'); xmlDoc.removeChild(xmlDoc.documentElement); xmlDoc.appendChild(...); 我没有试验过,您可以试验一下.看看行不行.