J'ai un document XML, quelque chose commeXSLT multiples remplacement
<root>
<item>_x0034_SOME TEXT</item>
<item>SOME_x0020_TEXT</item>
<item>SOME_x0020_TEXT_x0032_</item>
</root>
Je l'exporter au format HTML, mais j'ai des problèmes remplaçant des caractères d'échappement. J'ai trouvé plusieurs modèles dans le Web pour faire remplacer du texte mais ils sont similaires à tout cela:
<xsl:template name="replaceString">
<xsl:param name="strOrig"/>
<xsl:param name="strSearch"/>
<xsl:param name="strReplace"/>
<xsl:choose>
<xsl:when test="contains($strOrig, $strSearch)">
<xsl:value-of select="substring-before($strOrig, $strSearch)"/>
<xsl:value-of select="$strReplace"/>
<xsl:call-template name="replaceString">
<xsl:with-param name="strOrig" select="substring-after($strOrig, $strSearch)"/>
<xsl:with-param name="strSearch" select="$strSearch"/>
<xsl:with-param name="strReplace" select="$strReplace"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$strOrig"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Je ne sais pas comment je peux l'utiliser pour faire les remplacements multiples. Je l'ai essayé:
<xsl:for-each select="PinnacleSys.PMC.Plugins.PVR.PvrChannelDescriptorWrapper/PinnacleSys.PMC.Plugins.PVR.DVBTPvrChannelDescriptor">
<!--name="<xsl:value-of select="replace(replace(Name, '_x0020_', ' '), '_x0034_', '3')"/>" -->
<!--name="<xsl:value-of select="Name"/>"-->
<xsl:variable name="var1" select="Text" />
<xsl:value-of select="replace($FeatureInfo,'Feature=','TESTING')"/>
name="
<xsl:call-template name="replaceString">
<xsl:with-param name="strOrig" select="Name"/>
<xsl:with-param name="strSearch" select="'_x0020_'"/>
<xsl:with-param name="strReplace" select="' '"/>
</xsl:call-template>
<xsl:call-template name="replaceString">
<xsl:with-param name="strOrig" select="Name"/>
<xsl:with-param name="strSearch" select="'_x0030_'"/>
<xsl:with-param name="strReplace" select="'0'"/>
</xsl:call-template>
..."
Mais cette concatène juste la chaîne à plusieurs reprises, chacune avec un remplacement différent. J'ai également étudié des variables; si je pouvais assigner le résultat d'un appel de gabarit à une variable, je pourrais obtenir une solution sale, mais suffisante pour moi. Cependant je n'ai pas pu et je ne sais pas si c'est possible.
Quelle est la meilleure façon de le faire?
Je suis limité à 1.0 XSLT (avec 2.0 je pourrais appeler un remplacer() dans un autre).
Quel analyseur utilisez-vous? msxml, .net? –
Pour l'instant, j'utilise IE8.0, donc msxml je suppose. – raven