Используя следующий код, я заменяю все вхождения элемента QUOTE внутри моего XML-ввода строкой, являющейся значением атрибута QUOTE / @ ID.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="QUOTE">
<xsl:value-of select="@ID"/>
</xsl:template>
</xsl:stylesheet>
Теперь я хочуСкопируйте выходные данные вышеупомянутого преобразования в переменную, чтобы передать его в качестве параметра в шаблон, а затем примените XPATH к этой переменной следующим образом:
<xsl:template name="second-pass">
<!-- variable which holds the identity transformation -->
<xsl:param name="pre-processed-xml"/>
<!-- call SUMMARY template with parameter -->
<xsl:call-template name="SUMMARY">
<xsl:with-param name="pre-processed-xml" select="exsl:node-set($pre-processed-xml)"/>
</xsl:call-template>
</xsl:template>
<!-- SUMMARY template -->
<xsl:template name="SUMMARY">
<xsl:param name="pre-processed-xml"/>
<xsl:value-of select="$pre-processed-xml//SUMMARY">
</xsl:template>
У меня следующие вопросы:
- Как я могу скопировать выходные данные преобразования идентификаторов в переменную?
- Как вызвать шаблон "второго прохода" после того, как преобразование идентификаторов завершено и скопировано в переменную?