<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.irs.gov/efile" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.irs.gov/efile"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:element name="Form1120" type="Form1120Type">
<xsd:unique name="uniqueCreditCode">
<xsd:selector xpath="IncomeTaxCredits"/>
<xsd:field xpath="CreditCode"/>
</xsd:unique>
</xsd:element>
<xsd:complexType name="Form1120Type">
<xsd:sequence>
<xsd:element name="CreditAvailable" type="CheckboxType" minOccurs="0"/>
<xsd:element name="IncomeTaxCredits" maxOccurs="10">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="MSOtherIncFrancCreditsType">
<xsd:attribute name="referenceDocumentId" type="IdListType"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
实施例
<IncomeTaxCredits>
<CreditCode>10</CreditCode>
<Amount>100</Amount>
<IncomeTaxCredits>
<IncomeTaxCredits>
<CreditCode>10</CreditCode>
<Amount>100</Amount>
<IncomeTaxCredits>
让我们说MSOtherIncFrancCreditsType包含两个元素 - CreditCode和Amount。 CreditCode 10只能在整个xml文档中使用一次。在示例中,它使用了两次。为什么这基于架构有效?
答案 0 :(得分:0)
我认为你应该使用带前缀的命名空间。改变:
<xsd:schema xmlns="http://www.irs.gov/efile" ...>
为:
<xsd:schema xmlns:p="http://www.irs.gov/efile" ...>
然后在xpath中使用此前缀,如下所示:
<xsd:element name="Form1120" type="Form1120Type">
<xsd:unique name="uniqueCreditCode">
<xsd:selector xpath="p:IncomeTaxCredits"/>
<xsd:field xpath="p:CreditCode"/>
</xsd:unique>
</xsd:element>
您的完整xsd应如下所示:
<xsd:schema xmlns:p="http://www.irs.gov/efile" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.irs.gov/efile"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:element name="Form1120" type="p:Form1120Type">
<xsd:unique name="uniqueCreditCode">
<xsd:selector xpath="p:IncomeTaxCredits"/>
<xsd:field xpath="p:CreditCode"/>
</xsd:unique>
</xsd:element>
<xsd:complexType name="Form1120Type">
<xsd:sequence>
<xsd:element name="CreditAvailable" type="p:CheckboxType" minOccurs="0"/>
<xsd:element name="IncomeTaxCredits" maxOccurs="10">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="p:MSOtherIncFrancCreditsType">
<xsd:attribute name="referenceDocumentId" type="p:IdListType"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>