2017-03-02 4 views
1

による検証:あるXMLでcontenctがある場合JavaのXSD:私は次のXSD検証を持っている唯一の必須

SchemaFactory schemaFactory = SchemaFactory 
      .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = schemaFactory.newSchema(new File(xsdPath)); 
validator = schema.newValidator(); 
Source xml = new StreamSource(new ByteArrayInputStream(xml)); 
validator.validate(vastXml); 

がどのように私は唯一の必須フィールド/要素(minOccur>0, use="required")
すなわちによってXMLを検証することができますXSDでは検証が成功するわけではありません。
必須フィールドの1つが欠落している場合にのみ、それは失敗します。

答えて

1

XMLスキーマは、スキーマで定義されていない要素のためのプレースホルダをサポートしていますが、これはminOccurs属性から独立して:あなたは調整することができます

<xs:any processContents="lax"/> 

  • を持つ要素の名前空間a namespace属性:

    <xs:any namespace="##any" processContents="lax"/> 
    <xs:any namespace="##other" processContents="lax"/> 
    <xs:any namespace="##local" processContents="lax"/> 
    <xs:any namespace="##targetNamespace" processContents="lax"/> 
    <xs:any namespace="http://www.example.com" processContents="lax"/> 
    
  • どのように厳格に扱うべきか。あなたの場合、laxは、要素が定義されていなくてもXML文書が妥当性を確認するようにします。しかし、strictは、スキーマ定義が存在することを要求します。 skipは何も受け入れません。

    <xs:any namespace="##any" processContents="lax"/> 
    <xs:any namespace="##any" processContents="strict"/> 
    <xs:any namespace="##any" processContents="skip"/> 
    
+0

Worked、ありがとうございました! –

1

あなたは制約はなく、他のいくつかを確認したい場合は、唯一の方法は、それだけを確認したい制約を含んでいるので、スキーマを変更することです。私は、どのスキーマプロセッサでも、あなたがいくつかの制約をチェックするという点で選択的になることは許されているが、他のものはチェックできないと思う。

関連する問題