特定の xsd ファイルと、このファイルの特定の例があります。xsd はhttp://www.forum-datenaustausch.ch/hospitalinvoicerequest_400.xsdと非常に似ていますが、ルートの下に 1 つの要素が追加されています。
問題は、指定された xml をスキーマに対して検証した場合 (moxy を JAXBCOntextFactory として使用)、次のエラーが発生したことです。
enterCaused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 221; cvc-elt.1: Cannot find the declaration of element 'invoice:request'.
Invoice:request は、xml が開始するルート要素です。
<invoice:request role="production" xmlns:invoice="http://www.medidata.ch/QO/XSD" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.medidata.ch/QO/XSD QO_MDInvoiceRequest_400.xsd">
オンラインまたはEclipse(右クリックで検証)でスキーマに対してxmlを検証すると、すべて正常に動作します。名前空間を
xmlns:invoice="http://www.medidata.ch/QO/XSD"
に
xmlns:invoice="http://www.xmlData.ch/xmlInvoice/XSD"
エラーは消えますが、要素が追加されたため、別のエラーが発生します。この名前空間宣言では、検証なしではコンテンツを読み取ることさえできません。ルートのゲッターは null を返します。代替宣言 (" http://www.xmlData.ch/xmlInvoice/XSD ") を使用し、検証なしですべて正常に動作します!
では、名前空間宣言の何が問題なのですか?