Локальные переменные изначально не поддерживаются в XSLT 1.0, но есть способы работать с ними, но вам нужно передать их в качестве параметра процессору XSLT или полагаться на расширения. Некоторые процессоры предоставят вам доступ к информации о локали, но не существует стандартного способа сделать это, и мы должны знать вашу среду, чтобы узнать, возможно ли это. Однако в XSLT 2.0 некоторые функции форматирования даты, времени и чисел будут иметь (иногда ограниченную) поддержку локалей и будут обрабатываться процессором, а не вами (вот почему существуют эти функции:)
Что касается использования той или иной формы локальности в среде XSLT 1.0 и частично в качестве хорошей вещи (TM) независимо от версии XSLT, я бы установил несколько базовых шаблонов для типа данных, с которыми вы работаете, и передал бы локальный параметр in (как объяснялось ранее). Для чисел найдите, например, 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>
person
AlexanderJohannesen
schedule
28.04.2009