1

如果我有XML遵循以下模式的文档,我如何XSDs为这些文档生成但将注释转换为注释标签?

<ELEMENT1>

  <!--
  documentation text ....
  -->
  <ELEMENT2>
    <ELEMENT3>ABC</ELEMENT3>
  </ELEMENT2>

  <!--
  documentation text ....
  -->
  <ELEMENT4>
    <ELEMENT5>0534564117</ELEMENT5>
    <ELEMENT6>123456</ELEMENT6>
    <ELEMENT7>090314b4-fc7d-42c5-b382-a5b745671ee32b</ELEMENT7>
  </ELEMENT4>

</ELEMENT1>
4

1 回答 1

2

很难从你的问题中看出你在这里发现了什么困难。你试过什么?您有什么想法但由于某种原因尚未尝试过?那是什么原因?

有许多工具可用于从 XML 文档集合生成文档语法(以 DTD、Relax NG 模式或 XSD 模式的形式);搜索“语法归纳”或“语法推理”和“XML”会出现一些工具(在 Stack Overflow 上,搜索XML Trangxml xsd.exe将产生许多命中),而且我相信面向 XML 的开发环境包含从样本生成模式的功能并不少见(通常在后台使用相同的开源工具)。然而,这些工具的本质是试图从几个样本中推断出一般语法,这意味着任何一个输入文件中的注释都不太可能有趣或重要到值得包含在模式中。因此,您不太可能找到带有开关的现成语法推理工具,以使其将输入中的注释复制到输出中的注释中。

另一方面,您的问题的标题听起来好像您已经知道如何从 XML 输入生成 XSD 模式,并且您只是在寻求有关如何使 XML 中的注释可供该过程访问的建议那就是生成模式。在这种情况下,答案是:使用一种编程语言或 XML 解析器接口,让您可以访问评论。XSLT 或 SAX2 是显而易见的选择。(另一方面,任何对 XML 足够了解以知道如何从 XML 实例集合生成有用模式的人都不太可能对如何读取 XML 输入中的注释有任何疑问。所以我想这不是真的问题。)

您的选择包括:

  • 使用 SAX2 接口(或任何其他公开注释的解析器 API)以您选择的编程语言读取 XML 实例并生成模式。
  • 在 XSLT 中编写模式生成器,并使用<xsl:template match="comment()"> ... </xsl:template>模板来处理输入中的注释并xs:documentation在作为输出生成的 XSD 模式文档中生成元素。
  • 使用现成的模式生成器(例如,Trang)为您的数据生成模式文档,然后编写 XSLT 样式表或 SAX 过滤器以重新读取 XSD 模式文档和您的 XML 输入,提取注释中的注释XML 输入,识别注释相关的声明,并再次写出模式文档,xs:annotationxs:documentation在适当的点插入元素,其中包含来自 XML 输入的注释。
于 2013-01-30T15:15:32.170 回答