J'essaie de générer plusieurs pages html statiques ayant un fichier xml et une transformation xsl. J'ai utilisé un itérateur pour faire une transformation pour chaque page html.Comment ajouter un attribut à un nœud avec saxon s9api?
Je voudrais modifier un nœud et ajouter un attribut. J'ai vu quelques exemples et j'ai écrit le code ci-dessous mais je ne sais pas comment récupérer NamePool, le s9api doit être changé car le "getNamePool()" n'est pas listé dans NodeInfo ou MutableNodeInfo.
Comment puis-je ajouter un attribut au noeud correctement et comment puis-je récupérer NamePool?
Processor processor = new Processor(false);
XsltCompiler compiler = processor.newXsltCompiler();
XsltTransformer transformer = compiler.compile(new StreamSource(new File(xlsFilePath))).load();
XdmNode source = processor.newDocumentBuilder().build(new StreamSource(new File(xmlFilePath)));
XdmValue xdmValue = processor.newXPathCompiler().evaluate(xpathExpression, source);
for (XdmItem xdmItem : xdmValue) {
XdmNode xdmNode = (XdmNode)xdmItem;
MutableNodeInfo node = (MutableNodeInfo)xdmNode.getUnderlyingNode();
NodeInfo nodeInfo = (NodeInfo)xdmNode.getUnderlyingNode().;
NamePool namePool = ...//retrieve namePoll
CodedName codedName = new CodedName(node.getFingerprint(), node.getPrefix(), namePool);
node.addAttribute(codedName, BuiltInAtomicType.UNTYPED_ATOMIC, "1", 0);
Serializer out = processor.newSerializer(new File(outputFolderPath + xdmNode.getAttributeValue(new QName("id")) +".html"));
out.setOutputProperty(Serializer.Property.METHOD, "html");
out.setOutputProperty(Serializer.Property.INDENT, "yes");
out.setOutputProperty(Serializer.Property.VERSION, "5");
transformer.setInitialContextNode(xdmNode);
transformer.setDestination(out);
transformer.transform();
}
Merci Michael, j'ai essayé FingerprintedQName mais sur le temps de construction j'ai: net.sf.saxon.tree.tiny.TinyElementImpl ne peut pas être converti en net.sf.saxon.om.MutableNodeInfo. Que manque-t-il pour ajouter correctement un attribut? – Tvori