違いは何ですか (接頭辞 h:、c:、a: およびdefaultに焦点を当てます):
<?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 を介してマッピングを実装し、マーシャラーが最初の 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.
バリデーターは (スキーマに基づいて) 2 番目の xml を予期しているようです。
要素ヘッダーの前に置くべきプレフィックスは? デフォルト(名前空間 [http://www.example.org/boo] に接続) またはh: (名前空間 [http://www.example.org/header] に接続)。
2 番目の例のようなサブ要素だけでなく、要素ヘッダー全体が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>
そして例えば。ヘッダー.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>