2016-06-27 3 views
1

にネストされた子:XML Schemaの私は、このXML構造のXMLスキーマを記述しようとしている任意の要素

<castle> 
    <parameters> 
     <firstParameter>text</firstParameter> 
     <secondParameter> 
      <list> 
       <item>a</item> 
       <item>b</item> 
       <item>c</item> 
      </list> 
     </secondParameter> 
     <thirdParameter> 
      <array> 
       <item>a</item> 
       <item>b</item> 
       <item>c</item> 
      </array> 
     </thirdParameter> 
     <fourthParameter> 
      <parameters> 
       <firstParameter>text</firstParameter> 
       <secondParameter> 
        <list> 
         <item>a</item> 
         <item>b</item> 
         <item>c</item> 
        </list> 
       </secondParameter> 
      </parameters> 
     </fourthParameter> 
    </parameters> 
</castle> 

私は任意の名前を持つ要素を指定する方法を知られていません。私の実際のXSDは次のようになります:

しかし、ネストされたパラメータレベルで検証はスキップされます。もっと具体的に書く方法を知っていますか?

答えて

0

processContents="skip"xsd:anyを使用して検証をスキップしました。あなたの他のコントロールポイントは が定義されている場合は使用されるが、定義する必要はありませんする必要があり、その要素の宣言を示すために、lax

  • 設定processContentsだろう。
  • processContentsstrictを設定して、要素 の宣言を使用する必要があり、定義する必要があることを示します。
  • XSD 1.1を使用して、xsd:any要素に対してアサーションを作成します。

パラメータで許可されている要素を修正する場合は、名前を制限またはパラメータ化することで、より制限が大きくなります。

+0

ありがとう、私は 'processContents'の動作を知っています。ワイルドカード名で要素を指定する方法は、定義された要素名(list | array | dictionary | parameters)または単純な文字列を含んでいます。 – trejjam

+0

私は本当にXMLを検証する必要はありませんが、Visual StudioはこのXSDをintelliSenseの目的に使用します。 – trejjam

+0

XMLを検証する必要はないかもしれませんが、この答えで伝えようとしている 'xsd:any'と一緒に課せられる制約についてはXSDの規則を守る必要があります。議論された条項以外の構造をさらに指定する必要がある場合は、コンテンツモデルをより詳細に制御するために 'xsd:any'を使わないようにする必要があります。 – kjhughes

関連する問題