Что вы на самом деле делаете, когда форматирование ваш путь преобразование вашего XML (узла DOM) с использованием так называемого преобразования «идентичности» (это то, что вы получаете из пустогоТрансформатор()).Какой тип источника вы укажете (DOMSource или StreamSource) на самом деле не имеет значения, так как XSLT все равно нуждается в вашем XML в памяти (что означает, что вы все равно в конечном итоге создаете DOM).Просто невозможно применить XSLT к потоковой передаче данных XML, так как ваш XPath (в общем) может блуждать в зависимости от того, какой он хочет в дереве исходных текстов.С вводом SAX вы не можете достичь того, на что вы не смотрели, и тогда то, на что вы смотрели, не сохраняется в памяти или вы становитесь DOM.
У вас уже есть XML в памяти какDOM-узелПреобразование идентичности - это один из способов получить из него выходной поток, и вы мало что можете сделать, чтобы определить, сколько памяти он будет потреблять (может быть, попробовать разные реализации преобразователя?).Я также не уверен, какая у вас реализация синтаксического анализатора, но вы можете посмотреть, есть ли у него что-то вроде этого - http://xerces.apache.org/xerces-j/apiDocs/org/apache/xml/serialize/XMLSerializer.html. Этот парень просто пройдет по дереву элементов и распечатает их.У него не должно быть лишней памяти, поскольку то, что он делает, довольно жестоко.И если бы у вас был вход SAX, он распечатал бы его таким же образом (то есть без создания презентации в памяти, готовой для преобразования XSLT).Единственное предостережение о том, чтобы идти по этому пути, это то, что это определенный API, а не часть JAXP.