我们最近开始通过XML向客户提供数据提取。我们有一个模式(XSD),它定义了这个XML的结构。我想在模式本身中包含元素和属性的文档。我发现的唯一的东西是非常麻烦的“注释”和“文档”标签。
所以你拿一些简单易读的东西:
<xs:element name="TransactionType" type="xs:string" />
结束这个丑陋的混乱:
<xs:element name="TransactionType" type="xs:string">
<xs:annotation>
<xs:documentation>
Type of transaction
</xs:documentation>
</xs:annotation>
</xs:element>
有什么更好的吗?说这样的话:
<xs:element name="TransactionType" type="xs:string" description="Type of transaction" />
PS:我们已将此摘录提供为简单的固定长度文件和CSV。一个客户端请求XML,我们现在有第二个客户端想要使用XML。我被要求提供文件。我们最初为其开发XML版本的第一个客户端只需要一个XSD。因此,我希望只向第二个客户发送一个文档 - 带有描述元素的简单注释的XSD。
答案 0 :(得分:3)
您是否意识到您可以轻松地将XSD(即使使用繁琐的注释和文档标签)转换为相当易读的HTML文档文件?
魔术被称为xs3p,它是一个相当大的XSLT文件,可以将您的XSD(毕竟只是另一个XML)转换为结构良好,非常有用的文档HTML。
它是免费的,它有效 - 很棒! : - )
当然 - 您仍然需要将注释/文档添加到XSD,但它可能是一个比XSD和单独的文档文件更好的解决方案(很可能迟早会不同步... ...)
马克
答案 1 :(得分:1)
不,没有。只有<xs:annotation><xs:documentation>
。
答案 2 :(得分:0)
XSD提供您提供的文档标记。 我同意你的意见,它们很麻烦,使你的文件更大。
不幸的是,这就是我们所拥有的。
答案 3 :(得分:0)
是的,这很麻烦,但遗憾的是它是文档的唯一机制。但是,提供注释标记以满足许多需求。您可以在其中放置计算机处理说明,您可以在其中放置人类可读的文档。
我认为,XSD的设计更有效地将信息传达给计算机程序。例如,如果从模式运行代码生成器,则代码生成器可以在代码自我文档中包含注释元素信息,例如JavaDoc或其他语言的等价物。
此外,注释文档标记可以包含任意长度的文本。它可以包含HTML标记,实际上也包括任意XML。这就是为什么它不是一个属性,而是一个元素。
答案 4 :(得分:0)
我有一个建议 - 你为什么不按照你提出的方式编写模式,即
<xs:element name="TransactionType" type="xs:string" description="Type of transaction" />
并通过XSLT将其转换为
的完整格式<xs:element name="TransactionType" type="xs:string">
<xs:annotation>
<xs:documentation> Type of transaction </xs:documentation>
</xs:annotation>
</xs:element>
您将转换后的XSD发送给客户,在内部使用紧凑版本。