2017-12-21 25 views
1

私のxmlファイルにいくつかのxsd体系を定義しようとしています。cvc-complex-type.2.4.a:子要素と属性を持つ複合型

XML構造が

<?xml version="1.0" encoding="UTF-8"?> 
<product name="abc" xmlns="http://example.org/productMetadata.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://example.org/productMetadata.xsd productMetadata.xsd"> 
    <metainf /> 
</product> 

のようなもの(ルートいくつかの定義された属性「名前」とタグといくつかのネストされたタグの例のように「metainf」)である

私のアプローチのxsdルックスを定義しますlike

しかし、私はxsdに対してxmlを検証することができません。

バリデータ(java、web-app、eclipseを使用しました)によっては、次のようなエラーメッセージが表示されます。

要素 'metainf'で始まる無効なコンテンツが見つかりました。 '{metainf}'の1つが必要です。

または

CVC-複雑-type.2.4.a:要素 'metainf' で始まる無効なコンテンツを発見されました。 '{metainf}'の1つが期待されています。 '5'、 '13'。

何人かのヒント、私のxsdまたはxmlで何が問題なのですか。

答えて

2

ただ、そうのように、xsd:schema宣言にelementFormDefault="qualified"を追加します。

フォームこのスキーマのターゲット名前空間で宣言された要素について:elementFormDefault属性のドキュメントを1として

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    targetNamespace="http://example.org/productMetadata.xsd" xmlns="http://example.org/productMetadata.xsd"> 

。値は「修飾」または「非修飾」でなければなりません。デフォルトは「非修飾」です。

  • は「修飾されていない」ターゲット名前空間からの要素が名前空間接頭辞で修飾する必要がないことを示しています。
  • "qualified"は、ターゲット名前空間の要素が名前空間接頭辞で修飾されている必要があることを示します。
+0

すでに存在している重複した質問に対する包括的な回答があります。 – kjhughes

関連する問題