On Thu, Feb 3, 2022 at 10:21 AM Martin Björklund <mbj+i...@4668.se> wrote:
> > If an XML document has <foo xmlns:bar="...">, won't the XML processor > pass the attribute "xmlns:bar" and its value to the application? This > should be enough even if the XML processor doesn't provide a mapping > table between prefix and namespace (it requires more work in the > application of course). > Nope, there's no requirement that they do and some don't. > I think that if special text is needed for identityref values in XML, > that text should go in to the YANG specification (RFC 7950). All > these other drafts just follow the rules defined in RFC 7950. > Agreed. > > > /martin > > > > > > > > > > > > > > > > > > > > > > Andy > > > > > > > > >> I've excerpted an email exchange with Ian Farrer that I think makes > the > > >> potential problem concrete: > > >> > > >> Hi Ian, I don't think we've met. I'm the grumpy person on the "XML > > >> Directorate" who's been whining about the namespace prefixes in YANG > > >> internet-drafts. One quick issue: I'm a little surprised, is anyone > still > > >> using XML in this kind of thing any more in 2021? > > >> > > >> Anyhow, below I've excerpted the issue that's still troubling me. > Here's > > >> the XML: > > >> > > >> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" > > >> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> > > >> <interface> > > >> <name>eth0</name> > > >> <type>ianaift:ethernetCsmacd</type> > > >> <description>DHCPv6 Relay Interface</description> > > >> <enabled>true</enabled> > > >> </interface> > > >> </interfaces> > > >> > > >> So my question is, I see the XML namespace prefix and the prefix for > the > > >> <type> element content are identical. Is this a coincidence? For > example, > > >> would the following work, changing the namespace prefix to "foo"? > > >> > > >> > > >> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" > > >> xmlns:foo="urn:ietf:params:xml:ns:yang:iana-if-type"> > > >> <interface> > > >> <name>eth0</name> > > >> <type>ianaift:ethernetCsmacd</type> > > >> <description>DHCPv6 Relay Interface</description> > > >> <enabled>true</enabled> > > >> </interface> > > >> </interfaces> > > >> > > >> [if - This example would not work and fails validation with yanglint: > > >> > > >> $ yanglint --strict --verbose -t config -p $IETFYANG > > >> $IETFYANG/iana-if-type.yang $IETFYANG/ietf-interfaces.yang test1.xml > > >> err : Invalid value "ianaift:ethernetCsmacd" in "type" element. > > >> (/ietf-interfaces:interfaces/interface[name='eth0']/type) > > >> ] > > >> > > >> > > >> Follow-up, would the following work, foo for both namespace and > content > > >> prefix? > > >> > > >> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" > > >> xmlns:foo="urn:ietf:params:xml:ns:yang:iana-if-type"> > > >> <interface> > > >> <name>eth0</name> > > >> <type>foo:ethernetCsmacd</type> > > >> <description>DHCPv6 Relay Interface</description> > > >> <enabled>true</enabled> > > >> </interface> > > >> </interfaces> > > >> > > >> Thanks in advance! > > >> > > >> > > >> [if - This does validate with yanglint, however the convention in the > > >> IETF examples I’ve seen seems to be to use the prefix that is defined > in > > >> the original YANG module for imports for consistency, e.g. (from > > >> iana-if-type.yang): > > >> > > >> > > >> On Thu, Feb 3, 2022 at 8:03 AM Andy Bierman <a...@yumaworks.com> > wrote: > > >> > > >>> Hi, > > >>> > > >>> I think the text from sec 4 refers to the usage within an > application. > > >>> The XML instance document is the on-the-wire representation and > > >>> the I-D example looks correct. > > >>> > > >>> https://www.w3.org/TR/xml-names/#ns-qualnames > > >>> > > >>> > > >>> Andy > > >>> > > >>> > > >>> On Thu, Feb 3, 2022 at 3:53 AM tom petch <ie...@btconnect.com> > wrote: > > >>> > > >>>> From: netmod <netmod-boun...@ietf.org> on behalf of > ianfar...@gmx.com < > > >>>> ianfar...@gmx.com> > > >>>> Sent: 03 February 2022 09:37 > > >>>> > > >>>> Hi, > > >>>> > > >>>> A draft I have been working on ( > > >>>> https://datatracker.ietf.org/doc/draft-ietf-dhc-dhcpv6-yang/) > contains > > >>>> a number of XML configuration examples. During the XML expert > review, a > > >>>> question has been raised about the use of XML namespaces in these > examples. > > >>>> I’m raising it here as I don’t have the XML knowledge to answer. > > >>>> > > >>>> <tp> > > >>>> > > >>>> Ian > > >>>> > > >>>> This looks like the issue I raised on this list 14jan2022 with a > > >>>> subject line of > > >>>> XML and prefix > > >>>> although I have not checked that the usage is exactly the same; the > > >>>> 'XML Expert' comment would appear to be. > > >>>> > > >>>> Tom Petch > > >>>> > > >>>> In my example: > > >>>> > > >>>> <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" > > >>>> > > >>>> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> > > >>>> <interface> > > >>>> <name>eth0</name> > > >>>> <type>ianaift:ethernetCsmacd</type> > > >>>> <description>DHCPv6 Relay Interface</description> > > >>>> <enabled>true</enabled> > > >>>> </interface> > > >>>> </interfaces> > > >>>> > > >>>> The question is related to the use of the ‘ianaift:’ prefix. This is > > >>>> quite commonly use in XML examples in YANG documents (e.g. RFC8344) > so I > > >>>> think the question is generally applicable. > > >>>> > > >>>> The specific comments from the expert review are: > > >>>> > > >>>> - > > >>>> For the correct processing of these documents requires that whatever > > >>>> XML software is being used makes available to application code the > > >>>> namespace prefixes. > > >>>> > > >>>> Whilst the recommended tools (e.g. yanglint) provides this > function, it > > >>>> is not an XML best practice. Quoting from the Namespaces in XML, > section 4: > > >>>> "Note that the prefix functions only as a placeholder for a > namespace name. > > >>>> Applications SHOULD use the namespace name, not the prefix, in > constructing > > >>>> names whose scope extends beyond the containing document.” > > >>>> > > >>>> I think that violating a SHOULD assertion in a W3C standard is a > > >>>> problem. > > >>>> > > >>>> There is no requirement for XML processors to provide this prefix > > >>>> information, and software that (quite legally) doesn't, will not > work > > >>>> correctly with YANG documents constructed as specified in this I-D. > > >>>> > > >>>> 1, YANG specifications should note this fact and specify that > software > > >>>> which is used to process YANG documents MUST provide an interface > such that > > >>>> applications can retrieve the prefix-namespace mappings. > > >>>> 2, For constructs such as <type>ianaift:ethernetCsmacd</type> the > > >>>> Internet-Draft should specify that the prefix ("ianaift" in this > case) MUST > > >>>> be identical to the xmlns namespace prefix representing the > namespace name > > >>>> urn:ietf:params:xml:ns:yang:iana-if-type > > >>>> 3, Alternately, the draft could specify that for the namespace > > >>>> urn:ietf:params:xml:ns:yang:iana-if-type, the XML namespace prefix > ianaift > > >>>> MUST be used. Another XML bad practice because software that > generates XML > > >>>> programmatically should feel free to generate synthetic prefixes > without > > >>>> breaking the content, but at least this would solve the problem. > > >>>> - > > >>>> > > >>>> BCP216 (RFC8407 - Guidelines for Authors and Reviewers of Documents > > >>>> Containing YANG modules) doesn’t make any mention of how XML > namespaces > > >>>> should be used, only that example XML/ JSON should be included and > that > > >>>> these examples need to be validated (pyang and yanglint are > mentioned for > > >>>> this). > > >>>> > > >>>> Does this guidance need to be updated to reflect expert review > comments > > >>>> above? > > >>>> > > >>>> Thanks, > > >>>> Ian > > >>>> > > >>>> > > >>>> > > >>>> _______________________________________________ > > >>>> netmod mailing list > > >>>> netmod@ietf.org > > >>>> https://www.ietf.org/mailman/listinfo/netmod > > >>>> > > >>> >
_______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod