2017-03-14 7 views
0

私は多くの話題を調べましたが、まだ助けが必要です。XMLスキーマ - 検証に列挙型でuniqueを使用できますか?

それぞれが特定の値を持つ5つの要素を持つ必要があるXMLを検証する必要があります。彼らは繰り返すことはできません。

XMLスニペット: ...

<logger name="br.com.xxxx" additivity="false"> 
     <level value="info"/> 
     <appender-ref ref="FILE-rolling"/> 
    </logger> 

    <logger name="br.com.web.aq" additivity="false"> 
     <level value="info"/> 
     <appender-ref ref="FILE-rolling"/> 
    </logger> 

    <logger name="br.com.data.connector" additivity="false"> 
     <level value="info"/> 
     <appender-ref ref="FILE-rolling"/> 
    </logger> 

    <!--FACES LOGGER--> 
    <logger name="javax.faces" additivity="false"> 
     <level value="info"/> 
     <appender-ref ref="FILE-rolling"/> 
    </logger> 

    <!--MYFACES LOGGER--> 
    <logger name="org.apache.myfaces" additivity="false"> 
     <level value="info"/> 
     <appender-ref ref="FILE-rolling"/> 
    </logger> 

これまでのところ、ちょうどこのような値の一覧、検証私のxsd:


<xsd:element name="configuration"> 

<xsd:complexType> 
    <xsd:sequence> 
    <xsd:element minOccurs="3" maxOccurs="3" ref="property"/> 
    <xsd:element minOccurs="1" maxOccurs="1" ref="appender"/> 
    <xsd:element minOccurs="5" maxOccurs="5" name="logger"> 

    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element ref="level"/> 
     <xsd:element ref="appender-ref"/> 
    </xsd:sequence> 

    <xsd:attribute name="additivity" type="xsd:string" use="required" fixed="false"/>  

    <xsd:attribute name="name" use="required"> 

     <xsd:simpleType>    
     <xsd:restriction base="xsd:token"> 
      <xsd:enumeration value="br.com.xxxx"/> 
      <xsd:enumeration value="br.com.web.aq"/> 
      <xsd:enumeration value="br.com.connector"/> 
      <xsd:enumeration value="javax.faces"/> 
      <xsd:enumeration value="org.apache.myfaces"/> 
     </xsd:restriction> 
    </xsd:simpleType> 
</xsd:attribute> 

</xsd:complexType> 

<xsd:unique name="uniquity"> 
     <xsd:selector xpath="logger"/> 
     <xsd:field xpath="@name"/> 
</xsd:unique> 

</xsd:element> 

しかし、それは方法を、 XMLには、同じ名前の2つの「ロガー」を持つことができます。

* xsdをユニーク制約で更新しました。この検証作業を行うための何かがありません。

答えて

0

はい、xs:uniqueとxs:enumerationを併用することができます。私はISN」「ロガー要素の親のための要素宣言に追加し、」どの部分でわからないんだけど

<xs:unique name="uniquity"> 
    <xs:selection xpath="logger"/> 
    <xs:field xpath="@name"/> 
</xs:unique> 
+0

:ロガー要素の親のための要素宣言に一意性制約:ちょうどXSを追加しますtクリア。 –

+0

xsdスニペットを更新しました。すべての助けをありがとう。 – fabionicastro

関連する問題