2016-07-22 11 views
1

私は、テストフレームワーク用のスキーマを作成して、1つの属性と1つの要素が一緒になって1つの一意のペアを形成することを検証しました。私はこれを少し説明すると、XMLセグメントの例を示した後で少し説明します。xsdの例:複数の連結フィールドを持つユニーク?

<Test name="testName" dll="testDLL" active="true" > 
    <model cad_sys="targetSystem" dir="directory"> 
     <name>modelName</name> 
    </model> 
    </Test> 

このシナリオでは、私たちが調べたいと思う2つの項目は、testNameとmodelNameです。

  • ファインあるテスト名= "Test1を"、モデル名= "モデル2" は - - ファインある
  • テスト名= "理想的には、ここで

    • テスト名= "Test1を"、モデル名= "MODEL1は、" テストケースの流れですTEST2" 、モデル名は= 『MODEL1が』 - ファインある
    • テスト名= 『Test1を』、モデル名= 『MODEL1』 - 今、重複

    としてフラグを立てるだろう、私はこれで遊んで試してみたと私が知らなかったスキーマについてかなり学んだが、私は来るこの部分をどのように解決するかについて少し困惑しました。

    ご指導いただいている方は、大変感謝しています。

  • +0

    'Test/model/name'を連結した' Test/@ name'はユニークでなければならない、あるいは数字の接尾辞が一致しないと言っていますか? – kjhughes

    +0

    @kjhughes - あなたは正しいです。 Test/model/nameを連結したTest/@ nameは一意でなければなりません。私たちのフレームワークがテストを報告する方法は、ファイル名として連結された2つを使用することです。いくつかの人がテスト/モデルの命名に注意を払っていないので、結果を上書きしていることがわかりました。スキーマを導入することに決めました。混乱の謝罪 – Roy

    答えて

    1

    あなたはユニークな組み合わせであることを彼らの連結を制約するxs:uniqueと複数xs:fieldsとを使用することができます。

    <xs:unique name="testNameModelNameUnique"> 
         <xs:selector xpath="Test"/> 
         <xs:field xpath="@name"/> 
         <xs:field xpath="model/name"/> 
        </xs:unique> 
    

    ここxs:uniqueあなたのXMLを検証して、制約を施行ますXSDで:

    <?xml version="1.0" encoding="UTF-8"?> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
          elementFormDefault="qualified"> 
        <xs:element name="Tests"> 
        <xs:complexType> 
         <xs:sequence> 
         <xs:element ref="Test" maxOccurs="unbounded"/> 
         </xs:sequence> 
        </xs:complexType> 
        <xs:unique name="testNameModelNameUnique"> 
         <xs:selector xpath="Test"/> 
         <xs:field xpath="@name"/> 
         <xs:field xpath="model/name"/> 
        </xs:unique> 
        </xs:element> 
        <xs:element name="Test"> 
        <xs:complexType> 
         <xs:sequence> 
         <xs:element name="model"> 
          <xs:complexType> 
          <xs:sequence> 
           <xs:element name="name" type="xs:string"/> 
          </xs:sequence> 
          <xs:attribute name="cad_sys" type="xs:string"/> 
          <xs:attribute name="dir" type="xs:string"/> 
          </xs:complexType> 
         </xs:element> 
         </xs:sequence> 
         <xs:attribute name="active" type="xs:boolean"/> 
         <xs:attribute name="dll" type="xs:string"/> 
         <xs:attribute name="name" use="required" type="xs:string"/> 
        </xs:complexType> 
        </xs:element> 
    </xs:schema> 
    
    関連する問題