У меня есть конвейер XPro c, который берет исходный документ и преобразует его, используя несколько шаги, попутно сохраняя промежуточные результаты (они мне тоже нужны).
Это довольно просто и работает очень хорошо. Но на последнем шаге, где входными данными уже является документ html, мой xslt выглядит так:
<xsl:template match="div[@id = 'specification']">
<xsl:result-document href="spec.html">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:result-document>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
Теперь, если бы я выполнял это преобразование напрямую, используя XSLT, основной результат преобразования будет файл со всем, кроме div
, чей id="spec"
; а вторичным выводом будет содержимое div id="spec"
, которое будет go в spec.html
, как того требует xsl: result-document.
К сожалению, XPro c не создает вывод для xsl:result-document
и, насколько я могу судить, хочет, чтобы мы занимались для этого первичными и вторичными портами вывода. Я читал спецификацию и несколько примеров несколько раз, но я все еще не могу понять что-то, что должно быть относительно простым, как go из:
<p:xslt name="post-process">
<p:input port="source">
<p:pipe step="html" port="result"/>
</p:input>
<p:input port="stylesheet">
<p:document href="../stylesheets/html-post-process.xsl"/>
</p:input>
</p:xslt>
на что-то еще в XPro c что дало бы мне два разных вывода и возможность сохранить как основной вывод, так и вторичный вывод (là xsl: result-document).
Я был бы очень благодарен за ваши советы или примеры.