OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

tag message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [tag] Referencing external test assertions


Proposed extra XML Schema types to handle the testAssertionRef:


<xs:complexType name="testAssertionRef_type">
    <xs:sequence>
      <xs:choice>
        <xs:element name="resource" type="resource_type" minOccurs="0"/>
        <xs:element name="taSetId" type="taSetId_type" minOccurs="0"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="lg" type="xs:normalizedString"/>
    <xs:attribute name="name" type="xs:normalizedString"/>
    <xs:anyAttribute namespace="##any" processContents="skip"/>
  </xs:complexType>
  <xs:complexType name="resource_type">
    <xs:sequence>
      <xs:choice>
        <xs:element name="taId" type="taId_type" minOccurs="0"/>
        <xs:element name="taSetId" type="taSetId_type" minOccurs="0"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="lg" type="xs:normalizedString"/>
    <xs:attribute name="url" type="xs:anyURI"/>
    <xs:attribute name="filepath" type="xs:normalizedString"/>
    <xs:attribute name="ref" type="xs:normalizedString"/>
    <xs:attribute name="versionId" type="xs:normalizedString"/>
    <xs:attribute name="revisionId" type="xs:normalizedString"/>
    <xs:attribute name="date" type="xs:dateTime"/>
    <xs:attribute name="dateString" type="xs:normalizedString"/>
    <xs:attribute name="resourceType" type="resourceTypeCode_type"/>
    <xs:attribute name="connection" type="xs:normalizedString"/>
    <xs:attribute name="sql" type="xs:string"/>
    <xs:attribute name="xquery" type="xs:string"/>
    <xs:anyAttribute namespace="##any" processContents="skip"/>
  </xs:complexType>
  <xs:simpleType name="resourceTypeCode_type">
    <xs:union memberTypes="resourceTypeBaseCode_type
resourceTypeCodeExtension_type"/>
  </xs:simpleType>
  <xs:simpleType name="resourceTypeBaseCode_type">
    <xs:restriction base="xs:normalizedString">
      <xs:enumeration value="xmlSchema"/>
      <xs:enumeration value="taml"/>
      <xs:enumeration value="html"/>
      <xs:enumeration value="xhtml"/>
      <xs:enumeration value="docbook"/>
      <xs:enumeration value="xml"/>
      <xs:enumeration value="javadocs"/>
      <xs:enumeration value="predict"/>
      <xs:enumeration value="code"/>
      <xs:enumeration value="rdfs"/>
      <xs:enumeration value="owl"/>
      <xs:enumeration value="office"/>
      <xs:enumeration value="pdf"/>
      <xs:enumeration value="unstructured"/>
      <xs:enumeration value="plainText"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="resourceTypeCodeExtension_type">
    <xs:restriction base="xs:normalizedString">
      <xs:pattern value="ext:\S.*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="taId_type">
    <xs:attribute name="lg" type="xs:normalizedString"/>
    <xs:attribute name="value" type="xs:normalizedString"/>
    <xs:attribute name="lineNumber" type="xs:integer"/>
    <xs:attribute name="lineId" type="xs:normalizedString"/>
    <xs:anyAttribute namespace="##any" processContents="skip"/>
  </xs:complexType>
  <xs:complexType name="taSetId_type">
    <xs:sequence>
      <xs:choice>
        <xs:element name="taId" type="taId_type" minOccurs="0"/>
        <xs:element name="taSetId" type="taSetId_type" minOccurs="0"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="lg" type="xs:normalizedString"/>
    <xs:attribute name="section" type="xs:normalizedString"/>
    <xs:attribute name="value" type="xs:normalizedString"/>
    <xs:anyAttribute namespace="##any" processContents="skip"/>
  </xs:complexType>



Some random sample data

<testAssertionRef name="GA1cNXrZCK0IF3v">
            <resource
               url="http://iDOfKrab/";
               ref="jHZ-FGy4Kki"
               versionId="0.6"
               revisionId="0.61"
               date="2010-10-11T22:24:51"
               resourceType="taml"
               xquery="_7E8cdg5uoan87">
                    <taSetId value="abc">
                        <taSetId value="efg">
                            <taId
                                value="xyz"
                                lineNumber="698"
                                lineId="V-X8gn"/>
                        </taSetId>
                    </taSetId>
            </resource>
    </testAssertionRef>




---
Stephen D Green




2009/9/18 Stephen Green <stephen.green@documentengineeringservices.com>:
> Another attribute to carry database connection information?
> Is there a standard for this, eg DSN, LDAP. I suppose
> LDAP is like a URL but DSN might be a filename. Do we
> need some special database attributes? Of course there
> is the anyAtttribute extension point so custom attributes
> can be added but this doesn't promote interoperability or
> longevity.
> ---
> Stephen D Green
>
>
>
>
> 2009/9/18 Stephen Green <stephen.green@documentengineeringservices.com>:
>> Adding, like Kevin says, metadata to identify a specific
>> version and revision and date plus we may need a codelist
>> of known types of format (so we can automate getting the
>> test assertion if possible):
>>
>>  <testAssertionRef id="...">    <!-- or name="..." -->
>>  <resource url="..." filename=".." fileId="..." sql="..." ref="..."
>> date="..." versionId=".." revisionId="..." type="...">       <!-- all
>> optional -->
>>    <taSetId value="...">
>>      <taSetId value="...">
>>        ...
>>        <taId lineNumber="..." value="..."/>
>>        ...
>>      </taSetId>
>>    </taSetId>
>>  </resource>
>>  </testAssertionRef>
>>
>> and if it is a reference to an internal TA | TASet/TA make
>> 'resource' itself optional
>>
>>  <testAssertionRef>
>>  <taSetId value="...">
>>    <taSetId value="...">
>>        ...
>>      <taId value="..."/>
>>        ...
>>    </taSetId>
>>  </taSetId>
>>  </testAssertionRef>
>>
>> This nested XML design obviates having to define a convention
>> with BNF so we can just provide the XML Schema plus prose
>> (for this at least). If we do want the point-separated notation we
>> can still have the attributes:
>>
>>  <testAssertionRef id="..." url="..." filename=".." fileId="..."
>> sql="..." ref="..." date="..." versionId=".." revisionId="..."
>> type="...">abc.lmn.xyz</testAssertionRef>
>>
>>
>> Not sure how to handle your comment about schemas though, Kevin.
>>
>>
>> ---
>> Stephen D Green
>>
>>
>>
>>
>> 2009/9/18 Stephen Green <stephen.green@documentengineeringservices.com>:
>>> perhaps <testAssertionRef>
>>> should have a name or ID of its own
>>> so that we can declare one in a
>>> TA Set, give it an ID if it didn't have
>>> one, then, like with a catalog, use
>>> this ID to reference it in TA sets
>>> within that TA set, for example, to
>>> avoid repetition.
>>>
>>>  <testAssertionRef id="...">    <!-- or name="..." -->
>>>  <resource url="..." filename=".." fileID="...">
>>>    <taSetId value="..">
>>>      <taSetId value="..">
>>>        <taId lineNumber="..."/>
>>>      </taSetId>
>>>    </taSetId>
>>>  </document>
>>>  </testAssertionRef>
>>>
>>>
>>> ---
>>> Stephen D Green
>>>
>>>
>>>
>>>
>>> 2009/9/18 Stephen Green <stephen.green@documentengineeringservices.com>:
>>>> Another way
>>>>
>>>> <testAssertionRef>
>>>>  <resource url="..." filename=".." fileID="...">
>>>>    <taSetId value="..">
>>>>      <taSetId value="..">
>>>>        <taId>..</taId>
>>>>      </taSetId>
>>>>    </taSetId>
>>>>  </document>
>>>> </testAssertionRef>
>>>>
>>>> This has the advantage of us not needing any BNF, just schema.
>>>>
>>>> Metadata could included as further attributes (there are various
>>>> places to add these - 'resource' or 'testAssertionRef' or 'taSetId'
>>>> or 'taId')
>>>>
>>>> Questions: What happens if the TAs are in a database?
>>>> Does that mean the database has to be REST-enabled
>>>> or equivalent? What if it is a paper document? etc
>>>> Maybe this can be handled with further attributes on 'resource':
>>>>
>>>> <testAssertionRef>
>>>>  <resource url="..." filename=".." fileID="..." sql="..." ref="..." date="...">
>>>>    <taSetId value="..">
>>>>      <taSetId value="..">
>>>>        <taId>..</taId>
>>>>      </taSetId>
>>>>    </taSetId>
>>>>  </document>
>>>> </testAssertionRef>
>>>>
>>>> Would this mechanism handle TAs in formats other
>>>> than TAML? e.g javadocs? HTML? WS-I's XML? macros?
>>>> Schematron? UML/CDL? XML Schema even? ANSI prose?
>>>> Predict? Docbook? DITA? PDF? ODF? etc As long as
>>>> each TA has a unique ID and the document as a whole
>>>> can be uniquely identified then I guess so. Not sure TAs
>>>> in source code, etc have identifiers though - line numbers
>>>> may be needed. How would we represent a line number?
>>>> As an attribute on 'taId' perhaps so perhaps more appropriate
>>>> is:
>>>>
>>>> ...
>>>>      <taSetId value="..">
>>>>        <taId value=".." lineNumber="..">
>>>>      </taSetId>
>>>> ...
>>>>
>>>>
>>>> ---
>>>> Stephen D Green
>>>>
>>>>
>>>>
>>>>
>>>> 2009/9/18 Stephen Green <stephengreenubl@gmail.com>:
>>>>> Plus we could give our notation a language code (like
>>>>> we could give XPath 2.0 the 'xpath2' code) so it can
>>>>> be added to the testAssertionRef's @lg attribute
>>>>>
>>>>> e.g. 'ta'
>>>>> <testAssertionRef
>>>>> lg='ta'>("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-draft-0-61.xml";)."Test
>>>>>  Assertions for Universal Business Language v2 Invoice Calculation
>>>>>  Model".invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>
>>>>> this would distinguish it from any XPath equivalent
>>>>>
>>>>> <testAssertionRef
>>>>> lg="xpath20">doc("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-draft-0-61.xml";)//*[local-name(.)='testAssertionSet']/@id='invoice-calculation-model-001'/*[local-name(.)='testAssertion']/@id='INVTAX001'</testAssertionRef>
>>>>>
>>>>> or (aside from namespace issues)
>>>>>
>>>>> <testAssertionRef
>>>>> lg="xpath20">doc("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-draft-0-61.xml";)//testAssertionSet/@id='invoice-calculation-model-001'/testAssertion/@id='INVTAX001'</testAssertionRef>
>>>>>
>>>>> or (with the namespace prefixed and resolved somehow)
>>>>>
>>>>> <testAssertionRef
>>>>> lg="xpath20">doc("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-draft-0-61.xml";)//tag:testAssertionSet/@id='invoice-calculation-model-001'/tag:testAssertion/@id='INVTAX001'</testAssertionRef>
>>>>>
>>>>>
>>>>> (though I'm not even sure the XPath one is valid in place of
>>>>> an identifier since it resolves to a node rather than a location/ID
>>>>> - something an XPath profile would perhaps need to sort out
>>>>> if it allowed this expression for the TA ref)
>>>>>
>>>>>
>>>>> ---
>>>>> Stephen D Green
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2009/9/18 Stephen Green <stephengreenubl@gmail.com>:
>>>>>> Afterthought: Instead of escaping '.' and '$' in any filenames,
>>>>>> filepaths or URLs
>>>>>> (I'm not sure '$' is allowed anyway so it might just be '.' we need to consider)
>>>>>> they could be wrapped in quotes (as with spaces, perhaps) so that favours the
>>>>>> <ref name='ref1'>url | filename | filepath + filename</ref> approach which does
>>>>>> not need to use its own quotes too.
>>>>>>
>>>>>> But given that there is maybe a third design - just allow the point notation to
>>>>>> include the filepath/url as the first part (before the first point)
>>>>>> wrapped, say,
>>>>>> in its own quotes
>>>>>>
>>>>>> <testAssertionRef>"http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml"."Test
>>>>>> Assertions for Universal Business Language v2 Invoice Calculation
>>>>>> Model".invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>>
>>>>>> This avoids the need for any extra elements in the TA markup. It has
>>>>>> disadvantages
>>>>>> of course, like verbosity and possible duplication. Or define a
>>>>>> separate way to wrap
>>>>>> the first filename/url part
>>>>>>
>>>>>> e.g.
>>>>>> <testAssertionRef>("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml";)."Test
>>>>>> Assertions for Universal Business Language v2 Invoice Calculation
>>>>>> Model".invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>>
>>>>>> Best regards
>>>>>>
>>>>>> ---
>>>>>> Stephen D Green
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2009/9/18 Stephen Green <stephengreenubl@gmail.com>:
>>>>>>> I guess one way is with a variable
>>>>>>>
>>>>>>> <var name="doc1"
>>>>>>> lg="xpath20">doc("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml";)</var>
>>>>>>> ...
>>>>>>> <testAssertionRef>$doc1."Test Assertions for Universal Business
>>>>>>> Language v2 Invoice Calculation
>>>>>>> Model".invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>>>
>>>>>>> but what about the testAssertionRef here - it has to combine two
>>>>>>> syntaxes - XPath for the variable with our own point notation for
>>>>>>> the IDs.
>>>>>>>
>>>>>>> A pure XPath way would be to not use the point notation but some
>>>>>>> XPath equivalent:
>>>>>>>
>>>>>>> something like
>>>>>>>
>>>>>>> <testAssertionRef
>>>>>>> lg="xpath20">$doc1//*[local-name(.)='testAssertionSet']/@id='invoice-calculation-model-001'/*[local-name(.)='testAssertion']/@id='INVTAX001'</testAssertionRef>
>>>>>>>
>>>>>>> or even, without the variable
>>>>>>>
>>>>>>> <testAssertionRef
>>>>>>> lg="xpath20">doc("http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml";)//*[local-name(.)='testAssertionSet']/@id='invoice-calculation-model-001'/*[local-name(.)='testAssertion']/@id='INVTAX001'</testAssertionRef>
>>>>>>>
>>>>>>> but it's no where near as neat as the point-separated ref notation.
>>>>>>>
>>>>>>> If we include the point notation built in to the markup (not everyone
>>>>>>> is familiar with XPath nor should have to be), like packages notation
>>>>>>> in Java, then maybe we need a special reference element (a bit like
>>>>>>> a special variable element):
>>>>>>>
>>>>>>> <ref url='http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml'
>>>>>>> name='ref1'/>
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> <ref name='ref1'>http://www.oasis-open.org/committees/download.php/34247/ubl-ta-%20draft-0-61.xml</ref>
>>>>>>>
>>>>>>> (the latter assuming more, eg that the ref is navigable using usual methods like
>>>>>>> trying as a filepath/filename then trying as a url or that a
>>>>>>> filepath/filename will
>>>>>>> always be presented as a file:/// url which leaves less scope for
>>>>>>> relative paths)
>>>>>>>
>>>>>>> Then the TA ref is something like:
>>>>>>>
>>>>>>> <testAssertionRef>$ref1."Test Assertions for Universal Business
>>>>>>> Language v2 Invoice Calculation
>>>>>>> Model".invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>>>
>>>>>>> and we might want to have a dot dot notation (like the '//' in XPath) to
>>>>>>> show a more indefinite child relationship (any child or granchild) to
>>>>>>> avoid something like that cumbersome first ID in my example
>>>>>>>
>>>>>>> <testAssertionRef>$ref1..invoice-calculation-model-001.INVTAX001</testAssertionRef>
>>>>>>>
>>>>>>> There are weaknesses
>>>>>>>
>>>>>>> 1. having to use BNF or the like to define this notation formally
>>>>>>> 2. having to have reservced characters e.g. '$' and '.' (and '..') which
>>>>>>>    realistically could appear in the IDs
>>>>>>>
>>>>>>> 2. could be gotten around specifying an escape character like '\'
>>>>>>>
>>>>>>> 1. may just be essential extra work in the spec - anyone any good at BNF? :-)
>>>>>>>
>>>>>>>
>>>>>>> XPath binding profile tools would just need to support both
>>>>>>> methods if the latter point notation is part of the TAML spec,
>>>>>>> I guess. That presumably applies to any profile and may be
>>>>>>> quite an overhead. Quite powerful to have it though.
>>>>>>>
>>>>>>> ---
>>>>>>> Stephen D Green
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 2009/9/18 Kevin Looney <Kevin.T.Looney@sun.com>:
>>>>>>>> Hi Stephen,
>>>>>>>>
>>>>>>>>   This is a good question to bring up.
>>>>>>>>
>>>>>>>>    I'm not aware of any rules here, but it seems like a 'convention' (or
>>>>>>>> guideline) would go a long way for TA organization or Tool processing.  This
>>>>>>>> issue seems fairly similar to TA naming, which we also gave
>>>>>>>> guidelines/conventions - so I'm guessing we should treat this similarly.
>>>>>>>>
>>>>>>>> The example you gave seems logical (concentric owning sets, separated by
>>>>>>>> dots). Perhaps one of the identifiers (probably the outermost one) needs to
>>>>>>>> be a symbolic representation of the Spec Name / version / revision / date.
>>>>>>>>  Then again, we may wish to refer to TAs from specs, where the TAs live over
>>>>>>>> multiple versions (so specifying version / revision / date is not
>>>>>>>> important).
>>>>>>>>
>>>>>>>> Regarding 'import',  this may be important for a schema.  For the spec
>>>>>>>> itself, it seems like a well formed specification should describe (in some
>>>>>>>> sort of references section) where it refers to behavior / conformance from
>>>>>>>> another spec.  Likewise, an analysis should probably describe some sort of
>>>>>>>> reference too.
>>>>>>>>
>>>>>>>> Just some thoughts off the top of my head.
>>>>>>>> Kevin L
>>>>>>>>
>>>>>>>>
>>>>>>>> Regarding
>>>>>>>> Stephen Green wrote:
>>>>>>>>>
>>>>>>>>> Re: Referencing external test assertions
>>>>>>>>>
>>>>>>>>> Questions:
>>>>>>>>>
>>>>>>>>> Given that I have a set of TAs in an upper level TA Set
>>>>>>>>> in an instance file/document, how would I apply a set
>>>>>>>>> of prerequisites to these TAs as a whole or individually
>>>>>>>>> using the Test Assertion Markup Language? Is there
>>>>>>>>> any special construct or best practice I would need to
>>>>>>>>> clarify unambiguously that the TAs (referenced by their
>>>>>>>>> IDs and the TA Set IDs e.g. 'TASet1.TASet2.ta0001')
>>>>>>>>> are to be found in a certain file? Do we need some kind
>>>>>>>>> of construct in the referring instance like an 'include' or
>>>>>>>>> 'import' statement/element? How is this done in other
>>>>>>>>> TA methodologies/languages? Would it be something
>>>>>>>>> new/untested for TAML if we added it? Could tools handle
>>>>>>>>> such a construct properly? What issues might there be?
>>>>>>>>>
>>>>>>>>> Best regards
>>>>>>>>> ---
>>>>>>>>> Stephen D Green
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe from this mail list, you must leave the OASIS TC that
>>>>>>>>> generates this mail.  Follow this link to all your TCs in OASIS at:
>>>>>>>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]