2010-11-12 8 views
5

Esiste una funzione equivalente al formato stringa in XSLT?String.Format ("La tua query {0} con {1} Segnaposto", theQuery, results.Count) Equivalente in XSLT

Sto lavorando su un sito multilingue in Umbraco. Non sono a conoscenza di quali lingue saranno necessarie, ma una volta che sono, una lingua potrebbe ordinare le parole in modo diverso, ad es.

inglese "La tua query 'Duncan' corrisponde a 5 risultati." potrebbe tradurre parola per parola a "5 risultati corrispondenti a 'Duncan' query".

Per questo motivo avere una voce per "La tua query", "abbinata" e "risultati" nella mia traduzione di umbraco non è fattibile. Se dovessi rendere questo un controllo utente per C#, il traduttore dovrebbe fornire un elemento del dizionario come "La tua query '{0}' corrisponde a {1} risultati".

+0

possibile duplicato di [formattazione di una stringa con XML e XSLT come sptrinf() in PHP] (http://stackoverflow.com/questions/4078447/formatting -a-string-with-xml-and-xslt-like-sptrinf-in-php) –

+0

Buona domanda, +1. Vedi la mia risposta per una soluzione XSLT 1.0 completa, corta e pura. –

risposta

5

Esiste una funzione equivalente al formato di stringa in XSLT?

Questo è un primo analogico XSLT:

La voce di dizionario ha il seguente formato:

<t>Your query "<query/>" matched <nResults/> results</t> 

La trasformazione (corrispondente a string.format()) è molto semplice:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 

    <xsl:param name="pQuery" select="'XPath and XSLT'"/> 
    <xsl:param name="pNumResults" select="3"/> 

<xsl:template match="query"> 
    <xsl:value-of select="$pQuery"/> 
</xsl:template> 

<xsl:template match="nResults"> 
    <xsl:value-of select="$pNumResults"/> 
</xsl:template> 
</xsl:stylesheet> 

e produce il desiderato, risultato corretto:

Your query "XPath and XSLT" matched 3 results 
Problemi correlati