l Leonid
on

 

Dear all,

I am validating define.xml 2.0 and getting this issue, "Missing Value Level metadata for QVAL in Dataset <dataset>" for all my SUPPQUAL datasets, and I cannot figure out why. Here's the definition of SUPPAE.QVAL:

<ItemDef OID="SUPPAE.QVAL" Name="QVAL" DataType="text" Length="7" SASFieldName="QVAL">
<Description>
<TranslatedText>Data Value</TranslatedText>
</Description>
<def:ValueListRef ValueListOID="SUPPAE.QNAM"/>
</ItemDef>
 

It does reference the value list with ID "SUPPAE.QNAM". This value list is defined too:

<def:ValueListDef OID="SUPPAE.QNAM">
<ItemRef ItemOID="SUPPAE.QNAM.AEENRF" OrderNumber="1" Mandatory="No" Role="Timing">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEENRF"/>
</ItemRef>
<ItemRef ItemOID="SUPPAE.QNAM.AEACT1" OrderNumber="2" Mandatory="No" Role="Record  Qualifier">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEACT1"/>
</ItemRef>
<ItemRef ItemOID="SUPPAE.QNAM.AEACT3" OrderNumber="3" Mandatory="No" Role="Record  Qualifier">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEACT3"/>
</ItemRef>
<ItemRef ItemOID="SUPPAE.QNAM.AEACT4" OrderNumber="4" Mandatory="No" Role="Record  Qualifier">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEACT4"/>
</ItemRef>
<ItemRef ItemOID="SUPPAE.QNAM.AEACT5" OrderNumber="5" Mandatory="No" Role="Record  Qualifier">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEACT5"/>
</ItemRef>
<ItemRef ItemOID="SUPPAE.QNAM.AEACT6" OrderNumber="6" Mandatory="No" Role="Record  Qualifier">
<def:WhereClauseRef WhereClauseOID="Where.SUPPAE.QNAM.AEACT6"/>
</ItemRef>
</def:ValueListDef>
 

What could be the problem?

Thanks a lot!

Leonid

 

 

 

Forums: Define.xml

d Dmitry
on August 26, 2017

Hi Leonid,

Is it possible that you have an ItemDef element with OID "SUPPAE.QNAM"? If so, I guess that may cause the issue as OID should be unique within MetaDataVersion element.

Although there is no required naming convention for OIDs, the approach used in Define-XML 2.0 specification is a good one and can help to avoid issues. If it was used, the ItemDef OID for QVAL would be "IT.SUPPAE.QVAL" and ValueListDef OID for it would be "VL.SUPPAE.QVAL".

 

 

s Sergiy
on August 28, 2017

Hi Leonid, 

Your sample code is not enough for diagnostics.

While defining Value Level Metadata you need to have 4 diffrent sections.

  • QVAL variable has a reference to ValueList (3) -> (1)
  • Each item in Value List has a reference to WhereClause (1) -> (2)
  • Value Level item is defined by ItemDef element (4)

Here is an example:

(1)
<def:ValueListDef OID="VL.SUPPAE.QVAL">
    <ItemRef ItemOID="IT.SUPPAE.QVAL.SUPPAE.QNAM.AETRTEM" OrderNumber="1" Mandatory="No" MethodOID="MT.AETRTEM">
        <def:WhereClauseRef WhereClauseOID="WC.SUPPAE.QNAM.AETRTEM"/>
    </ItemRef>
    ....    
</def:ValueListDef>

.....

(2)              
<def:WhereClauseDef OID="WC.SUPPAE.QNAM.AETRTEM">
    <RangeCheck SoftHard="Soft" def:ItemOID="IT.SUPPAE.QNAM" Comparator="EQ">
        <CheckValue>AETRTEM</CheckValue>
    </RangeCheck>
</def:WhereClauseDef>

.....         

(3)         
<ItemDef OID="IT.SUPPAE.QVAL" Name="QVAL" DataType="text" Length="60" SASFieldName="QVAL">
    <Description> 
        <TranslatedText xml:lang="en">Data Value</TranslatedText>
    </Description>
    <def:ValueListRef ValueListOID="VL.SUPPAE.QVAL"/>
</ItemDef>

.....

(4)

<ItemDef OID="IT.SUPPAE.QVAL.SUPPAE.QNAM.AETRTEM" Name="SUPPAE.QNAM.AETRTEM" DataType="text" Length="1" SASFieldName="QVAL">
    <CodeListRef CodeListOID="CL.NY"/>
    <def:Origin Type="Derived"/>
</ItemDef>
....

Regards, 

Sergiy

Want a demo?

Let’s Talk.

We're eager to share and ready to listen.

Cookie Policy

Pinnacle 21 uses cookies to make our site easier for you to use. By continuing to use this website, you agree to our use of cookies. For more info visit our Privacy Policy.