Файловые переменные - PullRequest
       3

Файловые переменные

1 голос
/ 08 февраля 2011

Мне нужна переменная, к которой я могу получить доступ из любого шаблона.

У меня есть глобальный шаблон в начале файла, который всегда вызывается.Я хочу иметь доступ к этой переменной в шаблонах, которые вызываются при запуске apply-templates.

Возможно ли это?

Спасибо!

Редактировать: Вотхорошее резюме моей проблемы.У меня есть различные шаблоны, которые называются (в разных порядках).Они размещают элементы управления формой на странице.Ниже в XML есть набор данных, на который я хотел бы сослаться, используя индекс.Каждый раз, когда я запускаю один из этих шаблонов и собираюсь отобразить элемент управления форума, я бы хотел использовать эту «глобальную» переменную в качестве счетчика.

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Необходима переменная, к которой я могу получить доступ из любого шаблона.

Язык XSLT предусматривает глобальные переменные (называемые переменные верхнего уровня ).

Каждый <xsl:variable>, который является потомком <xsl:stylesheet>, является глобальным и доступен из любого шаблона или из любой другой глобальной переменной в полном дереве импорта.

Здесьэто маленький пример.Это преобразование :

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

 <xsl:variable name="vMyVar" select="3"/>

 <xsl:template match="/">
  From template matching '/': "<xsl:text/>

  <xsl:value-of select="$vMyVar"/>"
  <xsl:call-template name="template2"/>
 </xsl:template>

 <xsl:template name="template2">
  From template2: "<xsl:text/>

  <xsl:value-of select="$vMyVar"/>"
 </xsl:template>
</xsl:stylesheet>

применительно к любому документу XML (не используется), дает такой результат :

  From template matching '/': "3"

  From template2: "3"
0 голосов
/ 08 февраля 2011

Если значение переменной является постоянным во время преобразования, вы можете сделать ее глобальной переменной, поместив ее за пределы шаблона ввода.

Если переменная имеет разные значения в разное время, то вам необходимоиспользуйте параметры, которые установлены в вызывающем шаблоне и используются в вызываемом шаблоне.(В XSLT 2.0 вы можете использовать параметры туннеля: если они установлены в шаблоне ввода, их можно использовать где угодно, без явной передачи через все промежуточные вызовы шаблона).

В качестве общего принципа, однако,вам трудно советовать, когда вы не описали свою проблему, а только предложили решение - ваш уровень опыта работы с XSLT таков, что решение, которое вы пытаетесь реализовать, может оказаться не самым подходящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...