передача XML-документа (фрагмента) в качестве параметра в XSLT в chrome - PullRequest
0 голосов
/ 24 августа 2011

Я хочу предварительно загрузить XML-документ (называемый XMLParam ) и передать его в XSLT-обработку другого документа ( oXML ) в качестве параметра, используя setParameter.

Однако XSLT не обрабатывает его как узел, список узлов или что-либо еще, а просто сообщает [элемент объекта]

oXML = XMLDoc_load(sXMLURL);
oXMLParam = XMLDoc_load(sXMLParamURL);
oXSLT = XMLDoc_load(sXSLTURL);
var oXSLTProcessor = new XSLTProcessor();
oXSLTProcessor.importStylesheet(oXSLT);
oXSLTProcessor.setParameter(null,"oDocument",oXMLParam.documentElement);
var oResultDoc = oXSLTProcessor.transformToFragment(oXML, document); 


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:param name="oDocument"/>
    <xsl:template match="/"><p>Parameter:<xsl:copy-of select="$oDocument"/></p></xsl:template>

1 Ответ

1 голос
/ 24 августа 2011

Подумайте, чтобы передать URL документа, который вы хотите загрузить, в качестве значения параметра, затем используйте функцию XSLT document, чтобы загрузить документ с XSLT. Таким образом, можно достичь желаемого.

Боюсь, что http://www.w3.org/TR/xslt#top-level-variables не очень подробно описывает, какие типы должен поддерживать процессор для передачи из приложения в таблицу стилей. Звучит так, как будто Chrome просто вызывает toString на узле элемента DOM, который вы передаете, а затем XSLT работает со строкой, а не с набором узлов, как вы этого хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...