[tei-council] Attributes in no namespace

Martin Holmes mholmes at uvic.ca
Sun Dec 29 19:31:42 EST 2013


On 13-12-29 03:27 PM, Hugh Cayless wrote:
> No. I think you're right. The example doesn't work. If we wanted TEI attributes to be importable on their own, we'd probably have to define parallel versions in the TEI namespace.
>
> How important is it that we be able to do this sort of thing?

I don't think it's important at all. But it is sobering to think that 
every time we use a TEI attribute inside an egXML, we're using the real, 
actual TEI attribute, not some shadow version in the Examples namespace. 
We're just arbitrarily deciding to process it differently. There's 
something nice and clean about this:

<p xmlns="http://www.tei-c.org/ns/Examples"/>

being different from this:

<p xmlns="http://www.tei-c.org/ns/1.0"/>

but it doesn't apply to attributes. Another rather scary thought is that 
when we use elements from another namespace, such as SVG elements, 
whenever they have an attribute with the same name as one of ours, it's 
absolutely unclear which is intended. SVG has @points and so does TEI; 
in that case, they were intended to be identical, so no problem arises, 
but both TEI and SVG have @end, and they're totally different beasts.

Perhaps on my wishlist for P6 is that all TEI attributes are defined in 
the TEI namespace. Unfortunately, that would require that they all had a 
  prefix every time we used them.

Cheers,
Martin

>
> Sent from my phone.
>
>> On Dec 29, 2013, at 17:37, Martin Holmes <mholmes at uvic.ca> wrote:
>>
>> Hi all,
>>
>> Here's a Christmas conundrum. This section of the Guidelines:
>>
>> <http://www.tei-c.org/release/doc/tei-p5-doc/en/html/TD.html#TDeg>
>>
>> contains an egXML whose purpose is to illustrate that it is possible to
>> use the TEI @rend attribute to include styling information for example
>> elements in the Examples namespace:
>>
>> <egXML xmlns="http://www.tei-c.org/ns/Examples"
>> xmlns:tei="http://www.tei-c.org/ns/1.0">
>> <div>
>>      <head>A slide about <gi>egXML</gi></head>
>>      <list>
>>       <item><gi>egXML</gi>  can be used to give XML examples in the TEI
>> Examples namespace</item>
>>       <item>Attributes values for<att>valid</att>:
>>        <list tei:rend="collapsed">
>>        <item><val tei:rend="green">true</val>: intended to be fully
>> valid</item>
>>        <item><val tei:rend="amber">feasible</val>: valid if missing nodes
>> provided</item>
>>        <item><val tei:rend="red">false</val>: not intended to be
>> valid</item>
>>        </list>
>>        </item>
>>        <item>The<att>rend</att>  attribute in the TEI namespace can be
>> used for recording how parts of the example was rendered.</item>
>>        </list>
>> </div>
>> </egXML>
>>
>> Here, the "@tei:rend" attribute is intended to be an attribute in the
>> TEI namespace, not the Examples namespace, and thus to be interpreted
>> for rendering purposes rather than serialized as part of the example.
>>
>> This strikes me as wrong. The @rend attribute we use in TEI is NOT in
>> the TEI namespace; it's in the empty namespace. (Unprefixed attributes
>> are not in the namespace of their parent elements.) In order for this to
>> work, wouldn't we have to declare a special version of @rend which was
>> explicitly in the TEI namespace, with the same semantics as the regular
>> @rend, and use that? Because in terms of XML, these are two completely
>> different attributes:
>>
>> <p xmlns:tei="http://www.tei-c.org/ns/1.0"
>>     rend="blue"
>>     tei:rend="red">
>>     Blue or red?
>> </p>
>>
>> The regular @rend is not in any namespace at all, according to the XML
>> specification -- and incidentally also according to the RelaxNG
>> specification, which I went and looked at; there, we're told that "A
>> foreign attribute is an attribute with a name whose namespace URI is
>> neither the empty string nor the RELAX NG namespace URI"
>> (<http://relaxng.org/spec-20011203.html#full-syntax>) which means that
>> our "TEI" attributes are defined with the empty string namespace, and if
>> they were not, they would be "foreign" attributes).
>>
>> So I contend that this @tei:rend attribute is not our own TEI @rend
>> attribute, but a foreign attribute; and if we actually wanted to use the
>> TEI attribute, we would have to do this:
>>
>> <egXML xmlns="http://www.tei-c.org/ns/Examples"
>> xmlns:realTEI=""> ... <val realTEI:rend="red"...>...
>>
>> But that in fact THIS cannot work either, because the @rend attribute
>> used in the context of <egXML> elements in the Examples namespace is
>> ALSO in the empty string namespace, and therefore they are no different
>> from each other.
>>
>> In other words, it is impossible to do what we set out to do in this
>> example, according to the rules of XML.
>>
>> Am I wrong?
>>
>> Cheers,
>> Martin
>>
>> --
>> tei-council mailing list
>> tei-council at lists.village.Virginia.EDU
>> http://lists.village.Virginia.EDU/mailman/listinfo/tei-council
>>
>> PLEASE NOTE: postings to this list are publicly archived


More information about the tei-council mailing list