Как выполнить XQuery для {http://schemas.xmlsoap.org/soap/encoding/}элемента массива

:

Я пытаюсь запросить элемент массива с помощью преобразования XQuery в OSB OEPE и поместить запрошенные элементы в другой элемент массива.

Это пример того, что мне нужно запросить

<complexType name="QueryToneEvt">
   <sequence>
      ...
      <element name="allowedChannel" nillable="true" type="impl:ArrayOf_xsd_string"/>
      ...
   </sequence>
</complexType>

Элемент ArrayOf_xsd_string таков:

<complexType name="ArrayOf_xsd_string">
   <complexContent>
      <restriction base="soapenc:Array">
         <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
      </restriction>
   </complexContent>
</complexType>

Затем для запроса по элементу allowChannel я проделал эту операцию

for $i in $queryToneEvt/allowedChannel/?
return
     ¿?

Отсюда у меня несколько вопросов?

  1. Маршрут Xpath правильный для этого элемента?
  2. Как определить тип корневого элемента массива и целевого элемента массива, куда я должен поместить запрошенный элемент массива? (в символах ¿?) ПРИМЕЧАНИЕ. Целевой массив имеет ту же структуру, что и корень, потому что он имеет тот же тип ArrayOf_xsd_string.

person pablopg    schedule 29.05.2014    source источник
comment
Я пытался извлечь элементы с помощью for, например список или неограниченный элемент, но это ничего не делает. Я видел, что на элементы внутри массива ссылаются с помощью атрибута href, но я не знаю, как сделать запрос через этот атрибут. Я гуглил это несколько раз, но информация, которую я нашел, мне не помогла.   -  person pablopg    schedule 30.05.2014
comment
Добро пожаловать в Stack Overflow. У вас больше шансов получить хорошие ответы на вопросы здесь, если вы покажете, что вы пробовали, в форме, позволяющей другим воспроизвести проблему. В файлах справки SO и в эссе Эрика Рэймонда и Рика Моэна Как правильно задавать вопросы.   -  person C. M. Sperberg-McQueen    schedule 30.05.2014
comment
редактирую вопрос! Спасибо!   -  person pablopg    schedule 30.05.2014


Ответы (1)


  1. Скорее всего нет, потому что обычно вам нужно указать пространство имен. Или просто используйте «любое пространство имен»:

    for $i in $queryToneEvt/*:allowedChannel
    
  2. Я не понимаю вашего вопроса. Если источник и цель одного типа, просто скопируйте корневой элемент как есть, включая атрибуты.

Пожалуйста, приведите примеры исходной и целевой структур, проще один раз увидеть.

person Vladimir Dyuzhev    schedule 02.06.2014