Re: Add XMLNamespaces to XMLElement
От | Pavel Stehule |
---|---|
Тема | Re: Add XMLNamespaces to XMLElement |
Дата | |
Msg-id | CAFj8pRBMZcKQq3hgb2PntLWSG8vRGtZcrgmw9c_ct8E5Lpf8kw@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Add XMLNamespaces to XMLElement
|
Список | pgsql-hackers |
Hi
so 21. 12. 2024 v 0:51 odesílatel Jim Jones <jim.jones@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
В списке pgsql-hackers по дате отправления: