Можем ли мы сделать префиксы пространств имен в XML-сопоставлении динамическими?

У меня есть сопоставление один к одному двух xsd, которые абсолютно одинаковы. В образце для пространств имен иногда используется префикс ns1, а иногда — com. Мне было интересно, могу ли я сделать что-нибудь, чтобы он принимал любой префикс.


person Singh    schedule 02.12.2019    source источник
comment
префиксы имеют значение только в пределах одного фрагмента XML. <a:thing xmlns:a="uri:thingy"> и <b:thing xmlns:b="uri:thingy"> — это одно и то же. Это не проблема, если оба они встречаются в одном и том же XML.   -  person Damien_The_Unbeliever    schedule 02.12.2019
comment
Что это? Что вы на самом деле делаете? Как правило, программное обеспечение, обрабатывающее XML, должно принимать любой префикс, оно должно заботиться только о пространстве имен (но это не означает, что все программное обеспечение следует этой хорошей практике).   -  person Michael Kay    schedule 02.12.2019


Ответы (1)


Вы можете сделать префикс пространства имен динамическим, включив его в круглые скобки:

%dw 2.0
output application/xml
var z="x"
---
a @((z):'123') : {
    b: 'b'
}

Выход:

<?xml version='1.0' encoding='UTF-8'?>
<a x="123">
  <b>b</b>
</a>

Хотя я не уверен, что это хорошая идея.

person aled    schedule 02.12.2019