Question

J'utilise XSL Transform sur XML. Une partie de la transformation dépend de lieu actuel. Existe-t-il un moyen de trouver le lieu actuel à partir de XSL?

Par exemple, la sérialisation visible par l'utilisateur d'un numéro de point flottant peut varier entre les localités ("1.0" en anglais est "1,0" en allemand), et ma transformation doit prendre en compte des différences comme celles-ci.

Était-ce utile?

La solution

Les habitants ne sont pas pris en charge nativement dans XSLT 1.0, mais il existe des moyens de travailler avec eux, mais vous devez le transmettre en tant que paramètre à votre processeur XSLT ou compter sur des extensions. Quelques Les processeurs vous accordent l'accès aux informations locales, mais il n'y a pas de moyen standard de le faire, et nous devons connaître votre environnement pour voir si cela est possible. Cependant, dans XSLT 2.0, certaines des fonctions de date, d'heure et de nombres auront une prise en charge (parfois limitée) pour les localités, et seront gérées par le processeur, pas par vous (c'est pourquoi il y a ces fonctions :)

Quant à l'utilisation d'une forme de localité dans un environnement XSLT 1.0 et en partie comme une bonne chose (TM) quelle que soit la version XSLT, j'aurais mis en place quelques modèles de base pour le type de données avec les paramètre dans (comme expliqué précédemment). Pour les chiffres, recherchez le XSL: Nombre de format, par exemple.

Quant aux autres choses locales, je créerais un autre fichier XML et laisserais le paramètre fonctionner comme cueilleur pour les informations que vous recherchez. Le XML pourrait ressembler;

<locals>
   <config id="de">
     <currency notation="&#8352;" format-number="###.###,##" />
     <text id="welcome">Wilcommen!</text>
   </config>
   <config id="en">
     <currency notation="&#163;" format-number="### ###.##" />
     <text id="welcome">Welcome!</text>
   </config>
   <config id="no">
     <currency notation="NOK" format-number="###.###,##" />
     <text id="welcome">Velkommen!</text>
   </config>
</locals>

De cela, ouvrez-le comme;

<xsl:variable name="locale" select="document('locale.xml')/locals/config[@id=$parameter.for.locale]" />

Et vous pouvez l'utiliser comme tel pour le texte de bienvenue;

<xsl:value-of select="$locale/text[@id='welcome']" />

Pour le formatage des nombres et tel, c'est un peu plus complexe, mais vérifiez que c'est le bon chemin d'abord et je vais me développer, mais en gros, vous devriez faire quelques clés sur le fichier XML des paramètres régionaux et utiliser une recherche de clés pour les valeurs. Pour les chiffres et autres (besoin de m'en dire plus sur ce que vous voulez soutenir), j'écrirai quelques modèles qui traitent de cela et j'utilise;

<xsl:call-template name="my-template">
   <xsl:with-param name="this" select="'some_number'" />
</xsl:call-template>

Autres conseils

Passez-le en tant que paramètre.

<xsl:param name="CultureInfo" select="'default'" />

Placez un paramètre XSL au niveau supérieur de votre feuille de style et définissez-le de "Extérieur" avant d'invoquer la feuille de style.

L'autre moyen (propriétaire) serait d'enregistrer les fonctions d'extension et de demander à partir de la feuille de style.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top