Как использовать карту в XSLT?


person Chong Lip Phang    schedule 14.09.2014    source источник


Ответы (2)


Чтобы добавить к ответу @Cajetan_Rodrigues, ближайший эквивалент в XSLT 2.0, вероятно, заключался в создании временного дерева, подобного этому:

   <xsl:variable name="week" as="map(xs:string, xs:string)">
      <map>
         <entry key="Mo" value="Monday"/>
         <entry key="Tu" value="Tuesday"/>
         <entry key="We" value="Wednesday"/>
         <entry key="Th" value="Thursday"/>
         <entry key="Fr" value="Friday"/>
         <entry key="Sa" value="Saturday"/>
         <entry key="Su" value="Sunday"/>
      </map>
   </xsl:variable>

Преимущества карты по сравнению с временным XML-деревом:

  • Записи могут иметь любое значение, а не только элементы и атрибуты XML. Например, запись может быть последовательностью целых чисел или ссылкой на внешний элемент XML.

  • Изменение карты путем добавления или удаления записей может быть намного эффективнее, чем изменение временного XML-дерева, потому что карты не должны поддерживать такие понятия, как идентификатор узла, порядок документов, пространства имен, предыдущая/следующая/родительская навигация и т. д.

person Michael Kay    schedule 14.09.2014
comment
Получаем ли мы его значение таким образом? $ неделя ("Пн") - person Chong Lip Phang; 14.09.2014

Упомянутая вами ссылка также содержит хорошие примеры. Вы можете ссылаться на них для использования и поиска значений.

Что касается более ранних версий XSLT, то не было структуры, похожей по функциональности на map. Если вам нужно получить значения позже, лучшее, что вы можете сделать, это сохранить их в разных переменных. Именно по этой причине введена структура карты:

Maps have many uses, but their introduction to XSLT 3.0 was strongly motivated by streaming use cases. In essence, when a source document is processed in streaming mode, data that is encountered in the course of processing may need to be retained in variables for subsequent use, because the nodes cannot be revisited. This creates a need for a flexible data structure to accommodate such temporary data, and maps were designed to fulfil this need.

person Cajetan Rodrigues    schedule 14.09.2014