gpt4 book ai didi

c# - Xsd 架构命名空间

转载 作者:行者123 更新时间:2023-12-04 16:56:05 24 4
gpt4 key购买 nike

请考虑以下 PspShoppingCartServiceRequest.Xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:tns="http://www.example.com"
elementFormDefault="qualified"
targetNamespace="http://www.example.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:common="http://www.example.com/common"
<xs:import namespace= "http://www.example.com/common" schemaLocation="common.xsd" />
<xs:element name="PspShoppingCartServiceRequest" type="tns:PspShoppingCartServiceRequest" />
<xs:complexType name="PspShoppingCartServiceRequest">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="PspRequestHeader" type="common:PspRequestHeader" />
<xs:element minOccurs="1" maxOccurs="1" name="PspShoppingCartServiceRequestBody" type="tns:PspShoppingCartServiceRequestBody" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PspShoppingCartServiceRequestBody">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="PspShoppingCart" type="tns:PspShoppingCart" />
<xs:element minOccurs="1" maxOccurs="1" name="OrderId" type="common:OrderIdType" />
</xs:sequence>
</xs:complexType>
</xs:schema>

通用.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
targetNamespace="http://www.example.com/common"
elementFormDefault="qualified"
xmlns:common="http://www.example.com/common"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="PspRequestHeader">
<xs:all>
<xs:element minOccurs="1" maxOccurs="1" name="MerchantId" type="common:MerchantIdType" />
<xs:element minOccurs="1" maxOccurs="1" name="RequestDatetime" type="common:RequestDateTimeType" />
<xs:element minOccurs="1" maxOccurs="1" name="RequestReferenceNumber" type="common:RequestReferenceNumberType" />
<xs:element minOccurs="1" maxOccurs="1" name="Language" type="common:PspLanguageType" />
</xs:all>
</xs:complexType>
</xs:schema>

我知道 xsds 上有缺失的部分。我没有写所有的元素,因为我们不必看那些部分

我希望我的 PspRequestHeader 必须在命名空间“ http://www.example.com/common”中,但是当我尝试验证即将到来的 xml 时,如果它不包含“PspRequestHeader”元素,XDocument.Validate 类会抛出

The element 'PspShoppingCartServiceRequest' in namespace 'http://www.example.com' has invalid child element 'PspShoppingCartServiceRequestBody' in namespace 'http://www.example.com'. List of possible elements expected: 'PspRequestHeader' in namespace 'http://www.example.com'.



不应该是例子“ http://www.example.com/common”吗?

最佳答案

不,因为 targetNamespace 是 http://www.example.com .

如果输入 xml 丢失 PspRequestHeader ,那么这就是消息将显示的内容。根据声明,它是必需的,因为它有 minOccurs=1maxOccurs=1 .

这是因为该元素是一个局部元素声明,它将元素的类型指定为 common:PspRequestHeader .您应该在 Common.xsd 中声明一个全局元素:

<xs:element name="PspRequestHeader" type="common:PspRequestHeaderType" />
<xs:complexType name="PspRequestHeaderType">
<xs:all>
<xs:element minOccurs="1" maxOccurs="1" name="MerchantId" type="common:MerchantIdType" />
<xs:element minOccurs="1" maxOccurs="1" name="RequestDatetime" type="common:RequestDateTimeType" />
<xs:element minOccurs="1" maxOccurs="1" name="RequestReferenceNumber" type="common:RequestReferenceNumberType" />
<xs:element minOccurs="1" maxOccurs="1" name="Language" type="common:PspLanguageType" />
</xs:all>
</xs:complexType>

并引用 PspShoppingCartServiceRequest使用 ref属性:
<xs:element minOccurs="1" maxOccurs="1" ref="common:PspRequestHeader" />

关于c# - Xsd 架构命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30435727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com