之間有什麼區別(上前綴^ h焦點:, C:一:和默認):進口模式和命名空間
<?xml version="1.0" encoding="UTF-8"?>
<xmlBoo xmlns="http://www.example.org/boo"
xmlns:c="http://www.example.org/customer"
xmlns:a="http://www.example.org/address"
xmlns:h="http://www.example.org/header">
<h:header>
<h:id>101</h:id>
</h:header>
<c:customer>
<c:id>1</c:id>
<c:name>John</c:name>
<a:address>
<a:street>Long street</a:street>
</a:address>
</c:customer>
<someBooSpecificField>Specific data in Boo</someBooSpecificField>
</xmlBoo>
和
<?xml version="1.0" encoding="UTF-8"?>
<xmlBoo xmlns="http://www.example.org/boo"
xmlns:c="http://www.example.org/customer"
xmlns:a="http://www.example.org/address"
xmlns:h="http://www.example.org/header">
<header>
<h:id>101</h:id>
</header>
<customer>
<c:id>1</c:id>
<c:name>John</c:name>
<address>
<a:street>Long street</a:street>
</address>
</customer>
<someBooSpecificField>Specific data in Boo</someBooSpecificField>
</xmlBoo>
我問我原因我已經通過JAXB和marshaller實現了映射,創建了第一個xml。但是當我添加模式驗證時,我得到了異常:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns3:header'. One of '{"http://www.example.org/boo":header}' is expected.
看起來,驗證器期望(基於模式)第二個XML。
哪個前綴應該是元素頭之前? 默認(與命名空間連通[http://www.example.org/boo])或H:(與命名空間連通[http://www.example.org/header])。
我認爲整個元素標題與h完全連接:不僅僅是像第二個例子中的子元素。最佳實踐是什麼,對此的解釋是什麼。
我的XML模式:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:h="http://www.example.org/header"
xmlns:c="http://www.example.org/customer"
targetNamespace="http://www.example.org/boo"
elementFormDefault="qualified">
<xsd:import namespace="http://www.example.org/header" schemaLocation="header.xsd"/>
<xsd:import namespace="http://www.example.org/customer" schemaLocation="customer.xsd"/>
<xsd:element name="xmlBoo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="header" type="h:header"/>
<xsd:element name="customer" type="c:customer"/>
<xsd:element name="someBooSpecificField" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
和EG。 header.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/header"
elementFormDefault="qualified">
<xsd:complexType name="header">
<xsd:sequence>
<xsd:element name="id" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
你是完全正確的,謝謝你。 – Ziletka 2013-04-30 16:16:25
不錯的提示,thx! +1 – JBA 2013-09-24 12:27:29