коллеги, добрый день.
есть некий рабочий вариант xslt (привожу кусочек)
<xsl:template match="text" name="text">
<xsl:call-template name="escape-special-symbols">
<xsl:with-param name="input" select="normalize-space(text())"/>
</xsl:call-template>
<xsl:call-template name="afterText">
</xsl:template>
<xsl:template name ="escape-special-symbols">
<xsl:param name="input"/>
<xsl:choose>
<xsl:when test="contains($input, 'hardcodedChain1' )">
<xsl:call-template name="escape-substring">
<xsl:with-param name="input" select="$input"/>
<xsl:with-param name="symbol" select="string('hardcodedChain1')"/>
<xsl:with-param name="escapedSymbol" select= "string('hardcodedChain1')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($input, 'hardcodedChain2' )">
<xsl:call-template name="escape-substring">
<xsl:with-param name="input" select="$input"/>
<xsl:with-param name="symbol" select="string('hardcodedChain2')"/>
<xsl:with-param name="escapedSymbol" select= "string('hardcodedChain2')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($input, 'hardcodedChain3' )">
<xsl:call-template name="escape-substring">
<xsl:with-param name="input" select="$input"/>
<xsl:with-param name="symbol" select="string('hardcodedChain3')"/>
<xsl:with-param name="escapedSymbol" select= "string('hardcodedChain3')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($input,'\n')">
<xsl:call-template name="escape-substring">
<xsl:with-param name="input" select="$input"/>
<xsl:with-param name="symbol" select="string('\n')"/>
<xsl:with-param name="escapedSymbol" select= "string('\r\n')"/>
</xsl:call-template>
</xsl:when>
//..и т.д.
</xsl:template>
<xsl:template name ="escape-substring">
<xsl:param name="input"/>
<xsl:param name="symbol"/>
<xsl:param name="escapedSymbol"/>
<xsl:call-template name="escape-special-symbols">
<xsl:with-param name="input"
select="substring-before($input,$symbol)"/>
</xsl:call-template>
<xsl:value-of select="$escapedSymbol"/>
<xsl:call-template name="escape-special-symbols">
<xsl:with-param name="input"
select="substring-after($input,$symbol)"/>
</xsl:call-template>
</xsl:template>
собственно, чего хочется.
хочется последовательности, которые не нужно заменять (точнее — заменять на тоже самое) hardcodedChain1, hardcodedChain2 и hardcodedChain3 задавать не в таком "странном" виде в далеко расположенных участках xslt, а в виде списка (коротенького).
это не самое страшное, без этой фичи я переживу.
самое страшное начинается потом: хочется параметризовать эти hardcodedChain1, в примерно таком виде:
что бы "заменялка" не заменяла последовательности вида:
{{hardcodedChain1 test="произвольный текст"}}
{{hardcodedChain2 test="другой произвольный текст"}}
{{hardcodedChain3 test="вообще иной произвольный текст"}}
такое вообще возможно?
Железный Феликс wrote:
> такое вообще возможно?
В файл xslt всегда можно включить кусочек произвольного xml.
<xsl:stylesheet>
<data xmlns="mydatauri">
<value name="hardcodedChain1"/>
<value name="hardcodedChain2"/>
<value name="hardcodedChain3"/>
</data>
...
</xsl:stylesheet>
И обратиться к нему через "document('')/*/my:data/my:value[@name=...]"
Posted via RSDN NNTP Server 2.1 beta