XSD注释和文档元素,以及如何使用它们

时间:2011-11-18 18:26:40

标签: xsd

我们正在创建我们希望与以下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>

1 个答案:

答案 0 :(得分:8)

1)来自XML Schema specification:“注释提供了模式组件的以人机和机器为目标的注释。”架构作者使用xsd:documentation,比如Java或.NET,开发人员使用注释。

注释是XML Schema工件;它们不会出现在XML文档中。是的,您的扩展元素应位于&lt; extensions /&gt ;;除了http://www.topografix.com/GPX/1/1

之外,您可以使用任何名称空间

Sample XML showing extension elements

<?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元素。我个人会使用不同的注释,首先解释复杂类型的含义,第二个就是如图所示。