Местные жители не поддерживаются в XSLT 1.0, но есть способы работать с ними, но вам нужно передать их как параметр для вашего XSLT-процессора или полагаться на расширения. Некоторые процессоры предоставят вам доступ к информации о локали, но нет стандартного способа сделать это, и мы должны знать вашу среду, чтобы узнать, возможно ли это. Однако в XSLT 2.0 некоторые функции форматирования даты, времени и числа будут иметь (иногда ограниченную) поддержку локалей и будут обрабатываться процессором, а не вами (именно поэтому существуют следующие функции:
As для использования какой-либо формы локальности в среде XSLT 1.0 и частично как Good Thing (TM), независимо от версии XSLT, я бы установил несколько базовых шаблонов для типа данных, с которыми вы работаете, и передайте локальный параметр в (как объяснялось ранее). Например, для чисел найдите xsl:format-number.
Что касается других локальных вещей, я бы создал еще один XML-файл и дал возможность параметру работать как сборщик для информации, которую вы после. XML может выглядеть так:
<locals>
<config id="de">
<currency notation="₠" format-number="###.###,##" />
<text id="welcome">Wilcommen!</text>
</config>
<config id="en">
<currency notation="£" format-number="### ###.##" />
<text id="welcome">Welcome!</text>
</config>
<config id="no">
<currency notation="NOK" format-number="###.###,##" />
<text id="welcome">Velkommen!</text>
</config>
</locals>
Из этого откройте его как;
<xsl:variable name="locale" select="document('locale.xml')/locals/config[@id=$parameter.for.locale]" />
И вы можете использовать его как таковой для приветственного текста;
<xsl:value-of select="$locale/text[@id='welcome']" />
Для форматирования чисел и такие, это немного сложнее, но проверить это правильный путь первый, и я буду расширяться, но в основном вы должны сделать несколько ключей над файлом локаль XML, и использовать ключ поиск значений. Для чисел и таких (нужно рассказать мне больше о том, что вы хотите поддержать), я бы написал пару шаблонов, которые касаются этого и используют;
<xsl:call-template name="my-template">
<xsl:with-param name="this" select="'some_number'" />
</xsl:call-template>
Может быть, мне нужно больше кофе, чтобы наконец проснуться, но, какова культура в (!) XSL? –
Интересно, тоже ... – bortzmeyer
Даже если вы передаете параметр (как предложил @Tomalak), как вы планируете загружать чувствительные к культуре данные в XSL-файле? – Cerebrus