[英]Unqualified XML-element with prefixed namespace inside
我有以下 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给出了示例,其中显示:
但是在我的示例中没有默认命名空间。 所以,我希望verifySignedDocumentReturn
以ns2
为前缀。
我从真实服务中得到了这个 XML 片段,所以我想知道:它是否正确有效? 还是只是服务创造者的粗心大意? 我问,因为我是 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 文档中xmlns:ns2="http://exception.ws.comarch.gov"
的声明没有任何作用。 它只是定义了一个从未使用过的别名 ns2。
两个生成的模式看起来都不错。 关于他们的一些注意事项。
尽管第一个模式非常适合单个 XSD,但通常elementFormDefault
设置为qualified
并且在模式内未更改。 在这个模式中, form
被设置为unqualified
的内部元素。 我不是 100% 确定,但我认为使用此模式的验证 XML 解析器会将verifySignedDocumentReturn
视为它在名称空间“ http://signing.ws.comarch.gov ”中。 我认为更改 XSD 文档中间的form
会导致不兼容问题。
第二组模式看起来不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.