如果我的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>
答案 0 :(得分:2)
很难从你的问题中辨别出你在这里遇到的困难。你有什么尝试?您有什么想法但尚未因某种原因尝试过?那是什么原因?
有许多工具可以从XML文档集合中生成文档语法(以DTD,Relax NG模式或XSD模式的形式);搜索“语法归纳”或“语法推理”和“XML”会出现一些工具(在Stack Overflow上,搜索XML Trang
或xml xsd.exe
会产生一些命中),而我相信面向XML的开发环境包含从样本生成模式的功能(通常使用相同的开源工具)并不罕见。然而,这些工具的本质是试图从几个样本推断出一般语法,这意味着任何一个输入文件中的注释都不太可能有趣或重要,足以值得包含在模式中。所以你不太可能找到一个现成的语法推理工具,用一个开关使它将输入中的注释复制到输出中的注释中。
另一方面,您的问题的标题似乎听起来好像您已经知道如何从XML输入生成XSD架构,并且您只是寻求有关如何使XML中的注释可访问的建议到生成架构的进程。在这种情况下,答案是:使用编程语言或XML解析器接口,使您可以访问注释。 XSLT或SAX2是明显的选择。 (另一方面,知道XML的人不太可能知道如何从XML实例集合中生成有用的模式,这对于如何读取XML输入中的注释有任何疑问。所以我猜这不是真的问题。)
您的替代方案包括:
<xsl:template match="comment()"> ... </xsl:template>
模板处理输入中的注释,并在作为输出生成的XSD模式文档中生成xs:documentation
元素。xs:annotation
和xs:documentation
元素再次写出模式文档,其中包含XML输入的注释。