Re: [netmod] Use XML namespaces in YANG document examples

Tim Bray <tbray@textuality.com> Thu, 03 February 2022 18:55 UTC

Return-Path: <tbray@textuality.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 18B903A1546 for <netmod@ietfa.amsl.com>; Thu, 3 Feb 2022 10:55:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=textuality-com.20210112.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xb5P2_0l6pzK for <netmod@ietfa.amsl.com>; Thu, 3 Feb 2022 10:55:36 -0800 (PST)
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7D2763A1547 for <netmod@ietf.org>; Thu, 3 Feb 2022 10:55:35 -0800 (PST)
Received: by mail-lf1-x133.google.com with SMTP id x23so8076820lfc.0 for <netmod@ietf.org>; Thu, 03 Feb 2022 10:55:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=textuality-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=a/a7Bg87kC785VMlWUWkivIYxejaX19l/CO2w2mLdiU=; b=dbk5vdsTDUiYYsObKNdsPhk48OyRSzEf22c1iJjvyRfwIIFMNowjWqsPKHtj8F45Vo ph3afneayFvQKl/a2AHZPUq0szdEhPxOIbt+XAYsLq7lxFsLInRDSjFvYw5PCjqdbMDZ drEYSGYz8fSn4F1j3k/hH0nrl4hoZCMt4KKfafhVw8te5kyHYrxDCyqVxnFuubM3ncMs 1hjS5K9n77aUbe+LhSSy92eZwSGzNHojP1PixzWVR4Xw4HSShX2SMaGxY+n1Jy7w3u0d Xo1vPNygdUVJp5sKUF5vnwVhqj6sPOJCXtAzYBXMG4kKHzg0jtjPyEj3rptxYVW8HZrI YBeQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=a/a7Bg87kC785VMlWUWkivIYxejaX19l/CO2w2mLdiU=; b=2bOrZ3iXv8LB5vFBwciOvEGZewtXFjGS6kRGQ1A8MJ+jhUctakThdUMe/24SFL52KO KjFQdlbhaHUwkEQu2zMO35AXuqcr9VO6U9HvvXS4Wu7rTIUv+GZT1FGTKHBvQjHjcsJm 1n+aNYTsHTbvFEHtNGevq3bfvc9GT1AavxSWppEFwbDFaBu/vd8ASMYmmaz+iijdkGje VEdQpSrbEj9EqgDWVYxXBo6kpNtHKGuPhyWI6At3BvN1kAPY3XD/ViOi1SW7dbbLTe5m yn87GGNLLUzH0qqftDd5Z2hQDCPyeHSAwOMLznj6uXPTxEhBghVJtVwqKFzhWO8p55QC nPHA==
X-Gm-Message-State: AOAM531bEMcs3iWYxkj780KeuOgqFnGUhlCwmrlqjZsqC73KAEWem/fc OF44jARzRvQqIfuFbWIYO5ML4fgY1fv0IGjSSj3cDA==
X-Google-Smtp-Source: ABdhPJygziF5GtPOhItj/njiIFH2doVFV5VLJ8v8TwtmGt0+iH6OO8hIhy3R21aqI2NrxT6KM2D2jA2sUkiisgmdjsw=
X-Received: by 2002:a05:6512:3184:: with SMTP id i4mr27408943lfe.275.1643914532490; Thu, 03 Feb 2022 10:55:32 -0800 (PST)
MIME-Version: 1.0
References: <CAHBU6iucqMiyVdZncfTHdO=y7dqz=4i0UTqMRa+BBSp=1sTpSw@mail.gmail.com> <CABCOCHRLmi2mQoeEQcYS5b8=0wKUxGY7ntRhqSGLXje=nctgdA@mail.gmail.com> <CAHBU6ivX+j4aY_f_ftQo2Uwvr-u+Y-qebY=jsk0mUDNpHVRi3g@mail.gmail.com> <20220203.192043.63845024394361435.id@4668.se>
In-Reply-To: <20220203.192043.63845024394361435.id@4668.se>
From: Tim Bray <tbray@textuality.com>
Date: Thu, 03 Feb 2022 10:55:21 -0800
Message-ID: <CAHBU6is235QT3d7q+0xhJHdtVna_9-qjGzHG_P4gnMd6nKtdTw@mail.gmail.com>
To: mbj+ietf@4668.se
Cc: Andy Bierman <andy@yumaworks.com>, netmod@ietf.org, dhc-chairs@ietf.org, drafts-expert-review@iana.org, "Eric Vyncke (evyncke)" <evyncke@cisco.com>
Content-Type: multipart/alternative; boundary="000000000000c027ce05d721adad"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/ytzA2V6p5APAdQQ7i2-O5WCckgY>
Subject: Re: [netmod] Use XML namespaces in YANG document examples
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Feb 2022 18:55:41 -0000

On Thu, Feb 3, 2022 at 10:21 AM Martin Björklund <mbj+ietf@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 <andy@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 <ietfc@btconnect.com>
> wrote:
> > >>>
> > >>>> From: netmod <netmod-bounces@ietf.org> on behalf of
> ianfarrer@gmx.com <
> > >>>> ianfarrer@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
> > >>>>
> > >>>
>