XSD 亲子关系
我有一个我创建的 XSD。事务标头可以是一个或多个事务项。此 XSD 只允许 XML 文件中存在一个事务标头和多个事务项。我正在寻找多个事务标头及其相关的多个事务项。 XSD 中缺少什么才能让我执行此操作?谢谢。
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSpy v2010 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="transaction-item">
<xs:complexType>
<xs:sequence>
<xs:element ref="StartDate"/>
<xs:element ref="EndDate"/>
<xs:element ref="Amount"/>
<xs:element ref="BusinessPartnerID"/>
<xs:element ref="Description"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Production or Import"/>
<xs:enumeration value="Transfer: Release Obligation"/>
<xs:enumeration value="Transfer: Retain Obligation"/>
<xs:enumeration value="Acquire: Without Obligation"/>
<xs:enumeration value="Acquire: With Obligation"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Amount">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
</xs:element>
<xs:element name="Year">
<xs:simpleType>
<xs:restriction base="xs:short"/>
</xs:simpleType>
</xs:element>
<xs:element name="TransactionHeader">
<xs:complexType>
<xs:sequence>
<xs:element ref="Quarter"/>
<xs:element ref="Year"/>
<xs:element ref="FuelPathwayCode"/>
<xs:element ref="PhysicalPathwayCode"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StartDate">
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
</xs:element>
<xs:element name="Quarter">
<xs:simpleType>
<xs:restriction base="xs:byte"/>
</xs:simpleType>
</xs:element>
<xs:element name="PhysicalPathwayCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PP001"/>
<xs:enumeration value="PP002"/>
<xs:enumeration value="PP003"/>
<xs:enumeration value="PP004"/>
<xs:enumeration value="PP005"/>
<xs:enumeration value="PP006"/>
<xs:enumeration value="PP007"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LCFS-report">
<xs:complexType>
<xs:sequence>
<xs:element ref="TransactionHeader"/>
<xs:element ref="transaction-item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="total-sum" use="required">
<xs:simpleType>
<xs:restriction base="xs:byte"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="detailed" type="xs:boolean" use="required"/>
<xs:attribute name="currency" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="USD"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="FuelPathwayCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CARBOB001"/>
<xs:enumeration value="CARBOB002-HIGH"/>
<xs:enumeration value="CARBOB002-INC"/>
<xs:enumeration value="Ethanol001"/>
<xs:enumeration value="Ethanol002"/>
<xs:enumeration value="Ethanol003"/>
<xs:enumeration value="Ethanol004"/>
<xs:enumeration value="Ethanol005"/>
<xs:enumeration value="Ethanol006"/>
<xs:enumeration value="Ethanol007"/>
<xs:enumeration value="Ethanol008"/>
<xs:enumeration value="Ethanol009"/>
<xs:enumeration value="Ethanol0010"/>
<xs:enumeration value="Ethanol0012"/>
<xs:enumeration value="Fossil CNG001"/>
<xs:enumeration value="Fossil CNG002"/>
<xs:enumeration value="Biogas CNG001"/>
<xs:enumeration value="Electricity001_30"/>
<xs:enumeration value="Electricity002_27"/>
<xs:enumeration value="ULSD-CA Diesel Fuel"/>
<xs:enumeration value="Compressed Hydrogen001"/>
<xs:enumeration value="Liquid Hydrogen001"/>
<xs:enumeration value="Compressed Hydrogen002"/>
<xs:enumeration value="Compressed Hydrogen003"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EndDate">
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
</xs:element>
<xs:element name="Description">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="BusinessPartnerID">
<xs:simpleType>
<xs:restriction base="xs:short"/>
</xs:simpleType>
</xs:element>
</xs:schema>
I have an XSD that I created. A Transaction Header can one or more Transaction-Items. This XSD will only allow ONE Transaction Header and multiple Transaction-Items in an XML file. I am looking for MULTIPLE Transaction Headers with it's related multiple Transaction-Items. What is missing in the XSD to allow me to do this? Thanks.
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSpy v2010 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="transaction-item">
<xs:complexType>
<xs:sequence>
<xs:element ref="StartDate"/>
<xs:element ref="EndDate"/>
<xs:element ref="Amount"/>
<xs:element ref="BusinessPartnerID"/>
<xs:element ref="Description"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Production or Import"/>
<xs:enumeration value="Transfer: Release Obligation"/>
<xs:enumeration value="Transfer: Retain Obligation"/>
<xs:enumeration value="Acquire: Without Obligation"/>
<xs:enumeration value="Acquire: With Obligation"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Amount">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
</xs:element>
<xs:element name="Year">
<xs:simpleType>
<xs:restriction base="xs:short"/>
</xs:simpleType>
</xs:element>
<xs:element name="TransactionHeader">
<xs:complexType>
<xs:sequence>
<xs:element ref="Quarter"/>
<xs:element ref="Year"/>
<xs:element ref="FuelPathwayCode"/>
<xs:element ref="PhysicalPathwayCode"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StartDate">
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
</xs:element>
<xs:element name="Quarter">
<xs:simpleType>
<xs:restriction base="xs:byte"/>
</xs:simpleType>
</xs:element>
<xs:element name="PhysicalPathwayCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="PP001"/>
<xs:enumeration value="PP002"/>
<xs:enumeration value="PP003"/>
<xs:enumeration value="PP004"/>
<xs:enumeration value="PP005"/>
<xs:enumeration value="PP006"/>
<xs:enumeration value="PP007"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LCFS-report">
<xs:complexType>
<xs:sequence>
<xs:element ref="TransactionHeader"/>
<xs:element ref="transaction-item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="total-sum" use="required">
<xs:simpleType>
<xs:restriction base="xs:byte"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="detailed" type="xs:boolean" use="required"/>
<xs:attribute name="currency" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="USD"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="FuelPathwayCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CARBOB001"/>
<xs:enumeration value="CARBOB002-HIGH"/>
<xs:enumeration value="CARBOB002-INC"/>
<xs:enumeration value="Ethanol001"/>
<xs:enumeration value="Ethanol002"/>
<xs:enumeration value="Ethanol003"/>
<xs:enumeration value="Ethanol004"/>
<xs:enumeration value="Ethanol005"/>
<xs:enumeration value="Ethanol006"/>
<xs:enumeration value="Ethanol007"/>
<xs:enumeration value="Ethanol008"/>
<xs:enumeration value="Ethanol009"/>
<xs:enumeration value="Ethanol0010"/>
<xs:enumeration value="Ethanol0012"/>
<xs:enumeration value="Fossil CNG001"/>
<xs:enumeration value="Fossil CNG002"/>
<xs:enumeration value="Biogas CNG001"/>
<xs:enumeration value="Electricity001_30"/>
<xs:enumeration value="Electricity002_27"/>
<xs:enumeration value="ULSD-CA Diesel Fuel"/>
<xs:enumeration value="Compressed Hydrogen001"/>
<xs:enumeration value="Liquid Hydrogen001"/>
<xs:enumeration value="Compressed Hydrogen002"/>
<xs:enumeration value="Compressed Hydrogen003"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EndDate">
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
</xs:element>
<xs:element name="Description">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="BusinessPartnerID">
<xs:simpleType>
<xs:restriction base="xs:short"/>
</xs:simpleType>
</xs:element>
</xs:schema>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,我会将您的 TransactionHeader 转换为单独的类型:
然后您可以定义一个复杂类型的新元素,它可以包含任意数量的事务标头:
默认情况下,在 XML 架构中,
minOccurs
和maxOccurs 都设置为 1 - 但在序列中,您可以将该数字更改为您喜欢的任何值 - 包括 maxOccurs 的“无界”。
马克
First, I would convert your TransactionHeader to a separate type:
Then you can define a new element of complex type that can contain any number of transaction headers:
By default, in XML Schema,
minOccurs
andmaxOccurs
both are set to 1 - but in a sequence, you can change that number to anything you like - including the "unbounded" for maxOccurs.Marc