2011-12-22 8 views
0

XMLファイルでは、デフォルトの名前空間でフリーフォーマットを使用したいと思いますが、さまざまな場所で特定の名前空間にあるいくつかの要素を許可する必要があります。私はそれらの要素が検証されただけです。それでは、私がしたいことは、このようなものです:1つの名前空間を除いてフリーフォーマットを定義するXSD

<document xmlns:x="http://myNamespace"> 
    <someElement1> 
    <x:toBeValidated1/> 
    <someElement2> 
     <x:toBeValidated2 someAtt="someValue"> 
     <someMoreStuff/> 
     </x:toBeValidated2> 
    </someElement2> 
    </someElement1> 
</document> 

質問があり、私はこれを検証するためのスキーマを書き込むことができますか?任意の要素を任意の場所に置くことができますが、http://myNamespace名前空間の要素は、スキーマの対応する定義に準拠しています。

答えて

0

ほとんどはとすることができます。ドキュメントのルート要素を定義するスキーマに

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://myNamespace"> 
    <xs:element name="toBeValidated1"> 
     <xs:complexType> 
      <xs:sequence/> 
     </xs:complexType> 
    </xs:element> 

    <xs:element name="toBeValidated2"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/> 
      </xs:sequence> 
      <xs:attribute name="someAtt" type="xs:string"/> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

そしてインポートすること:あなたが検証したいと思うタイプをカバーし、スキーマを定義する必要があります

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:import namespace="http://myNamespace" schemaLocation="other.xsd"/> 
    <xs:element name="document" type="xs:anyType"/> 
</xs:schema> 

私は少なくともルート要素を定義することはできませんが、子要素や属性が許可されるように定義できます。

関連する問題