Next in thread → Next in month →

Re: [xml-dev] DTDs don't have ID or IDREF elements so why does XML Schema?

From
Pete Cordell <>
To
Michael Kay <>, Peter Flynn <>
Date
2022-03-02T17:43:09Z
ID
<>
Thread
Re: [xml-dev] DTDs don't have ID or IDREF elements so why does XML Schema?
On 02/03/2022 11:25, Michael Kay wrote:
 > XPath 1.0 allowed you to write -1 < 0 < +1, and the result
 > is false (because -1 < 0 is true, and true < 1 is false). XPath 2.0
 > disallowed that;

This seems like over-zealous implicit conversion from one type to 
another (Boolean to integer or integer to Boolean).  It causes a lot of 
problems in languages like C++.  But I think it is an issue orthogonal 
to orthogonality ;)

Pete.
-- 
---------------------------------------------------------------------
Pete Cordell
Codalogic Ltd
Read & write XML in C++, http://www.xml2cpp.com
---------------------------------------------------------------------
> Orthogonality in my view trumps having no use case.
> 
> There's no use case for multiplying by one; but orthogonality (or "no 
> needless restrictions") says the lack of a use case is not a reason to 
> disallow it.
> 
> The concept of preventing you doing something because the language 
> designers didn't think it was a sensible thing to do was known in the 
> schema WG as "paternalism". An example of paternalism would be to 
> disallow --1 (minus minus one) in XPath; or in regular expressions, to 
> disallow overlapping ranges [a-zi-k]. In my view, a rule that exists 
> solely in order to prevent you doing something that's well-defined but 
> useless is usually a bad rule. Another example is the rule that concat() 
> must have at least two arguments: I think that's a thoroughly bad rule. 
> If you demand a use case, I could talk about code generation; but I 
> don't think it does demand a use case.
> 
> Of course there's a very fine line between paternalism and things like 
> type-checking rules that are designed to protect programmers from their 
> own errors. XPath 1.0 allowed you to write -1 < 0 < +1, and the result 
> is false (because -1 < 0 is true, and true < 1 is false). XPath 2.0 
> disallowed that; a restriction that prevents you falling into an 
> elephant trap isn't the same as a restriction that stops you writing 
> expressions that aren't useful. But XPath 2.0 doesn't stop you writing 
> @x/@y: that's justified by orthogonality, but it's almost certainly a 
> mistake. I think we should have made that a type error.
> 
> I'm rambling: Bottom line, I think:
> 
> (a) Don't sacrifice orthogonality (introduce restrictions) just because 
> something has no known use case
> 
> (b) But do (sometimes) sacrifice orthogonality to stop users falling 
> into elephant traps.
> 
> Michael Kay
> Saxonica
> 
>> On 2 Mar 2022, at 10:55, Peter Flynn < 
>> <mailto:>> wrote:
>>
>> On 01/03/2022 23:52, Michael Kay wrote:
>>> Orthogonality, or to put it another way, avoiding arbitrary 
>>> restrictions. If ID and IDREF are going to be among your set of data 
>>> types, then why would you want to disallow people from using them on 
>>> elements.
>>
>> It's part of the way some people view XML. I struggle to find any use 
>> case for using ID or IDREF on elements. In fact, I would argue that 
>> adding an ID or IDREF attribute to an element type *is* "using it on 
>> elements".
>>
>>> (Personally, I would have made "IDness" and "IDREFness" properties 
>>> that are orthogonal to type. I can't see any good reason for
>>> disallowing IDs of type integer or date.
>>
>> If we accept IDs must be unique within the document, I have 
>> encountered many reasons, such as "integers" that aren't (ie leading 
>> zeroes), and dates that turn out later to need multiple occurrences.
>>
>>> But the SGML and DTD legacy weighed strongly on the XSD designers.)
>>
>> I am very glad they did.
>>
>> Peter
>>
>>>> On 1 Mar 2022, at 23:32, Roger L Costello < 
>>>> <mailto:>> wrote:
>>>>
>>>> Hi Folks,
>>>>
>>>> DTD only allows attributes to be of type ID and IDREF.
>>>>
>>>> XML Schema allows both attributes and elements to be of type ID and 
>>>> IDREF. Why? Is there a compelling use case for declaring an element 
>>>> to be of type ID? Is there a compelling use case for declaring an 
>>>> element to be of type IDREF?
>>>>
>>>> /Roger
>>>>
>>>> _______________________________________________________________________
>>>>
>>>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>>>> to support XML implementation and development. To minimize
>>>> spam in the archives, you must subscribe before posting.
>>>>
>>>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ 
>>>> <http://www.oasis-open.org/mlmanage/>
>>>> Or unsubscribe:  
>>>> <mailto:>
>>>> subscribe:  
>>>> <mailto:>
>>>> List archive: http://lists.xml.org/archives/xml-dev/ 
>>>> <http://lists.xml.org/archives/xml-dev/>
>>>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php 
>>>> <http://www.oasis-open.org/maillists/guidelines.php>
>>>>
>>> _______________________________________________________________________
>>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>>> to support XML implementation and development. To minimize
>>> spam in the archives, you must subscribe before posting.
>>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ 
>>> <http://www.oasis-open.org/mlmanage/>
>>> Or unsubscribe:  
>>> <mailto:>
>>> subscribe:  
>>> <mailto:>
>>> List archive: http://lists.xml.org/archives/xml-dev/ 
>>> <http://lists.xml.org/archives/xml-dev/>
>>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php 
>>> <http://www.oasis-open.org/maillists/guidelines.php>
>>
>> --
>> Peter Flynn
>> Cork 🇮🇪 Ireland 🇪🇺
>>
>> _______________________________________________________________________
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>> to support XML implementation and development. To minimize
>> spam in the archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address:http://www.oasis-open.org/mlmanage/ 
>> <http://www.oasis-open.org/mlmanage/>
>> Or unsubscribe: 
>> <mailto:>
>> subscribe: 
>> <mailto:>
>> List archive:http://lists.xml.org/archives/xml-dev/ 
>> <http://lists.xml.org/archives/xml-dev/>
>> List Guidelines:http://www.oasis-open.org/maillists/guidelines.php 
>> <http://www.oasis-open.org/maillists/guidelines.php>
> 
> _______________________________________________________________________ 
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS to 
> support XML implementation and development. To minimize spam in the 
> archives, you must subscribe before posting. [Un]Subscribe/change 
> address: http://www.oasis-open.org/mlmanage/ Or unsubscribe: 
>  subscribe: 
>  List archive: 
> http://lists.xml.org/archives/xml-dev/ List Guidelines: 
> http://www.oasis-open.org/maillists/guidelines.php
Next in thread → Next in month →