Удаление всех пространств имен в xml и действительных для wsdl - PullRequest
0 голосов
/ 09 марта 2012

Снова я вернулся с вопросом, связанным с тем же wsdl, на этот раз хотел удалить все пространства имен в запросе и в соответствии с wsdl.

Тот же wsdl tripservice wsdl из ссылка , просто замените элемент "from" на следующий.

<xs:element minOccurs="0" name="from" nillable="true">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="12"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>

Используя soapui, мы знаем, что приведенный ниже запрос xml соответствует wsdl.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:trip="http://trip.price.service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header/>
  <soapenv:Body>
    <trip:getTripPrice>
      <trip>
        <adults>9</adults>
        <duration>9</duration>
        <from xsi:nil="true" />
        <rooms>3</rooms>
      </trip>
    </trip:getTripPrice>
  </soapenv:Body>
</soapenv:Envelope>

Я удалил почти все пространства имен из запроса, однако не смог удалить пространство имен xsi из запроса, чтобы соответствовать wsdl

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Header/>
  <Body>
    <getTripPrice xmlns="http://trip.price.service">
      <trip xmlns="">
        <adults>9</adults>
        <duration>9</duration>
        <from xsi:nil="true" />
        <rooms>3</rooms>
      </trip>
    </getTripPrice>
  </Body>
</Envelope>

Как удалить также пространство имен xsi, все еще действительное в соответствии с wsdl?

1 Ответ

0 голосов
/ 09 марта 2012

Это общий вопрос обработки XML: «Как вы контролируете использование и производство префиксов пространства имен в XML-производителе« x »»? В вашем случае, согласно комментариям, «производитель xml X - это xslt». Это будет зависеть от того, какую реализацию XSLT вы используете и есть ли у нее какие-либо опции для управления этим конкретным поведением.

В общем, xslt придерживается обычного подхода, что префиксы пространства имен являются просто синтаксическим сахаром, и не предлагает удобных механизмов для контроля их использования. Возможно, вы сможете поощрить его более активно использовать префиксы, объявив их в начале определения XSLT.

Я рекомендую сжатие как реальное решение для сокращения использования полосы пропускания.

...