我们正在创建我们希望与以下xsd兼容的xml文件:http://www.topografix.com/gpx/1/1/gpx.xsd此xsd支持'...通过在此添加您自己的元素进行扩展...',请参阅extensionsType,我有为方便起见,下面复制了。
1)我不明白注释和文档是否是符合xml的文字元素名称。我相信他们不是,但需要确认。我假设一个兼容的文档在任何[extensions]元素的任何地方都只有任意数量的自定义元素,对吗?
2)为什么下面有两个对注释/文档元素,其中一个在序列中?
<xsd:complexType name="extensionsType">
<xsd:annotation>
<xsd:documentation>
You can add extend GPX by adding your own elements from another schema here.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
You can add extend GPX by adding your own elements from another schema here.
</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:sequence>
</xsd:complexType>
答案 0 :(得分:8)
1)来自XML Schema specification:“注释提供了模式组件的以人机和机器为目标的注释。”架构作者使用xsd:documentation,比如Java或.NET,开发人员使用注释。
注释是XML Schema工件;它们不会出现在XML文档中。是的,您的扩展元素应位于&lt; extensions /&gt ;;除了http://www.topografix.com/GPX/1/1
之外,您可以使用任何名称空间
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1" creator="creator1" xmlns="http://www.topografix.com/GPX/1/1">
<extensions>
<my:element xmlns:my="urn:tempuri-org:some">Hello!</my:element>
</extensions>
</gpx>
2)很难说为什么有两个评论相同;但不同的是,一个文档是复杂类型,另一个是xsd:any元素。我个人会使用不同的注释,首先解释复杂类型的含义,第二个就是如图所示。