Hi so 21. 12. 2024 v 0:51 odesÃlatel Jim Jones <jim.jo...@uni-muenster.de> napsal:
> Hi, > > I'd like to propose the implementation of the XMLNamespaces option for > XMLElement. > > XMLNAMESPACES(nsuri AS nsprefix) > XMLNAMESPACES(DEFAULT default-nsuri) > XMLNAMESPACES(NO DEFAULT) > > * nsprefix: Namespace's prefix. > * nsuri: Namespace's URI. > * DEFAULT default-nsuri: Specifies the DEFAULT namespace to use within > the scope of a namespace declaration. > * NO DEFAULT: Specifies that NO DEFAULT namespace is to be > used within the scope of a namespace declaration. > > This basically works pretty much like XMLAttributes, but with a few more > restrictions (see SQL/XML:2023, 11.2 <XML lexically scoped options>): > > * XML namespace declaration shall contain at most one DEFAULT namespace > declaration item. > * No namespace prefix shall be equivalent to xml or xmlns. > * No namespace URI shall be identical to http://www.w3.org/2000/xmlns/ > or to http://www.w3.org/XML/1998/namespace. > * The value of a namespace URI contained in an regular namespace > declaration item (no DEFAULT) shall not be a zero-length string. > > Examples: > > SELECT xmlelement(NAME "foo", xmlnamespaces('http://x.y' AS bar)); > xmlelement > ------------------------------- > <foo xmlns:bar="http://x.y"/> > > SELECT xmlelement(NAME "foo", xmlnamespaces(DEFAULT 'http://x.y')); > xmlelement > --------------------------- > <foo xmlns="http://x.y"/> > > SELECT xmlelement(NAME "foo", xmlnamespaces(NO DEFAULT)); > xmlelement > ----------------- > <foo xmlns=""/> > > In transformXmlExpr() it seemed convenient to use the same parameters to > store the prefixes and URIs as in XMLAttributes (arg_names and > named_args), but I am still not so sure it is the right approach. Is > there perhaps a better way? > > Any thoughts? Feedback welcome! > +1 Pavel > > Best, Jim >