web-dev-qa-db-ja.com

XMLスキーマ検証エラー「プレフィックスがバインドされていません」

私はXMLスキーマを初めて使用しますが、基本を理解しようとしています。ここに私のXMLスキーマコード(ファイル名:example1.xsd)があります:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sample="http://www.example" 
targetNamespace="http://www.example.com" 
elementFormDefault="qualified">

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="element1" type="xs:string"/>
      <xs:element name="element2" type="xs:string"/>
      <xs:element name="element3" type="xs:string"/>
      <xs:element name="element4" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema> 

これがXMLドキュメントです。

<?xml version="1.0" encoding="UTF-8"?>

<sample:school xmlns="http://www.example.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="./example1.xsd">

      <element1>hello</element1>
      <element2>hello</element2>
      <element3>hello</element3>
      <element4>hello</element4>

</sample:school>

Xmlファイルを検証しようとすると、netbeansから次のようなエラーが表示されます。要素「sample:school」の接頭辞「sample」はバインドされていません。 [9]

18
iggy2012

XMLでは、次のいずれかが必要です。

[〜#〜] a [〜#〜]sample:からsample:schoolプレフィックスを削除します

または

[〜#〜] b [〜#〜]xmlns="http://www.example.com"xmlns:sample="http://www.example.com"に変更し、sample:プレフィックスを残りの要素(<sample:element1><sample:element2>など)に追加します

20
Daniel Haley

このようなエラーが発生した場合、最も簡単な方法はプレフィックス宣言を追加することです。あなたの場合、スキーマに従って、次の属性をルート要素に追加するだけです:

xmlns:sample="http://www.example.com"

また、これはむしろ XML名前空間 と関連しています。

14
Petru Gardea

それはあなたの質問への直接的な答えではありませんが、自分の問題を解決しようとしてここでつまずいたので、誰かの助けになるかもしれません。

Weblogic 10.3.6から12.2.1.2にアップグレードした後、「プレフィックスns2がバインドされていません」というエラーが表示されました。

上位バージョンのデフォルトのJAXB実装はMoxyであるため、javax.xml.bind.JAXBContextをcom.Sun.xml.bind.v2.ContextFactoryに変更する必要がありました。

weblogic 12.1.3でJAXBContext実装を指定する方法

0
Artemis