Я получаю запросы SOAP от клиента, использующего библиотеки Axis 1.4. Запросы имеют следующий вид:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<PlaceOrderRequest xmlns="http://example.com/schema/order/request">
<order>
<ns1:requestParameter xmlns:ns1="http://example.com/schema/common/request">
<ns1:orderingSystemWithDomain>
<ns1:orderingSystem>Internet</ns1:orderingSystem>
<ns1:domainSign>2</ns1:domainSign>
</ns1:orderingSystemWithDomain>
</ns1:requestParameter>
<ns2:directDeliveryAddress ns2:addressType="0" ns2:index="1"
xmlns:ns2="http://example.com/schema/order/request">
<ns3:address xmlns:ns3="http://example.com/schema/common/request">
<ns4:zipcode xmlns:ns4="http://example.com/schema/common">12345</ns4:zipcode>
<ns5:city xmlns:ns5="http://example.com/schema/common">City</ns5:city>
<ns6:street xmlns:ns6="http://example.com/schema/common">Street</ns6:street>
<ns7:houseNum xmlns:ns7="http://example.com/schema/common">1</ns7:houseNum>
<ns8:country xmlns:ns8="http://example.com/schema/common">XX</ns8:country>
</ns3:address>
[...]
Как видите, для одного и того же пространства имен определено несколько префиксов, например. пространство имен http://example.com/schema/common имеет префиксы ns4, ns5, ns6, ns7 и нс8. Некоторые длинные запросы определяют несколько сотен префиксов для одного и того же пространства имен.
Это вызывает проблему с XSLT-процессором Saxon, который я использую для преобразования запросов. Saxon ограничивает количество различных префиксов для одного и того же пространства имен до 255 и создает исключение, когда вы определяете больше префиксов.
Можно ли настроить Axis 1.4 для определения более разумных префиксов, чтобы для каждого пространства имен был только один префикс?