क्या स्टैंडअलोन विशेषता को छोड़ने के लिए ट्रांसफॉर्मर (डीओएम का उपयोग कर एक्सएमएल दस्तावेज़ को क्रमबद्ध करते समय) को बताने का कोई तरीका है?जावा डीओएम + ट्रांसफार्मर का उपयोग करते समय एक्सएमएल घोषणा में स्टैंडअलोन विशेषता को छोड़ना।
पसंदीदा रूप से एक हैक का उपयोग किए बिना, यानी पूरी एक्सएमएल घोषणा को छोड़कर और इसे मैन्युअल रूप से तैयार करना।
मेरे वर्तमान कोड:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); //Note nothing is changed
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(document);
transformer.transform(source, result);
return result.getWriter().toString();
वर्तमान:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<someElement/>
उद्देश्य:
<?xml version="1.0" encoding="UTF-8">
<someElement/>
यह भी क्यों काम करता है? Spec के अनुसार: https://www.w3.org/TR/2004/REC-xml-20040204/#sec-rmd "यदि बाहरी मार्कअप घोषणाएं हैं लेकिन कोई स्टैंडअलोन दस्तावेज़ घोषणा नहीं है, तो मूल्य" नहीं " ऐसा माना जाता है।" यह उत्तर: https://stackoverflow.com/questions/5578645/what-does-the-standalone-directive-mean-in-xml यह भी बताता है कि यदि स्टैंडअलोन विशेषता अनुपलब्ध है तो "नहीं" माना जाता है। फिर document.setXmlStandalone (सत्य) कैसे आते हैं; विशेषता को हटा देता है? – mdzh