Tim,
The type element value references a type definition in one of the namespaces
defined at the top of the XML schema. In the case of EPP RFC 5730, the
<schema> element defines the namespaces:
<schema targetNamespace="urn:ietf:params:xml:ns:epp-1.0"
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns=”http://www.w3.org/2001/XMLSchema”
elementFormDefault="qualified">
The “epp” element with <element name="epp" type="epp:eppType"/> references the
eppType in the “epp” namespace that matches the targetNamespace, with the
definition:
<complexType name="eppType">
<choice>
<element name="greeting" type="epp:greetingType"/>
<element name="hello"/>
<element name="command" type="epp:commandType"/>
<element name="response" type="epp:responseType"/>
<element name="extension" type="epp:extAnyType"/>
</choice>
</complexType>
Another namespace could define the type eppType, such as the “eppcom”
namespace, where the inclusion of the namespace in the type value enables the
XML parser to know which type applies. See later that this is referred to as a
QName.
For your example:
<something xmlns:foo="urn:ietf:params:xml:ns:epp-1.0”><element name="epp"
type=“foo:eppType”/>
This would work if the xmlns:foo is included in the <schema> element, like:
<schema targetNamespace="urn:ietf:params:xml:ns:epp-1.0"
xmlns:foo="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns=”http://www.w3.org/2001/XMLSchema”
elementFormDefault="qualified">
<element name="epp" type=“foo:eppType”/>
<complexType name="eppType">
<choice>
<element name="greeting" type="epp:greetingType"/>
<element name="hello"/>
<element name="command" type="epp:commandType"/>
<element name="response" type="epp:responseType"/>
<element name="extension" type="epp:extAnyType"/>
</choice>
</complexType>
In looking at https://www.w3.org/TR/xmlschema11-1/#Schemas, in states in
section 3.17.2.1 “References to Schema Components”:
Reference to schema components from a schema document is managed in a uniform
way, whether the component corresponds to an element information item from the
same schema document or is imported (References to schema components across
namespaces (<import>)
(§4.2.6)<https://www.w3.org/TR/xmlschema11-1/#composition-schemaImport>) from
an external schema (which may, but need not, correspond to an actual schema
document). The form of all such references is a
·QName·<https://www.w3.org/TR/xmlschema11-1/#gloss-QName>.
[Definition:] A QName is a name with an optional namespace qualification, as
defined in [XML Namespaces
1.1]<https://www.w3.org/TR/xmlschema11-1/#ref-xml-namespaces-1.1>. When used in
connection with the XML representation of schema components or references to
them, this refers to the simple type
QName<https://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/datatypes.html#QName>
as defined in [XML Schema:
Datatypes]<https://www.w3.org/TR/xmlschema11-1/#ref-xsp2>. For brevity, the
term ·QName·<https://www.w3.org/TR/xmlschema11-1/#gloss-QName> is also used to
refer to ·actual values·<https://www.w3.org/TR/xmlschema11-1/#key-vv> in the
value space of the
QName<https://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/datatypes.html#QName>
simple type, which are expanded
names<https://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname> with a
[Definition:] local name and a [Definition:] namespace name.
There are many examples in https://www.w3.org/TR/xmlschema11-1/#Schemas of the
type attribute value referencing a namespace, such as the following examples:
<xs:attribute name="age" type="xs:positiveInteger" use="required"/>
<xs:element name="birthday" type="xs:date"/>
<xs:element name="facet" type="xs:facet" abstract="true"/>
--
JG
[cid87442*[email protected]]
James Gould
Fellow Engineer
[email protected]<applewebdata://13890C55-AAE8-4BF3-A6CE-B4BA42740803/[email protected]>
703-948-3271
12061 Bluemont Way
Reston, VA 20190
Verisign.com<http://verisigninc.com/>
From: Tim Bray <[email protected]>
Date: Friday, January 17, 2025 at 11:12 AM
To: James Gould <[email protected]>
Cc: "[email protected]" <[email protected]>, "[email protected]"
<[email protected]>, "[email protected]"
<[email protected]>
Subject: [EXTERNAL] Re: [regext] Re: [IANA #1410981] expert review for
draft-ietf-regext-epp-eai (xml-registry)
Caution: This email originated from outside the organization. Do not click
links or open attachments unless you recognize the sender and know the content
is safe.
On Jan 17, 2025 at 6:22:32 AM, "Gould, James"
<[email protected]<mailto:[email protected]>> wrote:
Tim,
Thank you for the review. In your note, is the concern that the namespace
prefix is being used for the element name (e.g., “addlEmail”)? I found similar
definitions in the following EPP RFCs, which are broadly implemented:
• EPP RFC 5730 with xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" and
<element name="epp" type="epp:eppType"/>.
No, the element name is fine, it’s the value of the “type” attribute that is
troublesome. The namespace prefix “epp" is really only designed to prefix
element & attribute names, not to be used inside the element content or the
attribute value. There aren’t any standards (afaik) that require a standard
off-the-shelf XML processor to make those prefix/URI mappings available.
For example, would you expect this to work?
<something xmlns:foo="urn:ietf:params:xml:ns:epp-1.0”><element name="epp"
type=“foo:eppType”/>
I mean, it’s probably OK, enough people do this that most XML software can
handle it. It’s just that as the designated XML pedant, I feel I should point
out departures from the letter of the standard.
-T
_______________________________________________
regext mailing list -- [email protected]
To unsubscribe send an email to [email protected]