我對基本問題表示歉意。我有一個XML文件,以及一個XSL將其轉換爲另一種格式(KML)。在KML中,我希望在原始XML文檔中注入動態屬性而不是。我想發出像一個節點以下:JAXB XSLT屬性替換
<NetworkLinkControl>
<message>This is a pop-up message. You will only see this once</message>
<cookie>sessionID={@sessionID}</cookie>
<minRefreshPeriod>5</minRefreshPeriod>
</NetworkLinkControl>
我特別希望{@sessionID}
文字與我插入莫名其妙模板中的動態值來替換(即不是源XML文檔的一部分,該XSLT正在轉型)。
下面是我用當元帥的KML代碼:
DomainObject myObject = ...;
JAXBContext context = JAXBContext.newInstance(new Class[]{DomainObject.class});
Marshaller xmlMarshaller = context.createMarshaller();
xmlMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
TransformerFactory transFact = TransformerFactory.newInstance();
// converts from jaxb XML representation into KML
Templates displayTemplate = transFact.newTemplates(new StreamSource(new File("conf/jaxbkml.xsl")));
Result outputResult = new StreamResult(System.out);
TransformerHandler handler =
((SAXTransformerFactory) transFact).newTransformerHandler(displayTemplate);
handler.setResult(outputResult);
Transformer transformer = handler.getTransformer();
// TODO: what do I actually fill in here to ensure that the session ID comes through
// in the XSLT document? I can't make heads or tails of the javadocs
transformer.setOutputProperty("{http://xyz.foo.com/yada/baz.html}sessionID", "asdf");
xmlMarshaller.marshal(myObject, handler);
我已經收集有中值來代替動態地通過Attribute Value Templates的XSLT的方式,我認爲是有辦法連接transformer's properties與這些屬性值模板一起使用,但我不太明白它是如何完成的。有人可以點亮一些光線嗎?謝謝。
「您選擇的文本」 - 我需要通過Java將該文本注入到模板中。這不可能嗎?在這一點上,我正在考慮手動使用Java String.replace方法來替換該子字符串,但這似乎是一種破解。 – I82Much 2011-06-07 19:49:00