Re: [xml] Is this legal?
- From: Gary Pennington <Gary Pennington uk sun com>
- To: David Frascone <dave frascone com>
- Cc: xml gnome org
- Subject: Re: [xml] Is this legal?
- Date: Wed, 06 Jun 2001 18:51:08 +0100
David Frascone wrote:
On Wed, Jun 06, 2001 at 06:29:23PM +0100, Gary Pennington wrote:
David Frascone wrote:
Are ID/IDREF pairs supposed to be document wide, ignoring the attribute name?
If this means "does an ID have global scope in a document?", then the answer is
yes.
Given the following DTD fragment:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT typedefn EMPTY>
<!ATTLIST typedefn
type-name ID #REQUIRED
description CDATA #IMPLIED
<!ELEMENT avp ((type | grouped), (enum*) )>
<!ATTLIST avp
name ID #REQUIRED
description CDATA #IMPLIED
code CDATA #REQUIRED
may-encrypt (true | false) "true"
mandatory-flag (disallowed | allowed | required) "allowed"
vendor-specific (true | false) "false"
vendor-id IDREF #IMPLIED
constrained (true | false) "false"
Should this XML fragment be legal? (xmllint --valid thinks so)
<typedefn type-name"someType" />
Small typo correction -> <typedefn type-name="someType" />
<avp name="ARAP-Features" code="71">
<type type-name="OctetString"/>
</avp>
<avp name="Good-AVP" code="1">
<type type-name="someType"/>
</avp>
<avp name="Bad-AVP" code="2">
<type type-name="ARAP-Features"/>
</avp>
</dictionary>
It looks valid to me. Your DTD fragment identifies two IDs type-name on
<typedefn> and name on <avp>. There are no clashes between these attributes that
I can see, so I think it's valid.
Even though the type-name, "ARAP-Features" is refering to an avp name
attribute?
I assume you mean the type-name attribute on the <type> element...
Well, the DTD fragment you supply doesn't say anything about <type> elements. If
<type>'s attribute type-name is an ID, then the fragment above would be invalid
(since you couldn't have two elements containing ID atrributes with the same value).
The missing piece in the puzzle above is the definition for the <type> element.
I had "assumed" that the attribute names were matched up. Looks like I was
wrong.
Each attribute name definition only applies to the element for which you declare it.
In other words, an attribute can have the same name and a completely different
meaning on different elements.
If you want to define a set of attributes that should be present on many elements and
should have the same definition, then I recommend using entities.
e.g.
<!ENTITY % core "desc CDATA 'Description'
ref_id ID #REQUIRED">
<!ELEMENT anelement EMPTY>
<!ATTLIST anelement %core;
blah.....>
This is going off-topic for this list, so if you want to continue just mail me
privately.
Gary
-Dave
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]