我正在编写一个模式,我想不出如何表示这个xml片段:
<ActionTaken>
<Description partID="H1" sequenceNumber="01">i did this</Description>
<Description partID="H1" sequenceNumber="02">and then some more stuff.</Description>
</ActionTaken>
我最初创作的是:
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99" />
</xs:sequence>
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:complexType>
</xs:element>
但这是错误的,因为属性应用于ActionTaken
元素,而不是Description
元素。
注意:是否有 ANY 方法在元素之前声明属性?毕竟,属性确实来自之前元素!
所以我想弄清楚如何将属性推到Description
元素上:
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99" />
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:sequence>
</xs:complexType>
</xs:element>
这不起作用,因为attribute
中没有sequence
。我试过了:
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99" >
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
但这不起作用,因为他知道谁。
我可以随意尝试s h 凝灰岩;或者我可以得到真正的答案。
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99" >
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DescriptionOfSuspiciousActivity">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99">
<xs:complexType>
<!--Description of Suspicious Activity (Part G) attributes-->
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="String400" minOccurs="1" maxOccurs="99" >
<xs:complexType>
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
骆驼:委员会设计的一匹马
XSD:由委员会设计
答案 0 :(得分:3)
我可以随意尝试s
h凝灰岩;或者我可以得到真正的答案。
我建议您查看W3Schools XSD tutorial。
您要做的是定义元素中定义为复杂类型的属性:
<xs:element name="ActionTaken">
<xs:complexType>
<xs:sequence>
<xs:element name="Description"
type="DescriptionString400" minOccurs="1" maxOccurs="99"
/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="DescriptionString400">
<xs:simpleContent>
<xs:extension base="String400">
<xs:attribute name="partID" type="STReportTypeEnum" />
<xs:attribute name="partSequenceNumber" type="NumericTwoRJZ" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>