我的XSD中有这个(摘录):
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="int1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="baseStructMember">
<xs:attribute name="min" type="xs:byte" use="optional" />
<xs:attribute name="max" type="xs:byte" use="optional" />
<xs:attribute name="step" type="xs:byte" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
*** Description of the step goes here. ***
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="int2">
<xs:complexType>
<xs:complexContent>
<xs:extension base="baseStructMember">
<xs:attribute name="min" type="xs:short" use="optional" />
<xs:attribute name="max" type="xs:short" use="optional" />
<xs:attribute name="step" type="xs:short" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="int4">
<xs:complexType>
<xs:complexContent>
<xs:extension base="baseStructMember">
<xs:attribute name="min" type="xs:int" use="optional" />
<xs:attribute name="max" type="xs:int" use="optional" />
<xs:attribute name="step" type="xs:int" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
我想为step
属性添加注释。如您所见,我将其添加到int1
中。所有step
属性(也在int2
,int4
...中)具有不同的类型,但含义相同,因此注释应相同。
我可以通过所有step
属性共享一个注释吗?
还是在外部定义step
以及注释并重用(例如与attributeGroup
一样),但是允许使用不同的属性类型?
答案 0 :(得分:0)
如lexicore所建议,这对于实体是可能的。这是任何XML文档的功能,而不仅仅是XSD。
实体需要在DTD部分中定义。就我而言,我的XSD文件的开头看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xs:schema [
<!ENTITY Doc-Step "*** Description of the step goes here. ***">
]>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ...
从现在开始,Doc-Step
可以&Doc-Step;
的形式在文档中的任何位置使用,并且它将由XML解析器替换为适当的字符串:
<xs:attribute name="step" type="xs:byte" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">&Doc-Step;</xs:documentation>
</xs:annotation>
</xs:attribute>
由于@Doc-Step;
可以在多个地方使用,因此可以重复使用文档。另一个不错的功能是,它允许将所有文档字符串集中在一个地方-非常便于维护。