<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>5905</bug_id>
          
          <creation_ts>2008-07-29 14:58:01 +0000</creation_ts>
          <short_desc>vc:typeAvailable and vc:typeUnavailable</short_desc>
          <delta_ts>2008-09-09 20:17:57 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XML Schema</product>
          <component>Structures: XSD Part 1</component>
          <version>1.1 only</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>resolved</keywords>
          <priority>P1</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Kay">mike</reporter>
          <assigned_to name="C. M. Sperberg-McQueen">cmsmcq</assigned_to>
          <cc>David_E3</cc>
          
          <qa_contact name="XML Schema comments list">www-xml-schema-comments</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>21371</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2008-07-29 14:58:01 +0000</bug_when>
    <thetext>I&apos;m struggling with the semantics of vc:typeAvailable and vc:typeUnavailable.

One might expect that one can write two alternative elements, one with vc:typeAvailable=&quot;A B C&quot; and one with vc:typeUnavailable=&quot;A B C&quot;, and exactly one of the two will be chosen. But this is not the case. The first attribute causes the element to be used if and only if ALL the types are available, while the second causes it to be used if and only if ALL the types are unavailable.

I think it would be much more useful and intuitive for these attributes to be complementary. I think that vc:typeUnavailable should cause the element to be used if ANY of the types is unavailable. That is, it is ignored if and only if all the types are available, which means changing the wording to:

vc:typeUnavailable = T, where every item in the ·actual value· T is the expanded name of some type definition ·automatically known· to and supported by the processor

and similarly for vc:facetUnavailable. [We might want to spell out that the universal quantifier is always true for an empty set.]

In the common use case where the list is of length one the meaning is unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21481</commentid>
    <comment_count>1</comment_count>
    <who name="David Ezell">David_E3</who>
    <bug_when>2008-08-08 16:22:24 +0000</bug_when>
    <thetext>Note: the WG believes that fixing this bug will not invalidate anyone&apos;s review, and would not change anyone&apos;s decision about whether or not to approve the REC.
&quot;The WG believes that this change will not invalidate any last-call reviews.&quot;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21587</commentid>
    <comment_count>2</comment_count>
    <who name="David Ezell">David_E3</who>
    <bug_when>2008-08-18 14:39:03 +0000</bug_when>
    <thetext>On 2008-08-08 the WG agreed to adopt the change suggested by MK above, i.e. to make the two operations complementary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21851</commentid>
    <comment_count>3</comment_count>
    <who name="C. M. Sperberg-McQueen">cmsmcq</who>
    <bug_when>2008-09-09 15:29:09 +0000</bug_when>
    <thetext>A change proposal intended to resolve this issue (and others) was adopted
by the XML Schema WG on 5 September 2008.  

  http://www.w3.org/XML/Group/2004/06/xmlschema-1/structures.b5904etc.html

Accordingly, I am marking the issue RESOLVED.  

Michael, as the originator of the issue, you can indicate your assent to the
disposition of the issue by closing it, or your opposition to the 
disposition by reopening the issue.  If we don&apos;t hear from other in two
weeks, we&apos;ll assume you are content.  Thank you.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21855</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2008-09-09 20:17:57 +0000</bug_when>
    <thetext>Marking as closed.

Editorially, I still have great difficulty reading this text: to my mind, it has too many double negatives. I think the problem is that the attribute defines the conditions under which the element is included, whereas the spec describes the conditions under which it is ignored. To fix this I think one has to write:

An element in a schema document that has an attribute vc:typeAvailable, vc:typeUnavailable, vc:facetAvailable, or vc:facetUnavailable, is to be ignored, along with all its attributes and descendants, unless one or more of the following is true: 

   1. The element has a vc:typeAvailable attribute T, and every item in the ·actual value· of T is the expanded name of a type definition ·automatically known· to the processor
   
   2. The element has a vc:typeUnavailable attribute T, and some item in the ·actual value· T is not the expanded name of a type definition ·automatically known· to and supported by the processor

...
   
(I&apos;m not sure this is quite the same outcome as the current text if more than one of these attributes is present, but that&apos;s a questionable situation anyway...)
</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>