Nope, aucun changement, j'ai toujours le com:segment, mais pas la déclaration du namespace com :/. Voilà les codes que j'ai essayé:
1 2 3 4 5 6 7
| SVGElement group = (SVGElement) svgDocument.createElementNS(
SVGDOMImplementation.SVG_NAMESPACE_URI, "g");
Attr attr = group.getOwnerDocument().createAttributeNS("http://company.com/fronts/1.0", "com:segment");
attr.setValue(""+i);
group.setAttributeNodeNS(attr);
element.appendChild(group);
log.info("namespace: "+group.lookupNamespaceURI("com")); |
1 2 3 4
| SVGElement group = (SVGElement) svgDocument.createElementNS(
SVGDOMImplementation.SVG_NAMESPACE_URI, "g");
group.setAttributeNS("http://company.com/fronts/1.0", "com:segment", ""+i);
log.info("namespace: "+group.lookupNamespaceURI("com")); |
Note que le lookupNamespaceURI me retourne null, donc il ignore la présence du namespace dans l'attribut? :/
Le code suivant résoud le problème, mais j'ai l'impression de forcer le namespace avec un chausse pieds et que ce n'est pas la bonne méthode, je fait le boulot que la conversion DOM->String devrait faire. Note que la conversion en question en String se fait via l'utilisation d'un simple transformer identitaire. Le DOM est bien namespace aware, puisqu'il s'agit d'un dom SVG contenant déjà deux namespaces (xvg et xlink) qui eux marchent bien :/.
group.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:com", "http://company.com/fronts/1.0");
Il n'y a pas plus simplement une méthode dans Document à laquelle je peux passer une liste de namespaces à ajouter au document? Il semblerait que ça se face tout seul si je rajoute des Element ayant un namespace, mais pas si ce sont des attributs....
En plus, si je met le namespace avec un chausse pieds sur le root element, plutot que sur l'élément que je suis occupé de remplir, quand je fais le rendu partiel d'un node, ce n'affiche plus le namespace, alors qu'avec le namespace xlink, que batik ajoute lui même, ça se fait aussi bien à l'élément racine si j'affiche tout que directement dans l'élément <image> si je n'affiche que ce dernier :/
Et j'arrive pas à trouver dans les sources de batik où on définit ce namespace :'(
Partager