[tei-council] Attributes in no namespace

Hugh Cayless philomousos at gmail.com
Sun Dec 29 18:27:06 EST 2013


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?

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