是否有程序或脚本通过基于DTD模式的表单接收用户输入,从而从DTD模式生成XML模型(免费)?

是否有程序或脚本通过基于DTD模式的表单接收用户输入,从而从DTD模式生成XML模型(免费)?,xml,xsd,dtd,Xml,Xsd,Dtd,我想知道是否有一个程序可以读取DTD规范,使用规范创建表单或控制台提示,使用表单/提示获取用户输入的数据,然后根据输入的数据编写XML文档 有没有这样的计划 例如,想象一下: [开始想象] 我们有以下DTD文件来定义XML文档的结构: <!DOCTYPE cd_collection [ <!ELEMENT cd_collection (album+) > <!ELEMENT album (disc+) > <!ATTLIST album tit

我想知道是否有一个程序可以读取DTD规范,使用规范创建表单或控制台提示,使用表单/提示获取用户输入的数据,然后根据输入的数据编写XML文档

有没有这样的计划

例如,想象一下:

[开始想象]

我们有以下DTD文件来定义XML文档的结构:

<!DOCTYPE cd_collection [
<!ELEMENT cd_collection (album+) >
    <!ELEMENT album (disc+) >
    <!ATTLIST album title CDATA #REQUIRED >
    <!ATTLIST album artist CDATA #REQUIRED >
    <!ATTLIST album label CDATA #REQUIRED >
        <!ELEMENT disc (track*) >
            <!ELEMENT track EMPTY >
            <!ATTLIST track title CDATA #REQUIRED >
            <!ATTLIST track length CDATA #IMPLIED >
            <!ATTLIST track featuring CDATA #IMPLIED >
]>
因此,您可以看到,基于DTD,程序请求创建XML文档所需的所有数据。该计划遵循一种模式:

  • 它从树的顶部开始(用户应该在他的 想象,在这种情况下的CD收集)和旅行下来的树 以预定的方式
  • 标记为“+”的元素至少需要一次,标记为 零次或多次需要“*”,带“?”的元素为 要求零次或一次,不带此类标签的元素 只需要一次。为了本说明的目的,我将 将这些标签称为“数量标签”
  • 当程序第一次到达X级元素时 在它到达第一根树枝末端的路上,它做了一个 四件事取决于上述标签:如果元素 标签为“+”或无,则假定元素为 必需,然后继续获取所述元素的属性数据 如果没有属性值,则移动到下一个元素 提示。如果元素的标签为“*”或“?”,则程序 询问用户是否存在这样的元素。如果是,那么程序 创建元素并在必要时提示输入属性值, 在继续之前。如果否,则程序跳转到下一种类型 元素位于级别X(如果有),否则将向上移动树以继续 预订。如果X级别的元素是包含 #CDATA或#PCDATA(etc),然后程序提示输入此类数据,或 如有必要,将元素保留为空。基本上,元素和 绝对数据点按预定顺序创建
  • 当程序跳回到树上某个分支的根时 程序再次分析数量标签。如果根元素 在X-1级别,标签为“+”或“*”,程序会询问 这些元素存在(将被输入、记录、创建等)。这 是程序发现要遍历的分支的机制 按预定顺序。处于X-1级的元素是X级元素的根 不检查包含“?”标签或不包含任何内容的,因为它们可以 最多只存在一个数量,因此它们的存在(或 当程序向下遍历时,已确定不存在 树(远离根),如前一步所述
程序继续这样做(根据需要应用更多的DTD规则,我可能错过了这些规则),直到它最终返回到根元素(本例中是cd_集合),此时程序有足够的信息来编写包含所有获取的数据的XML文件

[/结束想象]

在那个假想的场景中,示例是一个命令行程序。然而,它也可以是一个图形化的web界面。例如,不要像这样逐段提示输入数据:

What is the title attribute of album 2? Live From Mars [enter]
What is the artist attribute of album 2? Ben Harper [enter]
What is the label attribute of album 2? Virgin Records [enter]
album 2:

    title:  ____Live From Mars____
    artist: ____Ben Harper _______
    label:  ____Virgin Records ___

                    [submit button]
它可以通过如下HTML格式获得:

What is the title attribute of album 2? Live From Mars [enter]
What is the artist attribute of album 2? Ben Harper [enter]
What is the label attribute of album 2? Virgin Records [enter]
album 2:

    title:  ____Live From Mars____
    artist: ____Ben Harper _______
    label:  ____Virgin Records ___

                    [submit button]
是否存在此类计划(或类似计划),最好是免费的?如果是这样的话,它叫什么名字?我在哪里可以找到它?

您应该查看。您可以使用XMLSpy处理XML和DTD。您可以使用StyleVision创建表单并输出XML数据


祝你好运

@trusktr:在webspherestudio中有一个从DTD生成HTML表单的选项。看

更新以提供更多信息:

WebSphereStudio更名为IBMRationalApplicationDeveloper,您可以从下载试用版。此IDE基于eclipse工作台。下载前请务必检查系统要求

一旦安装,它就会有很多XML工具/编辑器。根据您的需要,您只需要使用DTD编辑器创建一个DTD,方法是进入以下菜单:文件>新建>其他>XML>DTD
创建DTD后,单击DTD>生成HTML表单

Symfony管理生成器将为您创建功能正常的web表单(带有验证)

您可以使用DTD解析器和XML-to-RDMS将DTD转换为SQL模式(下面的链接)

然后,一旦有了SQL模式,就可以将该模式插入MySQL。然后,您可以使用symfony-pake任务从现有MySQL数据库构建schema.xml(或schema.yml)文件:

/symfony推进:构建模式

一旦您有了一个有效的schema.yml(或schema.xml),您最终可以通过运行以下命令为数据库构建web表单:

/symfony推进:生成管理员(上面第一个链接中的完整详细信息)

建议使用XSD而不是DTD,但我理解您的情况。此外,XMLSpy对于任何严肃或重复使用XSD、XML或DTD的工作都是非常棒的


希望这有帮助……

我可以提出其他建议:创建XSD而不是DTD,使用LinqToXSD生成类,然后使用WPF PowerToys(来自Karl Shiffletts网站)在WPF中创建表单/窗口。谢谢,但我在学校上的是XML课,我们使用的是XML和DTD。heheI必须检查一下,尽管kubal!如果这是一项学校作业,那么任务是找到一个免费/开源的解决方案来完成吗?或者,您是否需要应用特定的技术来从dtd转换到表单?仅供参考:StyleVision不是免费的,但可以在Hanks pmartin。。。Altova看起来可能是一个解决方案。如果可能的话,我想找一个免费的解决方案。我还为我的问题添加了更多细节,见上文!嗯。。。。我想知道downloa要试用哪种产品