2017-05-22 66 views
1

以下はxsdです。XMLスキーマ検証エラー - 要素の宣言がありません

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:dmb="http://hmh.mycompany.com/schema/hmh/Message" 
    targetNamespace="http://hmh.mycompany.com/schema/hmh/Message" 
    elementFormDefault="qualified" attributeFormDefault="unqualified" 
    version="1.0"> 

    <xsd:complexType name="Message"> 
     <xsd:annotation> 
      <xsd:documentation>This represents the message 
      </xsd:documentation> 
     </xsd:annotation> 
     <xsd:sequence> 
      <xsd:element name="provider" type="xsd:string" /> 
      <xsd:element name="product" type="xsd:string" /> 
      <xsd:element name="status" type="xsd:string" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:schema> 

次に、xmlファイルを示します。

<?xml version="1.0" encoding="UTF-8"?> 
<Message xmlns="http://hmh.mycompany.com/schema/hmh/Message"> 
    <provider>PRODUCT</provider> 
    <product></product> 
    <status></status> 
</Message> 

試みがhttp://www.utilities-online.info/xsdvalidationを使用して、それを検証するために、私はエラー

2号線、62以下だ:org.xml.sax.SAXParseException。 lineNumber:2; columnNumber:62; cvc-elt.1:要素 'Message'の宣言が見つかりません。

答えて

1

あなたは非常に近いです。 Messageタイプを定義することに加えて、Messageエレメントも宣言する必要があります。これを行うには、

<xsd:element name="Message" type="dmb:Message"/> 

をXSDに追加します。次に、XMLがXSDに対して有効になります。


あなたはXSDを変更することができない場合は、他の二つのオプションがあります。私は、固定から上記 とxsd:include型定義、を示して

  1. Message要素を定義する新しいXSDを書きますXSD。この新しい XSDを使用してXMLを検証します。
  2. xsi:typeをXMLファイルに使用します。 ( How to restrict the value of an XML element using xsi:type in XSD?を参照してください)
+0

残念ながら、私はxsdを変更することはできません。 –

+0

XSDを変更できない場合の2つのオプションを提供するように更新されました。 – kjhughes

+0

そのような迅速な返信のためにありがとうhttp://stackoverflow.com/users/290085/kjhughes。 –

関連する問題