У меня есть расширение Java Xalan, которое возвращает DocumentFragment.Содержимое текстового узла экранировано расширением Xalan
В моей XSLT, я призываю его с чем-то вроде:
<xsl:copy-of select="java:org.foo.myMethod($a, $b)" />
Проблема заключается в том, что, когда фрагмент документа содержит текстовый узел, содержащий объект, например, «& # 160;», это является вставлен как & amp; # 160;
Обратите внимание, что мне нужно вернуть DocumentFragment, а не строку, потому что этот текстовый узел является частью дерева возвращаемого XML.
Я работаю вокруг этот вопрос следующим образом:
В Java код:
Element amp = document.createElement("amp");
xhtmlBlock.appendChild(amp);
Text t = document.createTextNode("#160;");
amp.appendChild(t);
В XSLT:
<xsl:apply-templates select="java:org.foo.myMethod($a, $b)" mode="amp-workaround" />
<xsl:template match="@*|node()" mode="amp-workaround">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="amp-workaround" />
</xsl:copy>
</xsl:template>
<xsl:template match="amp" mode="amp-workaround">
<xsl:text disable-output-escaping="yes">&</xsl:text><xsl:value-of select="."/>
</xsl:template>
Берегись : этот workaro и работает только в некоторых случаях, которые я все еще пытаюсь прикрепить.
Это известная проблема в Xalan 2.7.1?
Есть ли лучший подход (по-прежнему использовать расширения Java, которые возвращают DocumentFragment)?
имеющий отключение-выход-спасаясь = «да» было бы достаточно, если расширение нормального содержания без необходимости что обходной путь, но я думаю, вы сделали это в первую очередь, не так ли? –