Du var der næsten med dit første forsøg. Mens du evaluerer XPath, når du er inde i attributlisten med /TableAConfig/@* , du behøver ikke text() for at få værdien af attributten inde i den. Du er allerede på attributniveauet, så du bruger kun en "prik" . for nuværende node ville være tilstrækkeligt.
Så prøv sådan noget -
SELECT XMLElement("TableAConfigList",
(SELECT
XMLAgg(
XMLElement("TableAConfig",
XMLAttributes(
tmp."attr_name" as "name",
tmp."attr_text" as "value"
)
)
) from XMLTable('/TableAConfig/@*'
passing TableA.TableA_config
columns
"attr_name" varchar(30) path 'name()',
"attr_text" varchar(30) path '.'
) tmp
)
) from dual
Den eneste forskel fra dit første forsøg er xpath for value attribut.