Эта ленивая инициализация может быть вашей проблемой :
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
...
Считаете ли вы, что при первом вызове вашей функции render()
функция getBufferStrategy()
вернет null
в этот момент
вы сначала создадите его (это нормально)
, а затем вернетесь без каких-либо действий (это подозрительно)
Последующие вызовы рендеринга фактически будут выполнять рендеринг ... позже. Если вы точно знаете, что в любом случае вам понадобится это bufferStrategy, имеет смысл создать его сразу же при инициализации вашей системы.
Исключение пытается сказать вам, что вы попытались вывести текст после элемента закрытия корневого элемента. Причина, по которой ваш вывод выглядит нормально, заключается в том, что исключение предотвратило создание недопустимого XML.
Причина проста: у вас нет преобразования для корня документа. Поэтому выполняются преобразования по умолчанию. Они выводят текстовое содержимое всех элементов в виде текстовых узлов.
Add
<xsl:template match="/">
<xsl:apply-templates select="/Root/Documents/PO/DROPSHIP"/>
</xsl:template>
Ваш вывод действительно составляет правильно построенный фрагмент XML. Другими словами, это смотрит хорошо и Ваш XSLT - также.
Кажется, что сообщение об ошибке пытается сказать Вам следующее:
Применение этого XSLT представляет документ, который недопустим согласно DTD или Схеме, или независимо от того, что я использую для проверки вывода и моего
conformanceLevel
говорит мне, жалуются на недопустимый вывод. Если Вы не заботитесь о законности, установите мойconformanceLevel
к чему-то менее анальному.
Отметьте важное различие между "хорошо сформированным" (совместимая непроверка xml, синтаксический анализатор может считать его), и "допустимый" (структура не следует за грамматикой, указанной в схеме).
Также обратите внимание, что невозможно в XSLT произвести вывод, который не является правильно построенным XML.