2009-11-02 9 views
2

Je rencontre des problèmes sur un fichier wsdl qui, sur SONIC Workbench, n'est pas accepté, alors que sur Oracle JDev et SOAP UI est tolérée. Fondamentalement l'analyseur revendique les suivantes:XML urn: # n'est pas une valeur valide pour anyURI

Exception:

org.xml.sax.SAXException: Erreur: cvc-datatype-valid.1.2.1: 'urn: #ApproveAccumulatedProvisioningRolesSoap' est pas une valeur valide pour 'anyURI'.

à org.wsi.xml.XMLUtils $ ErrHandler.error (Source inconnue) ....

Pour autant que je peux comprendre l'urne: # est la raison. Quelqu'un peut-il m'adresser sur où trouver d'autres informations sur une telle syntaxe, éventuellement comment je peux le réparer.

Merci d'avance. Alessandro Ilardo

+0

+1 pour poser la même question que j'étais sur le point de demander. – Withheld

Répondre

0

S'il vous plaît observer que, selon le rfc2396, le caractère du côlon est réservé dans le format URI. L'exception SAXException que vous obtenez est une exception de validation et il se peut que Oracle JDev et SOAP UI ignorent la validation des URI alors que SONIC Workbench ne le fait pas.

Le caractère haché (ou pointu) est un délimiteur entre un URI et un fragment, et n'est pas autorisé dans la syntaxe URI. Cela pourrait plus probablement être la raison de l'exception de validation. Si vous avez accès au schéma sur lequel le XML est validé, je vous suggère de lancer votre propre validation avec par exemple. xmllint ou un outil XML similaire.

+0

Bizarre. La suggestion @austincheney fonctionne réellement - malgré ce que vous avez écrit sur le colon et le hachage. Pourquoi? – Withheld

+0

@Daniel: Le signe dièse est un délimiteur entre la partie "absoluteURI" ou "relativeURI" et la partie "fragment" d'une URI (paraphrasant la section 4 de la RFC2396), donc je suppose que les outils permettent une URI absolue/relative vide et valide le '# someThing' en tant que partie de fragment valide. Ce que vous demandez concerne le comportement de mise en œuvre, dont je ne sais rien. Tout ce dont je parlais était la spécification :) – Steen

2

Essayez ceci:

urn://#ApproveAccumulatedProvisioningRolesSoap 
+0

Wow! Cela permet en effet de se débarrasser de l'erreur de validation. +1 pour une solution concrète (et correcte). – Withheld

0

Si vous utilisez le compilateur xjc, vous pouvez ajouter -nv attr pour désactiver la validation stricte du schéma xsd.

Questions connexes