【发布时间】:2019-04-09 17:33:58
【问题描述】:
我有以下 XML:
<ns1:verifySignedDocumentResponse xmlns:ns1="http://signing.ws.comarch.gov">
<verifySignedDocumentReturn xmlns:ns2="http://exception.ws.comarch.gov">Some string content...</verifySignedDocumentReturn>
</ns1:verifySignedDocumentResponse>
在verifySignedDocumentReturn 的情况下,我想知道,定义前缀(xmlns:ns2=...)是否正确,但不 用此前缀限定(ns2:verifySignedDocumentReturn)适当的元素?
w3schools.com gives examples,显示:
- 如果元素有前缀,则必须定义前缀的命名空间。
- 如果使用默认命名空间,则不应为元素添加前缀。
但在我的示例中,没有默认命名空间。所以,我希望verifySignedDocumentReturn 以ns2 为前缀。
我从实际服务中得到了这个 XML-sn-p,所以我想知道:它是否正确有效?还是只是服务创造者的粗心大意?我问,因为我是 XML/XSD 的新手。
我尝试使用不同的在线生成器从这个 XML 生成 XSD,但生成的架构看起来并不合理。
变体 1(根本不考虑 ns2 命名空间):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://signing.ws.comarch.gov"
xmlns:ns1="http://signing.ws.comarch.gov">
<xs:element name="verifySignedDocumentResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="verifySignedDocumentReturn" form="unqualified"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
变体 2:
schema0.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns1="http://signing.ws.comarch.gov"
xmlns:ns2="http://exception.ws.comarch.gov"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://signing.ws.comarch.gov"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="schema1.xsd" />
<xs:element name="verifySignedDocumentResponse">
<xs:complexType>
<xs:sequence>
<xs:element ref="verifySignedDocumentReturn" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
schema1.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="verifySignedDocumentReturn" type="xs:string" />
</xs:schema>
【问题讨论】:
标签: xml xsd xsd-validation