2009-11-02 3 views
2

У меня возникают проблемы в файле wsdl, который на SONIC Workbench не принимается, в то время как на Oracle JDev и SOAP UI допускается. В основном анализатор утверждает следующее:XML urn: # недопустимое значение для anyURI

Исключение:

org.xml.sax.SAXException: Ошибка: CVC-тип_данных-valid.1.2.1: 'урна: #ApproveAccumulatedProvisioningRolesSoap' не является допустимым значением для 'anyURI'.

в org.wsi.xml.XMLUtils $ ErrHandler.error (Unknown Source) ....

Насколько я могу понять урну: # причина. Может ли кто-нибудь обратиться ко мне о том, где найти дополнительную информацию о таком синтаксисе, в конце концов, как я могу это исправить.

Заранее спасибо. Алессандро Ilardo

+0

+1 для того, чтобы задать тот же вопрос, который я собирался задать. – Withheld

ответ

0

Учитывайте, что в соответствии с rfc2396, символ двоеточие зарезервирован в формате URI. Исключением SAXException является исключение проверки, и, возможно, Oracle JDev и SOAP UI пропускают проверку URI, в то время как SONIC Workbench этого не делает.

Хэш (или резкий) символ является разделителем между URI и фрагментом и как таковой не разрешен в синтаксисе URI. Вероятнее всего, это станет причиной исключения проверки. Если у вас есть доступ к схеме, с которой проверяется xml, я предлагаю вам выполнить вашу собственную проверку, например. xmllint или аналогичный инструмент XML.

+0

Странно. Предложение @austincheney действительно работает - несмотря на то, что вы написали о двоеточии и хеше. Зачем? – Withheld

+0

@ Даниэль: знак хеширования является разделителем между частью «absoluteURI» или «relativeURI» и частью «фрагмента» URI (перефразируя раздел 4 RFC2396), поэтому я предполагаю, что инструменты позволяют пустой абсолютный/относительный URI и проверяет '# someThing' как действительную часть фрагмента. То, что вы просите, относится к поведению реализации, о котором я ничего не знаю. Все, что я имел в виду, это спецификация :) – Steen

2

Попробуйте это:

urn://#ApproveAccumulatedProvisioningRolesSoap 
+0

Ничего себе! Это действительно избавляет от ошибки проверки. +1 для конкретного (и правильного) решения. – Withheld

0

Если вы используете компилятор xjc, вы можете добавить -nv attr, чтобы отключить строгую проверку схемы xsd.

Смежные вопросы