Выражение XPath в моих внешних файлах привязки не может ориентироваться на элементы в моих XML-схемах, которые импортируются в мой WSDL.
Все выполняется, если я выполняю встроенную привязку привязки, но я действительно хотел иметь внешние файлы привязки таким образом, чтобы я никогда случайно не перезаписывал (обновлять) файлы, содержащие мои настройки.
Начало моего файла привязки:
<jaxb:bindings
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
version="2.1">
<jaxb:bindings schemaLocation="../wsdl/localhost_7001/ExampleSessionBean/ExampleSessionBeanService.wsdl#types?schema1">
<jaxb:bindings node="//xs:schema[@targetNamespace='urn:myExample']">
В моем WSDL есть:
<types>
<xsd:schema>
<xsd:import namespace="urn:myExample" schemaLocation="http://localhost:7001/ExampleSessionBean/ExampleSessionBeanService?xsd=1"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://ejbs/" schemaLocation="http://localhost:7001/ExampleSessionBean/ExampleSessionBeanService?xsd=2"/>
</xsd:schema>
</types>
Независимо от того, что я делаю, XPath не может найти ничего в схемах xsd: import'ed. Ошибка, которую я получаю:
[ERROR] XPath evaluation of "//xs:schema[@targetNamespace='urn:myExample']" results in empty target node
Я пробовал доступ к xs: schema по номеру индекса вместо пространства имен, и это тоже не работает. Похоже, что мои выражения XPath не могут достигать элементов из импортированных схем... есть ли способ исправить это?
Это проект Java SE 7, разработанный под NetBean 7.2. Я использую NetBeans для выполнения всех моих wsimport файлов, если это имеет значение, но вывод команды выглядит довольно стандартно для RI/Metro.
EDIT: Я понял, что могу использовать внешний файл привязки, если я использую SCD. Этот пример XPath не работает:
<bindings node="//xsd:schema[@targetNamespace='urn:myExample']">
<bindings node="//xs:complexType[@name='myType']">
<class name="MyClass"/>
</bindings>
</bindings>
Но этот пример SCD делает.
<bindings scd="x-schema::tns" xmlns:tns="urn:myExample">
<bindings scd="~tns:myType">
<class name="MyClass"/>
</bindings>
</bindings>
Известно ли это, что XPath не работает в xjb файлах при использовании wsimport, но SCD делает?