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

1
Singh 2 Дек 2019 в 13:37
Префиксы имеют значение только в пределах одного фрагмента XML. <a:thing xmlns:a="uri:thingy"> и <b:thing xmlns:b="uri:thingy"> одно и то же. Это не проблема, если оба они встречаются в одном и том же XML.
 – 
Damien_The_Unbeliever
2 Дек 2019 в 14:10
Что это"? Что вы на самом деле делаете? Как правило, программное обеспечение, обрабатывающее XML, должно принимать любой префикс, оно должно заботиться только о пространстве имен (но «должно» не означает, что все программное обеспечение следует этой хорошей практике).
 – 
Michael Kay
2 Дек 2019 в 14:43

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>

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

1
aled 2 Дек 2019 в 17:24